马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 南空a 于 2022-1-14 10:09 编辑
本文就汇川IT7000自由协议通过脚本收发数据进行描述,以网络调试助手进行数据收发的建立,具体方法与步骤如下:
一、所需软件
InoTouchPad、网络调试助手(NetAssist)。调试软件如下。
二、调试步骤
1、 添加画面:打开InoTouchPad软件新建一个工程,在界面左侧“工程”>“画面”>“添加画面”添加一个画面_1,用于发送数据的输入和接收数据显示。
2、 添加连接:界面左侧“工程”>“通讯”>“连接”添加一个连接,通讯协议选择“自由协议”>“TCP自由协议”,做客户端用于数据收发通讯。
3、 添加变量:界面左侧“工程”>“通讯”>“变量”>“添加变量组”>添加变量LW0~LW7,用于数据交互。
4、 组态画面:前面添加的将变量一一拖至画面中,其中LW0~LW3作为数据发送输入端,LW4~LW7作为接收调试助手发送的数据显示。在界面右侧分别添加文本域进行组态区分,添加两个按钮,在“常规”>“文本”中将其显示文本更改为发送和接收。
5、 脚本添加与编写:界面左侧“工程”>“脚本”>“添加脚本”添加两个脚本用于数据发送和数据接收,脚本编写如下图所示(注:笔者此处将发送和接收分开主要为了展示效果,自己编写时可将其进行合并),收发变量个数可根据需要进行增减,此处需要特别注意收发时连接和数据的赋值顺序。
脚本源码如下: - //数据发送
- var a = new Array();
- a[0] = SmartTags('LW 0');
- a[1] = SmartTags('LW 1');
- a[2] = SmartTags('LW 2');
- a[3] = SmartTags('LW 3');
- FreeOut('连接_1', a);
- //数据接收
- var c = new Array();
- c = FreeIn('连接_1');
- SmartTags('LW 4')= c[0];
- SmartTags('LW 5')= c[1];
- SmartTags('LW 6')= c[2];
- SmartTags('LW 7')= c[3];
复制代码
6、 脚本调用:分别单击前面添加的发送和接收按钮,在“事件”>“单击”>“用户脚本”中双击脚本即可完成脚本的调用。其中发送关联脚本Script_1,接收关联脚本Script_2。
7、 调试助手参数配置:打开调试助手,左上角“网络设置”>“协议类型”选择TCP Server,即将调试助手作为服务器与InoTouchPad进行数据交互。本地主机地址默认为电脑IP,可以自行更改,也可保持默认(本案例采用默认IP),但需要与InoTouchPad端TCP自由协议的IP地址保持一致。本地主机端口号也需和InoTouchPad端TCP自由协议的端口号保持一致。
8、 开始调试:开启在线模拟仿真,打开网络调试助手,这里为了展示效果,将调试助手端的接收和发送均设置为HEX即十六进制模式。
(1)数据发送
在InoTouchPad模拟仿真输入框中输入数据后点击发送按钮,即可在调试助手端收到发送的数据,
(2)数据接收 在调试助手数据输入框中输入十六进制数据,点击右侧的发送即将数据传送至服务器端,此时InoTouchPad模拟仿真端作为客户端,只需点击接收即可接收到网络调试助手发送的信息。
9、英文及特殊字符发送/接收
1)发送
HMI以ASCII码值的形式与外界进行自由协议通信,若需要发送英文与特殊字符,如下划线,标点符号等(中文无法发送),可使用charCodeAt();函数将字符转换为ASCII码值后进行发送,具体用法可参考以下脚本:
脚本源码: - //发送
- var code = new Array();
- var str = SmartTags('发送内容');
- SmartTags('发送字符长度') = str.length;
- for(var i = 0;i<str.length;++i)
- {
- code[i] = str.charCodeAt(i); //把字符转成ASCII值
- }
- FreeOut('TCP自由协议',code);
复制代码2)接收
若需要接收(不支持中文),可使用String.fromCharCode();函数将接收到的ASCII码转换成英文字符进行显示,具体用法可参考以下脚本:
脚本源码: - //接收
- var c = FreeIn('TCP自由协议');
- SmartTags('接收字符长度') = c.length;
- if (c.length)
- {
- var str = "";
- for(var i=0;i<c.length;++i)
- {
- str += String.fromCharCode(c[i]); //将十进制ASCII码转换成英文字符
- }
- SmartTags('接收内容') = str;
- }
复制代码调试结果:
10、说明
当网络调试助手作为服务器发送数据时,可以同时接收多个客户端进行访问(数据交互),服务器发送的数据,所有连接的客户端也都可以进行接收。限于篇幅,此处不做多客户端访问单一服务器的演示,读者可自行尝试利用多台电脑或同一台电脑多个工程进行多客户端的创建(创建方法如上),接着同时访问同一个服务器进行数据交互访问。
测试工程所用软件版本为V0.8.8.30-R,工程源文件见文末。欢迎多多指点交流~
|