|  |  | 
| 
| GP扩展SIO口通讯编程范例  |  
| 
| 
作者: 作者单位:  2008年7月31日 |  |  
| Pro-face的GP2000系列(除GP2301,2501,2401H和2301H)触摸屏有一个扩展串行接口(COM2) ,这个扩展串口通过D脚本程序的编写可以方便的实现GP与一些特殊设备间的通讯(RS232) 。 下面是一个扩展串口通讯的实例。这里我们进行通讯的设备是GP-2500S与CHK-8D型电池巡检仪(以下简称巡检仪)。
 1.通讯要求
 我们的目的是通过触摸屏读出巡检仪检测到的电池电压信息。
 2.通讯设置
 巡检仪有一个RS-485口,支持多种波特率。它的通讯格式为:异步,一位起始码,八位数据位,一位停止位,无校验,半双工方式。
 首先,我们在GP的扩展SIO设置中选择和巡检仪的通讯设置一样的参数。设置方法如下:同时按住GP的任意三个角,进入OFFLINE状态,依次进入INITIALIZE,SETUP I/O,SETUP SIO,这里有GP的通讯设置,把它们设置成与巡检仪相应的格式即可。
 3.报文交换格式(代码各项均为1字节HEX码)
 上位机下发命令:
 EB 90 EB 90 巡检仪机号 上位机号 03 00 C1 00 00 90 EB
 巡检仪回复:
 EB 90 EB 90 上位机号 巡检仪机号 报文长度(L)报文长度(H) C2
 电池组电压(1)电池组电压(2)1#电池电压(1) 1#电池电压(2)
 2#电池电压(1)2#电池电压(2) …………N#电池电压(1)
 N#电池电压(2)代码和(L) 代码和(H) 90 EB
 巡检仪机号:   即机器的地址编号,在CHK-8D型巡检仪上设定,我们这里把它设为1号
 电池的节数N: 根据实际的电池节数,在CHK-8D型巡检仪上设定,我们这里设为103节
 4.D脚本语句说明
 4.1 接收功能
 下面的命令被用于读从扩展口接收到的数据
 格式    IO_READ([p:EXT_SIO], LS Storage Address, Transer Byte)
 例子    IO_READ([p:EXT_SIO],[w:LS0100], 10)
 [p:EXT_SIO]表示接收数据
 [w:LS0100]这是存放接收数据的起始地址,接收数据的大小存放在LS0100,接收的数据从LS0101开始存,10表示有10个字节存放在LS区(最大传送字节是6095)。
 4.2 发送功能
 下面的命令表示把要发送的数据写到扩展口
 格式    IO_WRITE_EX([p:EXT_SIO], LS Storage Address, Transer Byte)
 例子    IO_WRITE_EX([p:EXT_SIO], [w:LS0100], 10)
 [w:LS0100]是要发送的数据开始地址,10表示要发送10个数据。
 *注意:每一个传送的是字节,也就是说传送的是每一个字的低八位,同样接收的数据也是一样的。
 4.3 控制
 增加控制变量去清除发送和接收缓存器以及错误状态,这个变量的属性是只能写的。
 格式
 位        [c:EXT_SIO_CTRL**]     **:00到15
 字        [c:EXT_SIO_CTRL]
 例如:控制字的内容
 位        [c:EXT_SIO_CTRL00]=1
 字        [c:EXT_SIO_CTRL]=0x0007
 当控制字的内容被确定以后,它的处理过程按照这样的次序来完成的,先清除错误状态,然后清除接收缓存,再清除发送缓存。
 15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
 
 
 
 位 内容
 04-15 保留
 03 1:清除接受延时
 02 1:清除错误状态
 01 1:清除接收缓存
 00 1:清除发送缓存
 
 
 4.4 状态
 增加[EXT_eSIO_ISTAT]作为状态变量,这个变量的属性是只读的。
 格式
 位        [s:EXT_SIO_STAT**]      **:00到15
 字        [s:EXT_SIO_STAT]
 例如
 位        if([s:EXT_SIO_STAT00]==1)
 字        if(([s:EXT_SIO_STAT]&0x0000)<>0)
 字的内容描述如下
 15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
 
 
 
 
 位 内容
 15 0:没有常规SIO协议
 1:有常规SIO协议
 14 0:没有扩展SIO协议
 1:有扩展SIO协议
 04-13 保留
 03 0:正常
 1:接收错误
 02 0:没有接收到数据
 1:接收到数据
 01 0:正常
 1:发送错误
 00 0:发送缓存有数据
 1:发送缓存没有数据
 
 
 4.5 接收数据的大小
 这个属性也是只读的。
 格式    [r:EXT_SIO_RECV]
 例如    if([r:EXT_SIO_RECV]>=10)
 5.通讯实现
 5.1 硬件连接
 由于巡检仪的通讯口是RS485,这里我们需要一个485/232的转换器。9针的COM2口的管脚定义如下:
 针号 信号名
 1 CD 载波检测
 2 RD 接收数据
 3 SD 发送数据
 4 ER 允许接收
 5 SG 信号地
 6 DR 数据准备好
 7 RS 请求发送
 8 CS 清除发送
 9 RI/VCC 响铃指示,+5V+5%,0.25A
 
 
 5.2 软件设计
 首先,新建一个PRO/PB工程,PLC类型选择Memory Link SIO type, 协议选择Extend SIO Script,如下图所示
 然后新建一个画面,放置一些键盘输入显示,地址设为收到的电池电压的地址。我们计算了总接受报文长度为221个字节,准备放置到7000到7220的地址中。GP发送报文总长度为13个字节,准备放置在6000到6012的地址中 。
 <IM<IMG SRC="/WF_SQL_XSRF.html">
 |  |  
| 
|  相关技术文章: |  |  
| 
|  相关产品: |  |  |