EIO Link协议编程说明
EIO Link协议编程说明
1、 与上位机通讯方式
EIO支持模式>和模式>两种工作模式。
l 模式>下,EIO监听TCP/IP端口(默认为5100),等待远程主机建立连接。
l 模式>下,EIO根据设置,主动连接指定的或通过域名解析获得的远程主机地址。
设备默认设置为模式>。
1) Socket TCP/IP通讯方式
上位机软件通过Socket规范与EIO直接建立TCP/IP连接,在成功建立TCP/IP连接后,上位机与设备就可以进行数据通讯。
2) 虚拟串口通讯方式
EIO支持虚拟串口技术,可以将EIOLink端口映射为本机的虚拟串口。上位机软件只需要按照常规的串口编程方式,使用EIOLink报文就可以与设备进行通讯,无需编写复杂的网络代码。
2、 功能描述
l 为EIO专有协议,可以实时获得开关量输入状态。实时设置EIO开关量输出状态
l 支持2个EIO配对,透传开关量输入/输出状态
l EIO Link支持TCP/IP Server、Client两种工作方式
l 支持开关量输入状态变化主动发送
l Client模式下,支持动态域名解析
l 7字节定长短包传输方式
3、 EIOLink协议报文
1) 报文说明
报文数据样本(十六进制):00 00 FF 00 00 00 00
报文结构
命令码 | 状态码 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 |
00 | 00 | FF | 00 | 00 | 00 | 00 |
l 命令码
00:状态更新命令,定时发送的开关量输入状态报文。
01:实时输入状态变化命令,当开关量输入状态发生变化时,EIO主动发送此命令码的报文。
l 状态码
00:说明报文正确,否则为报文为错误状态,由此字节指出错误码。
l 数据1-数据5
1) EIO发出报文(上位机接收时)
命令码为00时含义:8-40路开关量输入同步状态数据,EIO定时发送此报文。
命令码为01时含义: 8-40路开关量输入变化实时数据,EIO检测到8-40路开关量输入任意一路发生了变化(接通或断开),将主动向上位机发送开关量输入状态数据。
例如EIO发出报文<00 01 0F 00 00 0000>,上位机接收并解释为EIO的开关量输入发生了变化,第1组8路开关量输入中的1、2、3、4为接通状态,5、6、7、8为断开状态。
例如EIO发出报文<00 00 F0 00 00 0000>,上位机接收并解释为EIO定期发送的报文状态数据,当前第1组8路开关量输入中的1、2、3、4为接通状态,5、6、7、8为断开状态。如果长时间(默认为超过5秒)收不到此类型报文,上位机可判定网络故障或EIO已经丢失。
2) EIO接收报文(上位机发送时)
命令码为00或01时均解释为:
8-40路开关量输出控制数据,数据1控制第1组8路开关量输出,数据2控制第2组8路开关量输出,以此类推。
当数据的字节中的数据位置1时,对应的开关量输出为接通,或低电平状态。
例如EIO收到报文<00 00 8F 00 00 0000>后,将接通第1组输出中的1、2、3、4、8,或设置为低电平。而将5、6、7断开或设置成高电平。
4、 报文详解
l 从EIO设备接收报文
收到报文含义为:远程EIO设备的开关量输入状态。
数据1至数据5,一共5个字节,每个字节对应EIO的1组8路开关量输入状态,数据1对应第1组8个开关量输入,以此类推。超过EIO输入路数的数据字节一直为0。
置1的位,表示该路开关量输入为接通或低电平状态。
置0的位,表示该路开关量输入为断开或高电平状态。
EIO设备支持开关量状态变化主动发送,在与EIO Link端口(默认为5100)建立TCP/IP连接后,如果EIO设备的开关量输入状态发生改变,EIO将通过此连接,主动发送实时的开关量输入状态报文(命令码为01)。
为了增强可靠性,即使开关量输入状态没有变化,EIO也会根据设置的间隔时间,一直发送当前开关量输入状态报文(命令码为00)。
l 向EIO设备发送报文
发送报文含义为:设置远程EIO设备的开关量输出为指定状态(命令码为00或01)。
数据1至数据5,一共5个字节,每个数据字节的8个数据位,控制8路输出状态。超过*大输出路数的控制字节将被忽略。
置1位,对应的输出为接通或低电平。
置0位,对应输出为断开或高电平。
5、 更多示例
l 从EIO收到报文
收到:00 00 1C 00 00 00 00
说明:EIO的开关量输入状态为1C=0001 1100,第1、2、6、7、8路输入为断开或高电平状态,第3、4、5路为接通或低电平状态。
l 向EIO发送报文
设置EIO的输出状态为指定状态
发送:00 00 FF 00 00 00 00
说明:将EIO的第1组8路输出设置为全部接通或低电平状态。