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