但實際上在工業現場,會采用不同廠商生產的設備,而這些設備也可能采用不同的工業協議。有些時候,由于有些設備甚至已經使用了若干年,出于系統穩定性和集成時間的考慮,更換設備并非上策。因此實施IIoT,協議轉換在某些場合下必不可少。
??如何解決協議轉換中的"痛點"
工業現場協議各種各樣,傳統網關未必能做到同時支持多種所需協議,即便找到合適的設備硬件成本也相當高昂。但使用EsDA 家族中的AWFlow Designer(嵌入式應用開發利器——【EsDA】AWFlow)與配套硬件可輕松解決該"痛點"。對比傳統網關方案其主要有以下優點:
- 靈活性高支持二次開發,傳統網關一般功能比較單一或難以實現復雜邏輯,使用EsDA方案,可以使用AWFlow Designer對硬件進行可視化配置,且可根據實際需求自由更改應用邏輯(且大多數情況無需重新編譯和燒寫固件),可同時做多種協議的轉換器,甚至可以做協議轉換之外的業務;
- 二次開發簡單,使用AWFlow Designer簡單"拖拽、連線"即可完成二次開發;
- 可復用性強、模塊化程度高,AWFlow將常用模塊封裝為"節點",高度模塊化,并支持自定義節點;
- 硬件成本比傳統方案低。
-
EsDA MPC-ZC1 入門(一)—— 軟件安裝
-
EsDA MPC-ZC1 入門(二)—— LED 控制
-
EsDA MPC-ZC1 應用——串口服務器(一)
- EsDA MPC-ZC1 應用——串口服務器(二)
1. 本次實驗主要步驟
-
在PC機上配置Modbus模擬從設備;
-
業務開發,使用EsDA家族中的AWFlow Designer,進行圖形化開發完成轉換器業務;
- 在PC機上打開ZCANPRO軟件(USBCANFD-200U CANFD 接口卡上位機軟件),讀取來自協議轉換器的數據。
附:https://www.modbustools.com/modbus_slave.html1.1.2 下載USBCANFD-200U接口卡驅動和上位機軟件(CAN-bus-ZCANPRO),并安裝。附:http://www.zlgcan.com/zlgcan-usbcanfd-200u/927/
1.2 硬件準備工作
1.2.1 準備一塊EPC6450-AWI開發板,并按照下圖所示連接好硬件(電源與網口接到PC機上,CAN_1兩根線接到USBCANFD-200U接口卡上,Debug調試口可不接)。
1.2.2 將第一步的CAN_1線連接到USBCANFD-200U CANFD 接口卡的CAN0,USB線接PC。1.3 配置PC機注意:需要將PC機與開發板設置為同一網段(例如本實驗選用EPC6450-AWI開發板的ip為169.254.240.77故需要將PC機的ip改為169.254.240.xx),否則實驗可能會失敗,本文的PC機ip更改為169.254.240.136。1.3.1 配置模擬Modbus從設備1.2.1.1 打開剛才安裝的Modbus Slave軟件。1.2.1.2依次點擊Connection–>Connection Setup,并根據圖5配置從設備參數,并點擊OK保存設置。
1.2.1.3按F8彈出Slave Definition界面,并如圖6所示進行配置,點擊OK保存。1.2.1.4配置Modbus從設備對應寄存器的值如下圖。
2.EsDA業務開發
本次實驗選用的開發板為EPC6450-AWI,其作為一個協議轉換器,其業務主要分為兩大部分:
-
從PC機模擬的Modbus設備讀取數據;
-
將讀取到的數據通過CAN接口發送到USBCANFD-200U CANFD 接口卡。
2.1 應用流圖繪制
2.1.1 依次將畫布拖出modbus_master_in(Modbus主設備讀取從設備數據節點)、modbus_parse_in、fscript、log、canfd_out(CAN發送數據)節點,并依次連線。
2.1.2 雙擊modbus_master_in節點,對應之前在PC機上Modbus Slave模擬軟件的參數,進行配置。
2.1.3 配置modbus_master_in節點連接參數與數據讀取方式,并點擊完成。
2.1.4 配置modbus_parse_in節點,配置Modbus數據解析方式,并點擊完成。
2.1.5 在fscript節點編寫腳本,將從Modbus設備讀取到的數據寫入buff,并使用CAN發送節點發送buff中的數據。
//具體腳本如下:
buf = wbuffer_create()
//CAN配置包(前16個字節)
wbuffer_write_int8(buf, 202)
wbuffer_write_int8(buf, 150)
wbuffer_write_int8(buf, 9)
wbuffer_write_int8(buf, 124)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 1)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 0)
wbuffer_write_int8(buf, 1)
//從Modbus從設備讀取到的數據包(八字節)
data=msg.payload
for(var i=0;i<data.size,i++)
{
//將數據寫入CAN發送buff
wbuffer_write_int8((buf, array_get(data,i))
}
msg.payload = wbuffer_get_data(buf)
//3 * 8 = 24個字節
msg.payloadLength = 24
2.1.6 雙擊CAN節點,進行配置。
至此,"轉換器"業務流圖已經開發完成。
2.1.7 將開發板與AWFlow Designer建立連接并將應用流圖下載到開發板。
3.實驗現象
打開USBCANFD-200U上位機軟件(CAN-bus-ZCANPRO),選擇打開設備(本實驗所用的是USB-CAN FD-200U),即可查看CAN卡讀取的數據,與之前我們配置的Modbus Slave軟件的Modbus從設備的數據一致,實驗成功。 ?關聯產品 技術交流群長按識別如下二維碼可加入“EsDA嵌入式系統設計自動化交流群”,與志同道合的朋友交流,并有專業技術人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。 ?【版權聲明】本文為ZLG開發者社區用戶原創內容,未經授權不得轉載。歡迎更多用戶到社區交流互動、創作博文,一經采用,可獲得百元京東E卡。
-
致遠電子
+關注
關注
13文章
409瀏覽量
31427
原文標題:【EsDA協議轉換】Modbus轉CAN/CANFD協議
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論