Can轉RTU網關can轉modbus網關
YC-CAN-RTU 是一款用于 CAN-Modbus 現場總線與 RS-232 總線或 RS-485 總線之間數據轉換的協議型轉換器,支持標準 Modbus RTU 協議。集成 1 路RS-232 通道、1 路RS-485 通道、1 路CAN-Modbus 通道,可以方便地嵌入使用 RS-232 接口和 RS-485 接口的節點上,在不需要改變原有硬件結構的前提下使設備獲得CAN-Modbus 通訊接口,實現 RS-232 或 RS-485 設備與 CAN-Modbus 網絡之間的連接及數據通訊。
透明傳輸
串行幀到CAN 通道
設備以 PC 端軟件配置好的 CAN 幀類型和 ID 作為 CAN 發送的類型和 ID, 不斷轉發 RS-232 接口接收到的數據。
2, 當 232 接口收到連續 8 個字節或者不夠 8 個字節但一幀結束會立即轉發到
CAN 總線,即如果一幀串口數據多于 8 個字節則每次發送 8 個字節直到
不足 8 個字節,如果一幀串口數據少于 8 個字節則一次發完。
3, 串行幀轉 CAN 幀信息用戶不用管,里面包含了幀信息(標準幀還是擴展幀) 以及數據字節長度;幀 ID 是由用戶在軟件配置的,下次配置之前永遠保持不變。
CAN 通道到串行幀
當 CAN 總線收到一幀 CAN 信息(一幀 CAN 數據小于等于 8 個字節)會立即轉發到 232 接口。如果使能了“CAN 幀信息發送到串行幀”則會把幀信息填充在字節,如果使能了“CAN 幀 ID 發送到串行幀”則會把幀信息填充在之后的 2(標準幀)或 4(擴展幀)個字節,之后填充數據。
![]() | |
帶標志轉換
串行幀到CAN 通道
帶標志轉換可以通過配置軟件 CAN 發送時的 ID 類型,在串行幀第幾個字節開始(從 0 開始)、ID 長度是多少(1-4)。
232 接口收到一幀串行數據會根據上述配置取出ID 的并以此作為CAN 發送
ID 發送這一幀串行數據。
帶標志轉換同樣是邊收邊轉發,只要 232 接口收到這幀已經包含的完整 ID
并且數據夠了 8 個字節或一幀結束就立即轉發。
串行幀 |
| 幀信息 | 幀信息 | 幀信息 | 幀信息 | |
數據 1 | 幀 ID | ID | ID | ID | ||
數據 2 |
數據域 | 數據 1 | 數據 11 | 。 | ||
數據 3 ID | 數據 2 | 數據 12 | 。 | |||
數據 4 ID | 數據 5 | 數據 13 | 。 | |||
數據 5 | 數據 6 | 數據 14 | 。 | |||
。 | 數據 7 | 數據 15 | 。 | |||
數據 n-2 | 數據 8 | 數據 16 | 數據 n-1 | |||
數據 n-1 | 數據 9 | 。 | 數據 n | |||
數據 n | 數據 10 | 。 |
如上表格:配置為帶標志轉換模式,以標準幀發送,ID 長度為 2,ID 從第
2 字節開始(從 0 開始計數)。只要 232 接口收到前 4 個字節就確定了 ID,收完了
10 個字節就開始發送了,之后每收 8 個字節就發送,直到這一幀發完。下一幀串行幀收到 4 個字節之后重新設置發送 ID。
注意事項:串行幀中 ID 長度與 CAN 發送 ID 對應關系
串行幀中 ID 長度與 CAN 發送 ID 對應關系 | ||
ID 長度 | 標準幀 | 擴展幀 |
1 | ID 低 8 位 | ID 8 位(7-0) |
2 | ID 高 3 位,ID 低 8 位 | ID 15-8 位,ID 7-0 位 |
3 |
空字節,ID 高 3 位,ID 低 8 位 | ID 23-16 位,ID 15-8 位,ID 7-0 位 |
4 |
空字節,空字節,ID 高 3 位,ID 低 8 位 | ID 五位,ID 23-16 位, ID 15-8 位,ID 7-0 位 |
CAN 通道到串行幀
當CAN 收到一幀數據也會立即轉發到232 接口,同時會在相應位置填充CAN 幀 ID,因為串行幀格式原因,所以務必保證軟件配置的CAN 信息(CAN 類型、
ID 長度)與 CAN 網絡一致。
CAN 幀 |
| 串行幀 | |
幀信息 | 標準幀 0x00+數據字節長度 擴展幀 0x80+數據字節長度 |
數據 1 | |
幀 ID | 標準幀 11 位,擴展幀 29 位 | 數據 2 | |
數據域 | 數據 1 | ID 高 3 位 | |
數據 2 | ID 低 8 位 | ||
數據 3 | 數據 3 | ||
數據 4 | 數據 4 | ||
數據 5 | 數據 5 | ||
數據 6 | 數據 6 | ||
數據 7 | 數據 7 | ||
數據 8 | 數據 8 |
注意事項:CAN 發送 ID 填充到串行幀規則
CAN 發送 ID 填充到串行幀規則 | ||
串行幀 ID 長度 | 填充規則 | |
標準幀 | 1 | ID 低 8 位 |
2 | ID 高 3 位,ID 低 8 位 | |
3 | 空字節,ID 高 3 位,ID 低 8 位 | |
4 | 空字節,空字節,ID 高 3 位,ID 低 8 位 | |
擴展幀 | 1 | ID 8 位(7-0) |
2 | ID 15-8 位,ID 7-0 位 | |
3 | ID 23-16 位,ID 15-8 位,ID 7-0 位 | |
4 | ID 五位,ID 23-16 位,ID 15-8 位,ID 7-0 位 |
Modbus 轉換
Modbus 轉 CAN 模式中設備并不作為 Modbus 主站或者從站,只負責把
Modbus 幀通過 CAN 發送出去,另一個使用相同協議的設備還原 Modbus 并把應答 Modbus 幀發到 CAN 網絡。
RS-485 采用標準 Modbus RTU 協議,所以用戶在軟件配置時務必確保設置是否符合 Modbus RTU 協議。
Modbus RTU 協議對規定,數據格式為 1 位起始位,8 位數據位,1 位停止位,偶校驗(也可以奇校驗或者無校驗,如果無校驗則把停止位設為兩位),
CRC16Modbus 校驗,Modbus 一幀最長為 256 字節。
設備收到完整一幀 Modbus 會進行 CRC 校驗, 如果沒有錯誤會把這條
Modbus 幀通過 CAN 發送到 CAN 網絡,但不會發送最后兩個字節的 CRC,因為
CAN 可靠性非常高,出錯概率極低。當設備從 CAN 通道收到完整一幀 Modbus
之后會自動加上 CRC 校驗然后通過 RS-485 發送出去。
RS-485 通道到CAN 通道
Modbus 轉CAN 與前兩種轉換方式不同,只有在收到完整一幀 Modbus 之后, 設備才會把 Modbus 字節(地址字節)作為 CAN 發送 ID,通過如下分段方
式進行拆包然后完成 CAN 通道的轉發。因為一幀 CAN 幀最多攜帶 8 個數據, 為了能在另一端正確地完成對一幀 Modbus 的拼接故參考 DeviceNet(一個 CAN 應用層協議)分段報文傳送協議進行拆包,然后通過 CAN 通道發送,在另一端按此協議重組。
因為 Modbus 轉換模式下只有在收到完整一幀 Modbus 數據才會轉發,且根據 Modbus 協議,Modbus 是“問答”型協議,所以要等待另一端響應之后才能發送下一陣 Modbus 數據,或者超時無應答也可以再次發送。如果發送頻率過快,
“問完沒答”就發下一針可能造成數據丟失或數據錯誤。分段拆包格式如下:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
幀信息 | |||||||||
幀 ID1 | |||||||||
數據 1 | 分段標記 | 分段類型 | 分段計數器 | ||||||
數據 2 | 數據 1 | ||||||||
數據 3 | 數據 2 | ||||||||
數據 4 | 數據 3 | ||||||||
數據 5 | 數據 4 | ||||||||
數據 6 | 數據 5 | ||||||||
數據 7 | 數據 6 | ||||||||
數據 8 | 數據 7 | ||||||||
分段標記:0 單獨報文,1 分段報文中的一段;
分段類型:0 分段,1 中間分段,2 最后分段
分段計數器:每一段的標志,該段在整個報文中的序號 0-31
CAN 通道到RS-485 通道
設備把 CAN 通道收上來的 CAN 幀按拆包規則逆向組合,之后在最后加上兩個字節 CRC 之后通過 RS-485 通道發送出去
相關產品
免責聲明
客服熱線: 15267989561
加盟熱線: 15267989561
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機版
Ybzhan公眾號
Ybzhan小程序