gc 与上位机通讯(无协议通讯)

上传人:xzh****18 文档编号:44610647 上传时间:2018-06-14 格式:PDF 页数:6 大小:58.31KB
返回 下载 相关 举报
gc 与上位机通讯(无协议通讯)_第1页
第1页 / 共6页
gc 与上位机通讯(无协议通讯)_第2页
第2页 / 共6页
gc 与上位机通讯(无协议通讯)_第3页
第3页 / 共6页
gc 与上位机通讯(无协议通讯)_第4页
第4页 / 共6页
gc 与上位机通讯(无协议通讯)_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《gc 与上位机通讯(无协议通讯)》由会员分享,可在线阅读,更多相关《gc 与上位机通讯(无协议通讯)(6页珍藏版)》请在金锄头文库上搜索。

1、 GC 与上位机通讯与上位机通讯 (无协议通讯)(无协议通讯) 1 概要概要 无协议通讯方法用来和一些 PLC、主机以外的设备进行通讯。OIP 同时也要支持 该设备的通讯协议。 使用这种通讯方法,可以通过 RS-232C 或 RS-422/RS-485 来与调制解调器,IC 读 卡器,以及自身有着独特协议的设备(温度调整器,各类控制器等)通讯。 但是,要进行这样的通讯,必须要用 K-basic 来描述相应的通讯协议。 2 系统设置系统设置 如果已经使用了无协议通讯方式,请按以下步骤设置与 OIP 通讯的系统。 从系统菜单中选择“System Setup”及相应的通道(在 RS-232C-1,R

2、S232C-2,和 RS-422/RS-485 中任选一) 在“Communication Device”中选“Not Used” 。 接着根据所连接的设备设定通讯速度,奇偶校验,停止位,及数据长度这些参 数。 请注意“Detail”中的“Time out”值的设定。如果通讯超过“Time out”值仍然 没有接收到数据, 则会产生一个 Time-out 报错。 如果 “Time out” 值设定成 “0.0” , 则相当于不设“Time out”报错,也就是说不会产生 Time- out 报错。 不需要设置“Detail” 。如果设置了,将会被忽略。 同时也无需设置主机的通讯格式。如果设置了

3、,将会被忽略。 注意:如果使用了无协议通讯,GC 的编辑软件 Screen Creator 5 中的“Project Property”中的设置是可以省略的。 3 如何用如何用 K-BASIC 来描述一个通讯协议来描述一个通讯协议 如果使用无协议方式来和远程设备进行通讯, 必须用 K-BASIC 来对通讯协议进行 描述。描述过程中,将会用到以下指令。 OPENSIO 打开串口 SETSIO 设置如何接收数据 WRITESIO 发送数据 WRITESIOB 发送数据(以二进制形式) FLUSH 清除数据接收缓冲区 CLOSESIO 终止通讯 有关详情,请参考 Vol.6“Screen Creat

4、or 5,K-BASIC Program Description” 。 无协议通讯部品可作为标准部品使用。 有关详情,请参考 “Screen Creator 5 Standard Parts Catalog” 中的“Special parts”中的“Non-procedure communication parts” 。 31 用用 K-BASIC 来描述时的注意点来描述时的注意点 在使用无协议方式进行通讯时,您必须牢记以下几点。 首先在接收数据的部品中执行 OPENSIO 和 SETSIO 指令。 OPENSIO 指令不能在一个通道中同时用于多个部品。 在 K-basic 中使用一个字符串变

5、量来作为接收数据的缓冲器。这个变量必须是 全局变量或静态变量。 请记得在接收到数据后使用 FLUSH 指令。否则,接收数据缓冲器中的数据会 充满。 WRITESIO 和 WRITESIOB 指令可以用来传送数据。 这两个指令使数据从部品 中发送出去。此时,如果所用的通道没有事先用“OPENSIO”指令打开,则就 会产生报错。 WRITESIO 和 WRITESIOB 指令不会立即把数据从串口中传送出去。 它先把数 据放到 OIP 的缓冲器中。清除传送缓冲器,使用 IOCTL 指令。 32 编程示例编程示例 本节将介绍如何通过编程来用一定的通讯协议从设备中读出数据或写入数据。 下面的例子将会对您

6、有帮助。 【通讯协议一般规格】 读出数据 指令 RD XXXX YY ODH RD: 读出指令(2 bytes) XXXX: 读操作起始地址(4 bytes) YY: 读出字节计数(2 bytes) 0DH: 停止码(1 byte) Data 0DH 响应 Data: 读出数据(读出字节计数2 bytes) 0DH: 结束码(1 byte) 写入数据 指令 WR XXXX YY DataODH WR: 写入指令(2 bytes) XXXX: 写操作起始地址(4 bytes) YY: 写入字节计数(2 bytes) Data: 写入数据(写入字节计数2 bytes) 0DH: 停止码(1 byt

7、e) OK 0DH 响应 OK: 响应码(2 bytes) 0DH: 结束码(1 byte) 【读出数据的编程例子】 下面的编程例子是用于从外部数据记录设备中读出数据并在按下某个开关时显示该 数据。 conf static rcvbuf$ * 200 分配一个接收数据缓冲器 static sndbuf$ * 200 分配一个发送数据缓冲器 end conf evnt input type%,id 读消息类型 if type% = 3 then 如果按下开关 opensio 1, 1, rcvbuf$ 在下个模式中打开 CH1 端口 setsio 1, &h0d 设置一个结束码 sndbuf$

8、= “RD100001“ + chr$(&Hd) 从地址 1000 处读出的一个字节打包 writesio 1, sndbuf$ 发送数据包 else if type% = 7 then 如果接收到数据 input port%, status%, nums% 读端口号,状态,接收数据计数器 if status% = 0 then 如果没有遇到错误 moji$ = left(rcvbuf$, 2) 读地址 1000 处的数据 strdsp. STR000,moji$ 显示所读到的数据 end if closesio 1 关闭 CH1 end if end evnt 【写入数据的编程例子】 下面的

9、编程例子是用于在按下某个开关时向数据记录设备中写入数据。 conf static rcvbuf$ * 200 分配一个接收数据缓冲器 static sndbuf$ * 200 分配一个接收数据缓冲器 end conf evnt input type%,id 读消息类型 if type% = 3 then 如果按下开关 opensio 1, 1, rcvbuf$ 在下个模式中打开 CH1 端口 setsio 1, &h0d writedata$ = “50“ 设置所需写入的数据 sndbuf$ = “WR100001“+writedata$+chr$(&Hd) 向地址 1000 处写入的一个字节

10、打包 writesio 1, sndbuf$ 发送数据包 else if type% = 7 then 如果接收到数据 input port%, status%, nums% 读端口号,状态,接收数据计数器 if status% = 0 then 如果没有遇到错误 moji$ = left$(rcvbuf$, 2) 读响应状态 if moji$ = “OK” then 如果写入成功 strdsp. STR000,moji$ 显示接收到的数据 end if closesio 1 关闭 CH1 end if end evnt 4 错误处理错误处理 如果在接收到数据时检测到一个错误,可以在 K-BASIC 中用 INPUT 指令来读出 错误状态。 如果一个错误(接收数据缓冲器已满)被检测到,则表明已经完成了数据的接收。 如果这样的话,则错误检测接收到的数据被送到刚才打开串口的部品中。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业合同/协议

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号