產(chǎn)品簡介 | 快速開始 | 通訊設(shè)置 | 內(nèi)部寄存器 |
將MODBUS RTU協(xié)議轉(zhuǎn)換為MODBUS TCP | 將任意協(xié)議轉(zhuǎn)換為MODBUS TCP | CAN通信 | 自由口編程范例 |
5.2 CAN通信
TG900P的2個(gè)CAN口與各種協(xié)議的設(shè)備通信時(shí),通過騰控提供的CAN功能塊編程,將設(shè)備數(shù)據(jù)采集到TG900P中,最終通過MODBUS TCP被上位機(jī)獲取。
CAN口通訊包括 CAN_OPEN、CAN_WRITE 和 CAN_READ 共 3 個(gè)指令。
。1)同5.1(1)進(jìn)入編輯界面
(2)同5.1(2)添加固件庫
。3)插入功能塊指令
在右側(cè)編輯向?qū)CNETLIB組中找到CAN_OPEN、CAN_WRITE 和 CAN_READ 指令,依次拖拽到編程界面中,“確定”,建立功能塊。
雙擊功能塊的藍(lán)色管腳,設(shè)置各變量。
輸入引腳 |
數(shù)據(jù)類型 |
描述 |
EN |
BOOL |
TRUE有效,打開CAN口 |
Port |
BYTE |
TG900P的CAN口,可選值:1、2,分別對應(yīng)CAN1口和CAN2口 |
Baud |
DWORD |
波特率,DWORD#100代表100kbps,其它波特率如200kps,400kbps |
Type |
BYTE |
0——標(biāo)準(zhǔn)幀,1——擴(kuò)展幀 |
輸出引腳 |
數(shù)據(jù)類型 |
描述 |
ENO |
BOOL |
輸出使能 |
DONE |
BOOL |
0: 功能塊不能被執(zhí)行;1: 功能塊可以被執(zhí)行 |
Errmsg |
WORD |
錯(cuò)誤信息 |
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 寫命令使能,上升沿有效,每來一個(gè)上升沿就向 TG900P 的 CAN 口寫一次數(shù)據(jù) |
Port | BYTE | TG900P的CAN口 |
ID | DWORD | 幀 ID,CAN_Write 指令的 ID 必須和接收方的幀 ID 一致,如果為 0 則表示向所有節(jié)點(diǎn)發(fā)送數(shù)據(jù) |
Length | BYTE | 發(fā)送數(shù)據(jù)的字節(jié)長度 |
Dataptr | ANY | 存放寫CAN口數(shù)據(jù)的緩沖區(qū),一般為數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
DONE | BOOL | 0: 功能塊不能被執(zhí)行;1: 功能塊可以被執(zhí)行 |
Errmsg | WORD | 錯(cuò)誤信息 1: 端口錯(cuò)誤 2: 端口未打開 3: 長度錯(cuò)誤 4: 功能塊數(shù)量超限 |
輸入引腳 | 數(shù)據(jù)類型 | 描述 |
EN | BOOL | 讀命令使能,TRUE 有效 |
Port | BYTE | 由 CAN_OPEN 打開的CAN口號(hào) |
ID | DWORD | 幀 ID,CAN_Read 指令的 ID 必須和發(fā)送方的幀 ID 一致 |
Dataptr | ANY | 存放從CAN口讀回的數(shù)據(jù),一般為數(shù)組 |
輸出引腳 | 數(shù)據(jù)類型 | 描述 |
ENO | BOOL | 輸出使能 |
DONE | BOOL | 0: 功能塊不能被執(zhí)行;1: 功能塊可以被執(zhí)行 |
Errmsg | WORD | 錯(cuò)誤信息 1: 端口錯(cuò)誤 2: 端口未打開 4: 功能塊數(shù)量超限 |
Length | WORD | 讀取到數(shù)據(jù)的字節(jié)長度 |
(4) 制作,下裝,運(yùn)行。
(5) 打開調(diào)試開關(guān),監(jiān)視程序。
所有輸出引腳Errmsg為0時(shí),表示通信無錯(cuò)誤,當(dāng)有輸出引腳Errmsg不為0時(shí),
根據(jù)錯(cuò)誤信息修改錯(cuò)誤。