1canopen概要Canopen是工业控制现场通信层次的应用协议,主要围绕如下的几个文档展开DS301是描叙canopen的基本概念,任何canopen设备都要符合DS301的要求。DS302是DS301的补充,针对智能型的canopen设备进行描叙,例如PLC,HMI,控制器。DS303是硬件连线和接头的描叙。DS306是对EDS文件的描叙,EDS文件是对设备canopen的全描叙,通过EDS文件可以了解到设备支持canopen的哪些特征。设备中的参数是怎样映射之类。DS401是IO模块的设备描叙,例如输入/输出IO模块,DA/AD模块。DS402是伺服,变频器之类设备描叙。DS404是测量设备和闭环控制设备的描叙,例如温控表。上面的文档是复杂的,读起来也很晦涩。如果在工作中遇到很细节或者理解的问题,一定要参考上面的文档,这个是最权威的说明。好在文档大多不厚,最多的一篇为200页。对于canopen原理的快速入门可以通过如下一个快速文档开始通过这个文档可以快速了解canopen是啥。但是真正的理解和实现canopen还得通过在实践中练习和思考来进行。2Canopen在somachine上的使用施耐德的238,258都支持canopen,PLC是canopen的主站。新增canopen设备支持,如果要在somachine中增加23伺服驱动的canopen支持,如下操作
弹出的界面中点击“安装”按钮选择23伺服对应的EDS文件,打开,然后somachine就支持新的23伺服设备了。在设备管理中添加设备
选择刚刚添加的canopen设备新增的设备如下,双击选择设备,进行参数编辑
Canopen设备参数主要设置节点ID、PDO、服务数据对象、IO映射等参数。PDO是最为重要的部分,在设备运行全程中PDO自动进行PLC和设备的数据交换,无需编程。数据服务对象(SDO,则是对设备中的参数进行初始化作用,在PLC设备上电运行后,PLC自动根据数据服务对象配置,对设备中的参数进行初始化。运行过程中则,不对数据服务对象读写。如果要动态读写远程设备的数据服务对象,则要使用功能块,sdo_write,sdo_read进行。3Canopen在stm32上的移植我主要参考了网上的文档http://www.rt-thread.org/phpBB3/topic1623.html进行工程的实现。我将服务器版本烧写到位置盒子,将客户端版本烧写到冰凌科技板子(因为有232串口1),然后可以使用can连接盒子和板子,启动后,会通过冰凌科技板子查看canopen的工作状态。我提供的例子就是分别对应的主张和从站的工程。4Canopen最核心的思想配置就是一切!运行中的配置是对象字典(OD),设备的静态配置描叙是EDS文件,通过配置详细描叙了
canopen通信的启动、运行、停止、错误处理和自动数据交换。了解了这个,也就对于canopen的理解有了一个很好的开始。Eds是一个文本描叙的配置文文件如下图