TG900P-將任意協(xié)議轉換為MODBUS TCP
產品簡介 | 快速開始 | 通訊設置 | 內部寄存器 |
將MODBUS RTU協(xié)議轉換為MODBUS TCP | 將任意協(xié)議轉換為MODBUS TCP | CAN通信 | 自由口編程范例 |
5.2 將任意協(xié)議轉換為MODBUS TCP
TG900P的3個串口與各種協(xié)議的設備通信時,通過騰控提供的自由口功能塊編程,將設備數(shù)據(jù)采集到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 指令,依次拖拽到編程界面中,“確定”,建立功能塊。
雙擊功能塊的藍色管腳,設置各變量。
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 為TRUE時,打開并獨占此串口;為FALSE時,關閉此串口 |
Port | BYTE | 要打開TG900P的串口號,可選值:1、2、3,分別對應COM1、COM2、COM3口 |
Setting | STRING | 通訊參數(shù),要與從站的通訊格式一致,如‘19200,1,E,8‘是指19200 BPS,偶校驗、8位數(shù)據(jù)位、1位停止位 注:字符串要在英文狀態(tài)下輸入 |
TimeOut | BYTE | 串口操作超時時間,單位:10ms |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
DONE | BOOL | 為 1 時串口打開成功、為 0 時串口打開失敗 |
Errmsg | WORD | 錯誤信息 0:串口工作正常 1:當前串口無效(注:已被其它程序占用) 2:串口參數(shù)格式錯誤(19200,1,E,8) 3:接收數(shù)據(jù)奇偶校驗錯誤 4:串口設備忙 5:串口沒打開 |
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 寫命令使能,上升沿有效 |
EN上升沿有效,可用兩個延時接通定時器產生一個脈沖串,50%占空比,脈寬1秒(通過PT引腳可修改),脈沖串在TON_1.Q端產生,用于控制線圈C000。 |
||
Port | BYTE | 由 PORT_OPEN 打開的串口號 |
Length | WORD | 需要寫入數(shù)據(jù)的字節(jié)個數(shù) |
Dataptr | ANY | 存放寫串口數(shù)據(jù)的緩沖區(qū),一般為數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
DONE | BOOL | 為 1 時寫數(shù)據(jù)、為 0 時沒有寫數(shù)據(jù) |
Errmsg | WORD | 錯誤信息 0:串口工作正常 1:當前串口無效(注:已被其它程序占用) 2:串口參數(shù)格式錯誤(9600,1,N,8) 3:接收數(shù)據(jù)奇偶校驗錯誤 4:串口設備忙 5:串口沒打開 6:串口沒回應 |
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 讀命令使能,TRUE 有效 |
Port | BYTE | 由 PORT_OPEN 打開的串口號 |
Dataptr | ANY | 存放從串口讀取數(shù)據(jù)的緩沖區(qū),一般為數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
DONE | BOOL | 為 1 時讀數(shù)據(jù)、為 0 時沒有讀數(shù)據(jù) |
Errmsg | WORD | 錯誤信息 0:串口工作正常 1:當前串口無效(注:已被其它程序占用) 2:串口參數(shù)格式錯誤(9600,1,N,8) 3:接收數(shù)據(jù)奇偶校驗錯誤 4:串口設備忙 5:串口沒打開 6:沒有收到數(shù)據(jù) |
Length | WORD | 讀取到數(shù)據(jù)的字節(jié)長度 |
。4)數(shù)據(jù)校驗
串口數(shù)據(jù)發(fā)送時,經常使用附加校驗,為減輕用戶工作量,騰控提供三種校驗功能塊CRC校驗、FCS校驗和XOR校驗。
CRC校驗
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 上升沿有效 |
Length | WORD | 數(shù)據(jù)所占字節(jié)的個數(shù) |
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校驗碼的數(shù)據(jù),一般為字節(jié)型數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
Result | WORD | 計算出的CRC校驗碼:低字節(jié)在前,高字節(jié)在后 |
FCS校驗
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 上升沿有效 |
Length | WORD | 數(shù)據(jù)所占字節(jié)的個數(shù) |
Dataptr | ANY | 要計算FCS校驗碼的數(shù)據(jù),一般為字節(jié)型數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
Result | WORD | 計算出的FCS校驗碼 |
XOR校驗
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 上升沿有效 |
Length | WORD | 數(shù)據(jù)所占字節(jié)的個數(shù) |
Dataptr | ANY | 要計算XOR校驗碼的數(shù)據(jù),一般為字節(jié)型數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
Result | WORD | 計算出的XOR校驗碼 |
。5)制作,下裝,運行。
(6)打開調試開關,監(jiān)視程序。
所有輸出引腳Errmsg為0時,表示通信無錯誤,當有輸出引腳Errmsg不為0時,根據(jù)錯誤信息修改錯誤。