TG900P-将任意协议转换为MODBUS TCP
产品简介 | 快速开始 | 通讯设置 | 内部寄存器 |
将MODBUS RTU协议转换为MODBUS TCP | 将任意协议转换为MODBUS TCP | CAN通信 | 自由口编程范例 |
5.2 将任意协议转换为MODBUS TCP
TG900P的3个串口与各种协议的设备通信时,通过腾控提供的自由口功能块编程,将设备数据采集到TG900P中,最终通过MODBUS TCP被上位机获取。
自由口通信包括 PORT_OPEN、PORT_WRITE 和 PORT_READ 共 3 个指令。
(1)同5.1(1)进入编辑界面
(2)同5.1(2)添加固件库
(3)插入功能块指令
在右侧编辑向导TCNETLIB组中找到PORT_OPEN、PORT_WRITE 和 PORT_READ 指令,依次拖拽到编程界面中,“确定”,建立功能块。
双击功能块的蓝色管脚,设置各变量。
输入引脚 | 数据类型 | 描述 |
EN | BOOL | 为TRUE时,打开并独占此串口;为FALSE时,关闭此串口 |
Port | BYTE | 要打开TG900P的串口号,可选值:1、2、3,分别对应COM1、COM2、COM3口 |
Setting | STRING | 通讯参数,要与从站的通讯格式一致,如‘19200,1,E,8‘是指19200 BPS,偶校验、8位数据位、1位停止位 注:字符串要在英文状态下输入 |
TimeOut | BYTE | 串口操作超时时间,单位:10ms |
输出引脚 | 数据类型 | 描述 |
ENO | BOOL | 输出使能 |
DONE | BOOL | 为 1 时串口打开成功、为 0 时串口打开失败 |
Errmsg | WORD | 错误信息 0:串口工作正常 1:当前串口无效(注:已被其它程序占用) 2:串口参数格式错误(19200,1,E,8) 3:接收数据奇偶校验错误 4:串口设备忙 5:串口没打开 |
输入引脚 | 数据类型 | 描述 |
EN | BOOL | 写命令使能,上升沿有效 |
EN上升沿有效,可用两个延时接通定时器产生一个脉冲串,50%占空比,脉宽1秒(通过PT引脚可修改),脉冲串在TON_1.Q端产生,用于控制线圈C000。![]() |
||
Port | BYTE | 由 PORT_OPEN 打开的串口号 |
Length | WORD | 需要写入数据的字节个数 |
Dataptr | ANY | 存放写串口数据的缓冲区,一般为数组 |
输出引脚 | 数据类型 | 描述 |
ENO | BOOL | 输出使能 |
DONE | BOOL | 为 1 时写数据、为 0 时没有写数据 |
Errmsg | WORD | 错误信息 0:串口工作正常 1:当前串口无效(注:已被其它程序占用) 2:串口参数格式错误(9600,1,N,8) 3:接收数据奇偶校验错误 4:串口设备忙 5:串口没打开 6:串口没回应 |
输入引脚 | 数据类型 | 描述 |
EN | BOOL | 读命令使能,TRUE 有效 |
Port | BYTE | 由 PORT_OPEN 打开的串口号 |
Dataptr | ANY | 存放从串口读取数据的缓冲区,一般为数组 |
输出引脚 | 数据类型 | 描述 |
ENO | BOOL | 输出使能 |
DONE | BOOL | 为 1 时读数据、为 0 时没有读数据 |
Errmsg | WORD | 错误信息 0:串口工作正常 1:当前串口无效(注:已被其它程序占用) 2:串口参数格式错误(9600,1,N,8) 3:接收数据奇偶校验错误 4:串口设备忙 5:串口没打开 6:没有收到数据 |
Length | WORD | 读取到数据的字节长度 |
(4)数据校验
串口数据发送时,经常使用附加校验,为减轻用户工作量,腾控提供三种校验功能块CRC校验、FCS校验和XOR校验。
CRC校验
输入引脚 | 数据类型 | 描述 |
EN | BOOL | 上升沿有效 |
Length | WORD | 数据所占字节的个数 |
Type | WORD | CRC类型: 1:CRC-16 2:Modbus CRC 3:CRC DNP 4:CRC SICK 5:CRC CCITT 0000 6:CRC CCITT FFFF 7:CRC CCITT 1D0F 8:CRC KERMIT |
Dataptr | ANY | 要计算CRC校验码的数据,一般为字节型数组 |
输出引脚 | 数据类型 | 描述 |
ENO | BOOL | 输出使能 |
Result | WORD | 计算出的CRC校验码:低字节在前,高字节在后 |
FCS校验
输入引脚 | 数据类型 | 描述 |
EN | BOOL | 上升沿有效 |
Length | WORD | 数据所占字节的个数 |
Dataptr | ANY | 要计算FCS校验码的数据,一般为字节型数组 |
输出引脚 | 数据类型 | 描述 |
ENO | BOOL | 输出使能 |
Result | WORD | 计算出的FCS校验码 |
XOR校验
输入引脚 | 数据类型 | 描述 |
EN | BOOL | 上升沿有效 |
Length | WORD | 数据所占字节的个数 |
Dataptr | ANY | 要计算XOR校验码的数据,一般为字节型数组 |
输出引脚 | 数据类型 | 描述 |
ENO | BOOL | 输出使能 |
Result | WORD | 计算出的XOR校验码 |
(5)制作,下装,运行。
(6)打开调试开关,监视程序。
所有输出引脚Errmsg为0时,表示通信无错误,当有输出引脚Errmsg不为0时,根据错误信息修改错误。