《alios things開發系列》Canopen開發

不想去成爲一個偉大的程序員,只想成爲一個具有良好習慣的優秀程序員。

前言

最近因項目需要在alios上平臺開發Canopen主站應用,花了兩天時間研究了一下,比起Modbus的話Canopen相對會複雜一些,畢竟alios採用的Canopen協議棧是第三方的Canopen協議棧Canfestival。

正文

阿里雲那邊提供的針對合作商的alios中對canopen進行了封裝並只提供靜態庫,由於關於在alios上開發Canopen的資料還比較少所以只能看它的源碼是如何調用,並且它裏面主站的源碼耦合度比較高、源碼的API說明也沒用,比起alios上的modbus這個讓我覺得更加麻煩,總感覺開發效率被卡住了。

來說說我的一個開發思路吧。

一、熟悉Canopen協議

開發的前提了解協議棧,CAN本身實現了物理層以及鏈路層協議,Canopen是基於CAN之上的應用層協議,關於如何學習Canopen的教程,我看了下網上的資料,看一下下面這個博主的博客就能差不多瞭解了,包括Canfestival的簡單入門,更具體的話需要去看一下源碼中提供的sample。

https://blog.csdn.net/ybhuangfugui/category_9278739.html

總而言之,快速開發的話,需要重點了解SDO修改對象字典的內容、PDO實時數據交互的控制、NMT狀態機的切換這些的作用,CAN相對於RS485在安全性、可靠性等方面都比較高,因爲RS485就包含物理層,而CAN本身包含鏈路層的優先級總裁、碰撞檢測這些機制,並且Canopen應用層協議的一些故障修復機制我認爲也做的比較好。

二、熟悉如何與Canopen從站設備交互

一般的從站設備都會有關於Canopen技術指導手冊,一般還會給出一些像CAN網絡負載的最優配置、如PDO實時數據交互的時間限制等,還有設備子協議的對象字典如何交互,然後根據你自己的應用層去根據這些數據進行邏輯處理。

三、研究alios提供的Canopen接口

這部分是比較麻煩的,一個是直接跟阿里那邊相關負責人交流,阿里雲那邊會有個合作公司優先級,可能回覆效率會有點問題,另外就是解析alios提供的Canopen接口調用,我是花了大半天時間纔看懂它的一個Canopen主站框架,耦合較高,然後在它的基礎上修改我應用的主站。

文章每週持續更新,原創雖短,確不容易,歡迎大家點贊關注,一起交流技術一起提升成長。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章