CAN通訊以其高穩定性,被廣泛應用在工業通訊、工業物聯網以及工業控制領域。傳統的設備大都是串口通訊如RS485/RS232,這類設備如果要接入CAN網絡,一般需要CAN轉換器。針對這種應用,智嵌物聯ZQWL研發出了高穩定高效率的CAN轉串口/CAN轉網絡系列設備,如CAN轉串口系列有型号ZQWL-RCAN-1C311/1D311,CAN轉網絡系列有型号ZQWL-CANET-1C111/1C112等。
本文以ZQWL-RCAN-1C311為例介紹CAN與串口設備的轉換使用說明。
一、硬件準備為了測試1C311,需要以下硬件:
先用産品的默認參數來測試,默認參數如下:
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 硬件特點
·實現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 指示燈基本含義
本模塊共有1路RS232/485接口(5.00mm綠色端子引出),其中RS232采用DB9母頭(孔型),信号定義如下:
可以與标準公頭串口線對接。
3.4 電源接口本模塊采用DC5~36V寬壓供電,模塊功率小于0.2W。
供電接口采用兩種:5.08mm間距工業級接線端子和黑色電源适配器插座,兩種接口任選其一,如下圖:
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 RTU串行數據協議轉換成特定的CAN數據格式,此種轉換一般要求CAN總線設備報文可編輯。
5.2 轉換方向有3種可以選:雙向、僅串口轉CAN和僅CAN 轉串口。
雙向:轉換器将串行總線的數據轉換到CAN 總線,也将CAN 總線的數據轉換到串行
總線。
僅串口轉CAN:隻将串行總線的數據轉換到CAN 總線,而不将CAN 總線的數據轉換
到串行總線。這種方式可以最大限度的過濾掉CAN總線上的幹擾。
僅CAN 轉串口:隻将CAN 總線的數據轉換到串行總線,而不将串行總線的數據轉換
到CAN 總線。
5.3 CAN标識符在串行中的位置該參數隻有在“透明帶ID轉換”模式下有效:
在串口數據轉換成CAN 報文時,CAN 報文的幀ID 的起始字節在串行幀中的偏移地址和幀ID 的長度。
幀ID 長度在标準幀的時候可填充1 到2 個字節,分别對應CAN 報文的ID1,ID2,在擴展幀的時候可以填充1~4 個字節ID1,ID2,ID3 和ID4。标準幀時ID 為11 位,擴展幀時ID 為29 位。
獲取參數成功後,就可以修改參數了,修改完成,點擊“保存設備參數”,然後重啟設備。下面對配置軟件裡的各項參數進行說明。
5.4 CAN信息是否轉串行中該參數僅在“透明轉換”模式下使用,當選中該項後,轉換器工作時會将CAN 報文的
幀信息添加在串行幀的第一個字節。未選中時不轉換CAN 的幀信息 。
5.5 CAN幀ID是否轉串行中該參數僅在“透明轉換”模式下使用,當選中該項後,轉換器工作時會将CAN 報文的
幀ID 添加在串行幀的幀數據之前,幀信息之後(如果允許幀信息轉換)。未選中時不轉換
CAN 的幀ID。
六、CAN參數設置該部分可以設置轉換器的CAN的波特率、CAN發送ID、幀類型以及CAN的濾波器。
CAN波特率支持10kbps~1000kbps,也支持用戶自己定義。幀類型支持擴展幀和标準幀。CAN的幀ID為十六進制格式,在“透明轉換”模式和“透明帶标識轉換”模式時有效,向CAN總線以此ID發送數據;在“格式轉換”模式下該參數無效。
CAN接收濾波器共有14組,每組都有“濾波類型”、“過濾驗收碼”和“過濾屏蔽碼”組成。下面詳細介紹如何使用。
6.1 CAN波特率設置波特率列表裡已經預定了大部分常用波特率:
如果需要其他波特率,可以選擇“自定義”,然後再點“自定義波特率”來設置期望波特率:
波特率計算公式為:36000000/(同步段 相位緩沖段1 相位緩沖段2)/預分頻;
例如250K的波特率:36000000/(1 15 2)/8 = 250000 = 250K。
一般情況下,隻需要在“期望波特率”裡填寫所需的波特率,軟件就會自動計算出相應的參數(比如:預分頻),這時會得到一個“實際波特率”,如果兩者的值不同,可以打開“高級選項”:
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的一組擴展幀通過。
透明轉換方式下,轉換器接收到一側總線的數據就立即轉換發送至另一總線側。
串行幀的全部數據依序填充到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幀轉到串行如下圖:
透明帶标識轉換是透明轉換的特殊用法,有利于用戶通過轉換器更方便的組建自己的網
絡,使用自定的應用協議。
該方式把串行幀中的地址信息自動轉換成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繼續轉換直到将串行幀轉換完成。
例如,CAN ID在串行幀中的起始地址是0,長度是3(擴展幀情況下),串行幀和轉
換成CAN報文結果如下圖所示。其中,兩幀CAN 報文用相同的ID 進行轉換。
CAN幀轉串行
假定配置的CAN ID在串行幀中的起始地址是0,長度是3(擴展幀情況下),CAN報文和轉換成串行幀的結果如下圖:
數據轉換格式,如下圖所示每一個CAN幀包含13個字節,13個字節内容包括CAN信息 ID 數據。
将标準的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數據(十六進制):
01 03 14 00 0A 00 00 00 00 00 14 00 00 00 00 00 17 00 2C 00 37 00 C8 4E 35
第一個字節01是Modbus RTU的地址碼,轉換成CAN的ID.7-ID.0;
最後2個字節(4E 35)為Modbus RTU的CRC校驗,丢掉不轉換。
最終轉成CAN數據報文如下:
第1幀CAN報文:81 03 14 00 0A 00 00 00
第2幀CAN報文:a2 00 00 14 00 00 00 00
第3幀CAN報文:a3 00 17 00 2C 00 37 00
第4幀CAN報文:c4 c8
CAN報文的幀類型(标準幀或擴展幀)通過配置軟件設置;
每個CAN報文的第一個數據都有分段信息來填充(81、a2、a3和c4),該信息不轉換到Modbus RTU幀中,僅做為報文的确認控制信息。
CAN側的數據到ModBus RTU的轉換原理和上面相同,CAN側收到上述4條報文後,轉換器會将收到的CAN報文按照上述的CAN分段機制組合成一幀RTU數據,并在結尾加上CRC校驗:
每個 CAN 報文的第一個數據都有分段信息來填充(81、a2、a3 和 c4),該信息不轉換
到 Modbus RTU 幀中,僅做為報文的确認控制信息。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!