CAN通訊以其高穩定性,被廣泛應用在工業通訊、工業物聯網以及工業控制領域。傳統的設備大都是串口通訊如RS485/RS232,這類設備如果要接入CAN網絡,一般需要CAN轉換器。針對這種應用,智嵌物聯ZQWL研發出了高穩定高效率的CAN轉串口/CAN轉網絡系列設備,如CAN轉串口系列有型號ZQWL-RCAN-1C311/1D311,CAN轉網絡系列有型號ZQWL-CANET-1C111/1C112等。
本文以ZQWL-RCAN-1C311為例介紹CAN與串口設備的轉換使用說明。
一、硬件準備
為了測試1C311,需要以下硬件:
- 1C311一個;
- DC5V 1A電源適配器一個;
- 串口線一個(如果不測RS232功能,可以不用);
- 串口(或USB)轉RS485接頭一個(如果不測RS485功能,可以不用);
- USB轉CAN設備一個(推薦型號:ZQWL-UCAN-5C121);
1.1透傳測試
1、RS232與CAN透傳測試
用串口線將電腦和設備的RS232口(DB9)連接,連接好usb轉CAN調試器(第一次使用需要安裝軟件和驅動,詳細使用方法請咨詢相關廠家),然后DC5V 1A電源適配器給設備供電。
打開串口調試助手,選擇所用的串口號,并將串口的參數按照圖1.2.2設置。設置好后打開串口。
打開usb轉can調試軟件,設置好波特率為250kbps:
圖 1.2.2 RS232與CAN數據透傳
經過以上步驟后,CAN與RS232就可以互相發數據了。
2、RS485與CAN透傳測試
用串口(或USB)轉RS485接頭將電腦和設備的RS485口(綠色插頭,A接A,B接B)連接,連接好usb轉CAN調試器(第一次使用需要安裝軟件和驅動,詳細使用方法請咨詢相關廠家),然后用DC5V 1A電源適配器給設備供電。
測試方法和RS232與CAN透傳完全一樣。
二、功能簡介
ZQWL-RCAN-1C311是一款小巧精致、高性能、高穩定性的串口轉CAN模塊。它具有1路RS232接口、1路RS485接口和1路CAN接口。串口的波特率支持1200~460800bps;CAN的波特率支持10kbps~1000kbps。可以通過RS232/485實現對設備的固件升級,使用非常方便。
用戶利用它可以輕松完成串口設備與CAN設備的互聯。
2.1硬件特點
2.2設備特性
·實現CAN與RS232/485的雙向數據通訊;
·支持Modbus RTU協議轉換;
·可以通過RS232/485實現對設備的固件升級,方便定制固件;
·接口靜電防護;浪涌防護;具有優良的EMC性能;
·14組可設置的濾波器;
·4種工作模式:透明轉換、透明帶標識轉換、格式轉換和Modbus RTU協議轉換;
·具有離線檢測和自動恢復功能;
·符合CAN 2.0B規范,兼容CAN 2.0A;符合ISO 11898-1/2/3。
·波特率支持10kbps~1000kbps。
·CAN緩沖器達1000幀,保證數據不丟失;
·高速轉換,串口在115200波特率,CAN在250kbps下,CAN發送速度可達1270擴展幀/秒(接近理論最大值1309);串口在460800波特率,CAN在1000kbps下,CAN發送速度可達5000擴展幀/秒以上;
三、模塊硬件接口
3.1模塊接口及尺寸
圖2尺寸
3.2模塊指示燈含義
本模塊共有4個LED指示燈:PWR、RUN、COM和CAN。其基本含義如表1:
表1指示燈基本含義
3.1RS232/485接口
本模塊共有1路RS232/485接口(5.00mm綠色端子引出),其中RS232采用DB9母頭(孔型),信號定義如下:
可以與標準公頭串口線對接。
3.4電源接口
本模塊采用DC5~36V寬壓供電,模塊功率小于0.2W。
供電接口采用兩種:5.08mm間距工業級接線端子和黑色電源適配器插座,兩種接口任選其一,如下圖:
3.5CAN接口
CAN接口采用5.00mm綠色端子方式引出,接口具有120歐姆終端電阻選擇功能。
其中“RS”為終端電阻選擇,如果用導線將“RS”和“CAN_L”連接起來,則模塊內部的120歐電阻并入到CAN總線中;否則,120歐電阻未接入總線。
(按照ISO 11898規范,為了增強CAN-bus通訊的可靠性,CAN-bus總線網絡的兩個端點
通常要加入終端匹配電阻(120Ω),如下圖所示。終端匹配電阻的大小由傳輸電纜的特性阻抗所決定,例如,雙絞線的特性阻抗為120Ω,則總線上的兩個端點也應集成120Ω終端電
阻。)
四、模塊參數配置
本模塊可以用“智嵌物聯CAN轉串口配置軟件”通過RS232或RS485接口來實現對模塊的參數配置。如果不慎配置錯誤而導致無法連接設備,可以通過“CFG”按鈕來恢復出廠參數(按住CFG,保持5秒,3個綠色指示燈同步閃爍后,再松開)。
4.1智嵌串口服務器配置軟件
配置前必須要知道模塊上次配置成功的RS232/485波特率,如果忘記,可以通過對模塊恢復出廠,出廠參數為115200,8,N,1:
第一步選擇合適的“串口號”;
第二步選擇上次模塊的波特率等參數;
第三步“打開串口”;
第四步“獲取設備參數”;
五、轉換參數設置
該部分規定了設備的轉換模式、轉換方向、CAN標識符在串行中的位置、CAN信息是否轉串行中以及CAN幀ID是否轉串行中等。
5.1轉換模式
轉換模式有4種可以選擇:透明轉換、透明帶標識轉換,格式轉換和Modbus協議轉換。
- 透明轉換
是將一種格式的總線數據原樣轉換成另一種總線的數據格式,而不附加數據和對數據做修改。這樣既實現了數據格式的交換又沒有改變數據內容,對于兩端的總線來說轉換器如同透明的一樣。這種方式下不會增加用戶通訊負擔,而能夠實時的將數據原樣轉換,能承擔較大流量的數據的傳輸。
- 透明帶標識轉換
是透明轉換的一種特殊的用法,也不附加協議。這種轉換方式是根
據通常的串行幀和CAN報文的共有特性,使這兩種不同的總線類型也能輕松的組建同一個
通信網絡。該方式能將串行幀中的“地址”轉換到CAN報文的標識域中,其中串行幀“地址”在串行幀中的起始位置和長度均可配置,所以在這種方式下,轉換器能最大限度地適應用戶的自定義協議。
- 格式轉換
是一種最簡單的使用模式,數據格式約定為13字節,包含了CAN幀的所以信息。
- Modbus協議轉換
是將標準的Modbus RTU串行數據協議轉換成特定的CAN數據格式,此種轉換一般要求CAN總線設備報文可編輯。
5.2轉換方向
有3種可以選:雙向、僅串口轉CAN和僅CAN轉串口。
雙向:轉換器將串行總線的數據轉換到CAN總線,也將CAN總線的數據轉換到串行
總線。
僅串口轉CAN:只將串行總線的數據轉換到CAN總線,而不將CAN總線的數據轉換
到串行總線。這種方式可以最大限度的過濾掉CAN總線上的干擾。
僅CAN轉串口:只將CAN總線的數據轉換到串行總線,而不將串行總線的數據轉換
到CAN總線。
5.3CAN標識符在串行中的位置
該參數只有在“透明帶ID轉換”模式下有效:
在串口數據轉換成CAN報文時,CAN報文的幀ID的起始字節在串行幀中的偏移地址和幀ID的長度。
幀ID長度在標準幀的時候可填充1到2個字節,分別對應CAN報文的ID1,ID2,在擴展幀的時候可以填充1~4個字節ID1,ID2,ID3和ID4。標準幀時ID為11位,擴展幀時ID為29位。
獲取參數成功后,就可以修改參數了,修改完成,點擊“保存設備參數”,然后重啟設備。下面對配置軟件里的各項參數進行說明。
5.4CAN信息是否轉串行中
該參數僅在“透明轉換”模式下使用,當選中該項后,轉換器工作時會將CAN報文的
幀信息添加在串行幀的第一個字節。未選中時不轉換CAN的幀信息 。
5.5CAN幀ID是否轉串行中
該參數僅在“透明轉換”模式下使用,當選中該項后,轉換器工作時會將CAN報文的
幀ID添加在串行幀的幀數據之前,幀信息之后(如果允許幀信息轉換)。未選中時不轉換
CAN的幀ID。
六、CAN參數設置
該部分可以設置轉換器的CAN的波特率、CAN發送ID、幀類型以及CAN的濾波器。
CAN波特率支持10kbps~1000kbps,也支持用戶自己定義。幀類型支持擴展幀和標準幀。CAN的幀ID為十六進制格式,在“透明轉換”模式和“透明帶標識轉換”模式時有效,向CAN總線以此ID發送數據;在“格式轉換”模式下該參數無效。
CAN接收濾波器共有14組,每組都有“濾波類型”、“過濾驗收碼”和“過濾屏蔽碼”組成。下面詳細介紹如何使用。
6.1CAN波特率設置
波特率列表里已經預定了大部分常用波特率:
如果需要其他波特率,可以選擇“自定義”,然后再點“自定義波特率”來設置期望波特率:
波特率計算公式為:36000000/(同步段+相位緩沖段1+相位緩沖段2)/預分頻;
例如250K的波特率:36000000/(1+15+2)/8 = 250000 = 250K。
一般情況下,只需要在“期望波特率”里填寫所需的波特率,軟件就會自動計算出相應的參數(比如:預分頻),這時會得到一個“實際波特率”,如果兩者的值不同,可以打開“高級選項”:
6.2CAN濾波器設置
CAN的14組接收濾波器在出廠時都處于禁止狀態,即不對CAN總線數據做過濾。當用戶需要使用濾波器時,只需要在配置軟件里添加即可,一共可以添加14組:
濾波類型:可選“標準幀”和“擴展幀”;
過濾驗收碼:用于比對CAN接收到的幀ID,以確定該幀是否被接收,十六進制格式。
過濾屏蔽碼:用于屏蔽驗收碼里的某些位,以確定驗收碼某些位(bit)是否參與比對(對應位為0不參與比對,為1參與比對),十六進制格式。
舉例1:濾波器類型選擇“標準幀”;“過濾驗收碼”填00 00 00 01,“過濾屏蔽碼”填00 00 0F FF;
釋義:由于標準幀ID只有11位,驗收碼和屏蔽碼最后11位有意義, 屏蔽碼最后11位全是1,所以驗收碼的后11位全部參與比對,因此上述設置可以讓幀ID為0001的標準幀通過。
舉例2:濾波器類型選擇“標準幀”;“過濾驗收碼”填00 00 00 01,“過濾屏蔽碼”填00 00 0F F0;
釋義:同例1,標準幀只有11位有效,屏蔽碼的最后4位是0,表示驗收碼的最后4位不參與對比,因此上述設置可以讓幀ID從00 00到000F的一組標準幀通過。
舉例3:濾波器類型選擇“擴展幀”;“過濾驗收碼”填00 03 04 01,“過濾屏蔽碼”填1F FF FF FF;
釋義:擴展幀有29位,屏蔽碼的后29位全為1,表示驗收碼的后29位全部參與比對,因此上述設置可以讓幀ID為00 03 04 01的擴展幀通過。
舉例4:濾波器類型選擇“擴展幀”;“過濾驗收碼”填00 03 04 01,“過濾屏蔽碼”填1F FC FF FF;
釋義:根據上述設置可以讓幀ID從00 00 04 01到00 0F 04 01的一組擴展幀通過。
七、轉換示例
7.1透明轉換
透明轉換方式下,轉換器接收到一側總線的數據就立即轉換發送至另一總線側。
- 串行幀轉CAN
串行幀的全部數據依序填充到CAN報文幀的數據域里。轉換器接收到串行總線上的一幀數據后立即轉到CAN總線上。轉換成的CAN報文幀信息(幀類型部分)和幀ID來自用戶事先的配置,并且在轉換過程中幀類型和幀ID一直保持不變。
數據轉換對應格式如下圖所示:
如果收到串的行幀長度小于等于8字節,依序將字符1到n(n為串行幀長度)填充到CAN報文的數據域的1到n個字節位置(如下圖中n為7)。
如果串行幀的字節數大于8,那么處理器從串行幀首個字符開始,第一次取8個字符依
次填充到CAN報文的數據域。將數據發至CAN總線后,再轉換余下的串行幀數據填充到CAN報文的數據域,直到其數據被轉換完。
例如,CAN參數設置中選擇了“標準幀”,CAN ID 填00000060,注意標準幀只有后11位有效。
轉成CAN的數據如下:
CAN幀轉串口
對于CAN總線的報文也是收到一幀就立即轉發一幀。數據格式對應如下圖所示。
轉換時將CAN報文數據域中的數據依序全部轉換到串行幀中。
如果在配置的時候,開啟了“CAN信息是否轉串行中”,那么轉換器會將CAN報文的“幀信息”字節直接填充至串行幀。
如果開啟了“CAN幀ID是否轉串行中”,那么也將CAN報文的“幀ID”字節全部填充至串行幀。
例如,開啟了“CAN信息是否轉串行中”,不開啟“CAN幀ID是否轉串行中”,CAN幀轉到串行如下圖:
7.2透明帶ID轉換
透明帶標識轉換是透明轉換的特殊用法,有利于用戶通過轉換器更方便的組建自己的網
絡,使用自定的應用協議。
該方式把串行幀中的地址信息自動轉換成CAN總線的幀ID。只要在配置中告訴轉換器
該地址在串行幀的起始位置和長度,轉換器在轉換時提取出這個幀ID填充在CAN報文的
幀ID域里,作為該串行幀的轉發時的CAN報文的ID。在CAN報文轉換成串行幀的時候也把CAN報文的ID轉換在串行幀的相應位置。注意在該轉換模式下,配置軟件的“CAN參數設置”項的“CAN ID”無效,因為此時發送的標識符(幀ID)由上述的串行幀中的數據填充。的。
串行幀轉CAN
轉換器接收完一幀串行數據后,立即轉發到CAN總線上。
串行幀中所帶有的CAN的ID在串行幀中的起始地址和長度可由配置設定。起始地址
的范圍是0~7,長度范圍分別是1~2(標準幀)或1~4(擴展幀)。
轉換時根據事先的配置將串行幀中的CAN幀ID對應全部轉換到CAN報文的幀ID域中(如果所帶幀ID個數少于CAN報文的幀ID個數,那么在CAN報文的填充順序是幀ID1~
ID4,并將余下的ID填為0),其它的數據依序轉換,如下圖所示。
如果一幀CAN報文未將串行幀數據轉換完,則仍然用相同的ID作為CAN報文的幀ID繼續轉換直到將串行幀轉換完成。
例如,CANID在串行幀中的起始地址是0,長度是3(擴展幀情況下),串行幀和轉
換成CAN報文結果如下圖所示。其中,兩幀CAN報文用相同的ID進行轉換。
CAN幀轉串行
假定配置的CANID在串行幀中的起始地址是0,長度是3(擴展幀情況下),CAN報文和轉換成串行幀的結果如下圖:
八、格式轉換
數據轉換格式,如下圖所示每一個CAN幀包含13個字節,13個字節內容包括CAN信息+ID+數據。
九、Modbus協議轉換
將標準的Modbus RTU串行數據協議轉換成特定的CAN數據格式,此種轉換一般要求CAN總線設備報文可編輯。
串口側數據必須符合標準的Modbus RTU協議,否則不能轉換,注意,CRC校驗不轉換到CAN側。
CAN側制定了一個簡單高效的分段通訊格式來實現 Modbus RTU的通訊,不區分主機和從機,用戶只需按照標準的Modbus RTU協議通訊即可。
CAN側不需要加CRC校驗,轉換器收到最后一個CAN幀后,會自動加上CRC,組成一幀標準的Modbus RTU數據包,發到串口上。
該模式下,配置軟件的【CAN參數設置】的【CAN ID】無效,因為此時發送的標識符(幀ID)由Modbus RTU串行幀中的地址域(節點ID)填充。
⑴串行幀格式(Modbus RTU)
串行參數:波特率、數據位、停止位和校驗位都可通過配置軟件設置。數據協議需符合標準的Modbus RTU協議。
⑵CAN幀格式
CAN側設計了一套分段協議格式,其定義了一個長度大于 8 字節的信息進行分段以及重組的方法,如下所示。注意,當CAN幀為單幀時,分段標志位為0x00。
CAN幀信息(遠程幀或數據幀;標準幀或擴展幀)通過配置軟件設置。
傳輸的 Modbus協議內容即可從“數據2”字節開始,如果協議內容大于7個字節,那么將剩下的協議內容照這種分段格式繼續轉換,直到轉換完成。
數據1是分段控制信息(占1個字節,8Bit),其含義如下:
●分段標記
占1個Bit位(Bit7), 標志該報文是否是分段報文。該位為 0 表示單獨報文,為 1 表示屬于被分段報文中的一幀。
●分段類型
占2個Bit位(Bit6,Bit5),用于表示該報文在分段報文中的類型:
●分段計數器
占5個Bit位(Bit4-Bit0),用于區分同一幀Modbus報文中分段的序號,夠驗證是同一幀的分段是否完整。
⑶轉換示例
串口側Modbus RTU數據(十六進制):
0103 14 00 0A 00 00 00 00 00 14 00 00 00 00 00 17 00 2C 00 37 00 C84E 35
第一個字節01是Modbus RTU的地址碼,轉換成CAN的ID.7-ID.0;
最后2個字節(4E 35)為Modbus RTU的CRC校驗,丟掉不轉換。
最終轉成CAN數據報文如下:
第1幀CAN報文:8103 14 00 0A 00 00 00
第2幀CAN報文:a200 00 14 00 00 00 00
第3幀CAN報文:a300 17 00 2C 00 37 00
第4幀CAN報文:c4c8
CAN報文的幀類型(標準幀或擴展幀)通過配置軟件設置;
每個CAN報文的第一個數據都有分段信息來填充(81、a2、a3和c4),該信息不轉換到Modbus RTU幀中,僅做為報文的確認控制信息。
CAN側的數據到ModBus RTU的轉換原理和上面相同,CAN側收到上述4條報文后,轉換器會將收到的CAN報文按照上述的CAN分段機制組合成一幀RTU數據,并在結尾加上CRC校驗:
每個CAN報文的第一個數據都有分段信息來填充(81、a2、a3和c4),該信息不轉換
到Modbus RTU幀中,僅做為報文的確認控制信息。
-
工業自動化
+關注
關注
17文章
2368瀏覽量
67218
發布評論請先 登錄
相關推薦
評論