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ù)類型 | 描述 | 
| EN | BOOL | 為TRUE時(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ù)類型 | 描述 | 
| 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ù)類型 | 描述 | 
| EN | BOOL | 寫命令使能,上升沿有效 | 
| 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 | 需要寫入數(shù)據(jù)的字節(jié)個(gè)數(shù) | 
| Dataptr | ANY | 存放寫串口數(shù)據(jù)的緩沖區(qū),一般為數(shù)組 | 
| 輸出引腳 | 數(shù)據(jù)類型 | 描述 | 
| 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)回應(yīng) | 

| 輸入引腳 | 數(shù)據(jù)類型 | 描述 | 
| EN | BOOL | 讀命令使能,TRUE 有效 | 
| Port | BYTE | 由 PORT_OPEN 打開(kāi)的串口號(hào) | 
| Dataptr | ANY | 存放從串口讀取數(shù)據(jù)的緩沖區(qū),一般為數(shù)組 | 
| 輸出引腳 | 數(shù)據(jù)類型 | 描述 | 
| 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),為減輕用戶工作量,騰控提供三種校驗(yàn)功能塊CRC校驗(yàn)、FCS校驗(yàn)和XOR校驗(yàn)。
CRC校驗(yàn)

| 輸入引腳 | 數(shù)據(jù)類型 | 描述 | 
| EN | BOOL | 上升沿有效 | 
| Length | WORD | 數(shù)據(jù)所占字節(jié)的個(gè)數(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 | 要計(jì)算CRC校驗(yàn)碼的數(shù)據(jù),一般為字節(jié)型數(shù)組 | 
| 輸出引腳 | 數(shù)據(jù)類型 | 描述 | 
| ENO | BOOL | 輸出使能 | 
| Result | WORD | 計(jì)算出的CRC校驗(yàn)碼:低字節(jié)在前,高字節(jié)在后 | 
FCS校驗(yàn)

| 輸入引腳 | 數(shù)據(jù)類型 | 描述 | 
| EN | BOOL | 上升沿有效 | 
| Length | WORD | 數(shù)據(jù)所占字節(jié)的個(gè)數(shù) | 
| Dataptr | ANY | 要計(jì)算FCS校驗(yàn)碼的數(shù)據(jù),一般為字節(jié)型數(shù)組 | 
| 輸出引腳 | 數(shù)據(jù)類型 | 描述 | 
| ENO | BOOL | 輸出使能 | 
| Result | WORD | 計(jì)算出的FCS校驗(yàn)碼 | 
XOR校驗(yàn)

| 輸入引腳 | 數(shù)據(jù)類型 | 描述 | 
| EN | BOOL | 上升沿有效 | 
| Length | WORD | 數(shù)據(jù)所占字節(jié)的個(gè)數(shù) | 
| Dataptr | ANY | 要計(jì)算XOR校驗(yàn)碼的數(shù)據(jù),一般為字節(jié)型數(shù)組 | 
| 輸出引腳 | 數(shù)據(jù)類型 | 描述 | 
| 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ò)誤。
 
 

 
 