CANopen裝置開發步驟-關於程式碼選擇和測試?

CANopen物理層一般是CAN,它廣泛用於:醫療,運動控制,工程機械,過程自動化比如PLC等裝置,船舶,航天,鐳射,風力發電等等行業。

因為CANopen的成本低(帶CAN控制器的MCU很多很便宜),應用廣泛以及以上所有優點,所以非常多公司希望升級自己的裝置,主要有這麼幾種情況:

1.之前的產品是CAN匯流排的,為了與上下游CANopen相容,需要升級,或者為了利用CANopen的穩定性需要升級到CANopen;

2、之前的裝置是不走匯流排的,但是因為行業趨勢和主流是CANopen裝置,為了提高競爭力,升級產品。

3、有些公司是因為重要客戶指明要求要CANopen通訊裝置,所以需要開發這類產品。

本文針對CANopen裝置開發中的注意事項做一些說明:如何選擇程式碼?主要包括如何進行功能測試和一致性測試?如何獲取Vendor ID?

工具/原料

MCU以及開發套件:比如運動控制行業常用的TI DSP28346/28335等;比如開發普通控制器常用的STM32 Fxxx系列等等。選擇什麼型別的MCU主要看產品效能

CANopen原始碼:開原始碼或者商業版程式碼。注:開發Serious的產品,一般都會選用商業版程式碼,一來保證程式碼質量,二來獲取技術支援和服務。

CANopen測試工具:CANopen通話卡,CANopen分析軟體,CANopen網路管理裝置(用於PDO對映,EDS建立以及修改,波特率和節點地址修改,組網等),建立物件字典的工具

Vendor ID以及CANope一致性測試工具:CiA入會後免費獲取

方法/步驟

確定產品效能,選擇對應的MCU,可以諮詢CANopen商業版程式碼的供應商,讓他們根據使用者經驗建議一兩款MCU,然後評估程式碼佔用空間的大小,結合預算和開發經驗等最終選定一款MCU。

常見MCU列表如下圖。

CANopen裝置開發步驟-關於程式碼選擇和測試

CANopen裝置開發步驟-關於程式碼選擇和測試

確定CANopen原始碼的來源:

1、購買商業版;2、選擇開源的基礎上修改;

需要注意的是幾個基本區別:

1、費用:商業版程式碼收費,開原始碼免費;商業版程式碼節省了很多研發人員和測試人員的時間,節省了很多人力成本。

2、技術支援和文件:遇到問題,商業版有人負責解答,有完整的操作文件和手冊(將近五百頁的詳細說明書),開源無人解答--問題解決的機率小、風險不確定性大。

3、程式碼質量和穩定性:商業版本有質量保證,程式碼的質量、優化和效率;使用開原始碼存在質量風險大大提高;

4、開發難度和時間:商業版有完整的多款不同硬體平臺的demo提供,大大降低開發移植難度和時間。(研發人員的薪資也是成本,產品質量和推出市場的時間也是機遇與挑戰)。開原始碼的研發工作量增加、後期測試難度和時間也增加。

5、研發/測試工具:商業版有完整的工具鏈和測試方法提供,開原始碼沒有。完整的測試工具包括:網路組網和管理以及測試(匯入EDS檔案組網並修改對應的資料,快速圖形化PDO mapping)、報文分析、快速建立物件字典 生成EDS檔案、USB-CAN卡採集資料等等。

6、培訓:提供一天線上培訓,開原始碼無任何培訓和技術支援

7、後期延展性很好:比如SO-877-VP或者SO-1063-VP提供30多種不同MCU平臺的demo,並且每年不斷更新和增加,如果專案需要更換MCU,可以快速移植,不需要額外的開發工作量。而開原始碼沒有這方面的資源。

如果要做serious的產品,一般用商業版的程式碼更有保障。

確定好CANopen原始碼之後,如果是開原始碼,則需要先看看程式碼的完整性,多做幾次測試(畢竟很多人上傳開原始碼的時候沒有想著一定要負責任,所以可能會存在一定的安全和穩定性漏洞,程式碼效率不一定高)。如果是選擇商業版程式碼:則在拿到的demo中找到與自己的MCU匹配的 ,直接移植,然後再邊讀demo的註釋,邊查說明書看函式應用,最終結合產品功能新增應用部分,即在“骨架”裡面去新增“肉體”就可以。

注:如果採用商業版程式碼,則對工程師CANopen經驗的要求會大大降低。

商業版程式碼的ccmmain函式部分的兩個小截圖如下:

CANopen裝置開發步驟-關於程式碼選擇和測試

CANopen裝置開發步驟-關於程式碼選擇和測試

物件字典的建立:比如401的IO裝置,402的運動控制,不同規範裡面的OD是不同的,如果有商業版程式碼,OD可以直接複製。

CANopen裝置開發步驟-關於程式碼選擇和測試

申請Vendor ID:加入CiA協會後直接獲取免費的Vendor ID,這個Vendor ID需要寫在EDS檔案裡面的,有利於後面的其他測試。

CANopen裝置開發步驟-關於程式碼選擇和測試

完成初步編譯後,先做一下功能測試:用上述提到的第三個CANopen的測試工具。通過CAN卡將移植好的CANopen裝置連上,如果有條件的話,最好再連上最終可能會配備的裝置,比如IO模組,PLC等,組成一個簡單的CANopen網路(CAN卡可以做主站,或者用其他PLC等做主站,如果自己開發的裝置是主站則測試自己的主站功能)。然後通過CANopen分析軟體傳送PDO/SDO等資料來測試,所開發的裝置是否可以按照預期的指令執行,其他所控制的裝置是否有相應的動作,看接收和記錄到的PDO/SDO等返回值是否符合預期。

還可以通過CANopen網路管理軟體:完成PDO對映-看是否可以正確匹配,匯入EDS檔案,看是否可以正確讀取以及相關定義,也可以直接修改;看波特率和節點地址的設定是否正確等等。

測試工具的一些截圖如下:

CANopen裝置開發步驟-關於程式碼選擇和測試

CANopen裝置開發步驟-關於程式碼選擇和測試

CANopen裝置開發步驟-關於程式碼選擇和測試

CANopen裝置開發步驟-關於程式碼選擇和測試

CANopen一致性測試:這個步驟可以放在第六步之前,也可以在之後,如果為了更完整的話,一般是放在之後,先保證基本功能沒有問題再生成EDS來測試。具體的步驟就看工程師自己的看法。

一致性測試簡單分為兩種:

1、自測試(強制性):通過入會CiA-CANopen協會後,免費獲取CANopen一致性測試工具,把EDS檔案匯入工具並自動生成測試結果。但是這種測試一般是完成EDS語法錯誤的測試,比如是否按照CANopen規範來寫的一些PDO通訊段等。

這個測試不能完成功能測試,功能測試可以參考第六步。

或者可以拿到CiA做官方測試:

2、官方測試(可選):把所有程式碼和移植好的裝置,拿到CiA實驗室,CiA的工程師會把裝置放到他們實驗室的平臺上,完成:互操作性以及相容性的測試,如果有完成的功能需求測試文件,還可以完成完整的功能需求測試。這個好處是:CiA可能比我們自己更有經驗知道應該測試什麼,知道完整的CANopen規範可以測試更全面,有完整的現成的試驗檯和裝置。

一致性測試的工具如下:

CANopen裝置開發步驟-關於程式碼選擇和測試

注意事項

• CANopen開發涉及的軟體、硬體選型都有很多講究,如果要詳細瞭解,最好是聯絡供應商直接面聊或者電話聯絡,以上資料所寫篇幅有限,僅供參考!

相關問題答案