怎么做CANOpen开发
我现在要做DSP2812与驱动器的通信,使用CANOpen协议?应该怎么着手,没有基础。
谢谢!
1. 先看看协议介绍,周立功网站上有些;对CANOpen有个大致了解,分析一下是否适合自己的方案应用。
2.去cia下载301协议看看
3.下载个简单的协议栈代码(论坛上有),结合协议文件仔细分析,并把它移植到你的DSP上。
4.根据功能要求编写和完善自己的协议栈。
我可以提供CANOpen源代码
联系bluestar_nj@htomail.com
SDO的帧格式中,先是命令字,然后是Index和Sub-index,那如果我要访问一个没有子索引的入口,例如当我要修改SYNC的COB-ID,SDO的帧格式是怎样的?
刚在DS301里找到这句话:For single Object Dictionary entries such as an UNSIGNED8, BOOLEAN, INTEGER32 etc.the value for the sub-index is always zero.
那是不是子索引的值为0就可以了?由于分析仪还没买回来,没试过。
没有子索引的,子索引号就是0
请问远方,EDS文件是如何导入的?谢谢
是不是在记事本中写好EDS文件后,将后缀txt改为eds就可以导入了?
|
是的,按EDS文件規范編寫好文件,擴展名為EDS,然後就可以使用支持EDS文件的組態配置軟件來導入。
|
|
对象字典的值的问题
对象字典中的参数是不是要赋予一个实际的值啊,这个值是用户设定还是设备已经定好的? 比如第二个TPDO(索引0x1801,子索引3)的禁止时间如果在对象字典中的值是0x3FE,那在初始化第二个TPDO时也要为0x3FE?要是想改变这个禁止时间,是不是对象字典中的值也要变?
那请问对象字典的参数是不是由设备厂商已经定好了,用户根据相应的参数来初始化,但也可以更改参数? 谢谢
|
如果要更改应该是通过默认的SDO对对象字典的访问来更改的,如果不更改就使用制造商默认的参数或者上次保存的参数,在系统启动的时候加载的。
|
|
|
是不是用SDO进行更改之后还要再次进行参数的初始化?
|
|
|
改过之后就可以使用NMT:Start Remote Node了。
|
|
还有些不明白,比如说 我要更改TPDO的禁止时间,对象字典中更改之后,设备就已经更改了相应的参数吗?不需要在TPDO的初始化中进行更改吗
canopen从站对象字典的配置
对CANOpen从站的配置是否要写一个配置软件,或者在开发时将端口(比如8通道)映射到对象字典(比如60000108),并将EDS文件交给PLC来进行二次开发??不知我是否说得准确,请高手指正。谢谢,请尽量详细点。
|
就CANOpen本身的功能,是不需要其它配置軟件的,上電時主站都會通過SDO來對從站做相應的配置,不過如果你有其它功能需要配置,有些廠商也提供從站的配置軟件的
EDS提供給用戶,用戶在使用的時候導入到主站的配置軟件就可以使用了,不存在二次開發。
|
|
谢谢你的回答,我想问一下,是否不同的从站都有不同的对象字典,还是从站可以按一个对象字典来配置,然后在主站中加载不同的对象字典并通过SDO来对从站的对象字典进行配置。请问我的理解对否,请指正,谢谢。
|
对象字典 = 参数集
亚洲人说参数组,欧洲人说对象字典,只是文字游戏,所谓的对象字典就是从站所拥有的参数集。
从站有哪些参数,除了CANOpen协议要求必需的参数(Index 1000, 1001, 1018)外,其它的都是开发从站的厂商根据自己从站的功能来设置的,比如一台变频器,上面有100多个参数可供用户设定,这些参数放在一起就是对象字典。
而EDS檔就是对从站所拥有的这些参数的描述,主要是供主站的配置软件能很方便的配置这些参数而已,所以EDS檔里的参数要与从站程序里实现的参数相一致。
主站都可以通过SDO对从站的参数进行读和写(允许写)。
|
|
主站需要Node-ID吗?
DS301里关于预定义连接集部分有这句话,“This allows a peer-to-peer communication between a single master device and up to 127 slave devices.”
这是不是意味着主站可以不需要Node-ID,可以连接127个从站?按照默认的模式,COB-ID中使用的都是自己的Node-ID,主站只要能识别就可以了?
如果主站要支持SDO Server就必須要NODE-ID
同步和RPDO的问题
1 如果一个节点可以处理同步TPDO和同步RPDO,那这个节点收到同步报文后,要先进行TPDO的采样发送还是进行RPDO的处理接收?
2 看了DS301协议,RPDO也有传输类型,TPDO的传输类型规定什么时候发送,那RPDO传输类型作用是什么?说明什么时候处理接收吗?
补充上面的第二个问题:
如果RPDO的传输类型是规定了什么时候处理接收,那是怎么规定的?
谢谢
1.收到SYNC进行TPDO的处理发送就好了,RPDO不用关
2.从我的理解上,RPDO的传输类型没多少用处,反正我的协议栈不去管它。
CANOpen