我是 CANopen 的新手,我正在努力使用它来连接微处理器和电池管理系统。我有几个问题。
制造商提供的电池管理系统等对象字典、电子数据表和设备配置文件?
我必须自己生成这些文件吗?
任何帮助将不胜感激!
根据他们的文档,您需要提供电子数据表文件,查看 git repo ( https://github.com/christiansandberg/canopen/tree/3d3d46beae7f6aad65d58b1247eab5ae758fb9e2 ),很明显您需要 eds 文件:
# Add some nodes with corresponding Object Dictionaries
node = canopen.BaseNode402(35, '/home/andre/Code/test/jupiter.eds')
network.add_node(node)
# network.add_node(34, '/home/andre/Code/test/jupiter.eds')
# node = network[34]
创建节点时通常会提供对象字典文件node = network.add_node(6, 'od.eds')
,您可以在下面找到add_node
函数定义:
def add_node(self, node, object_dictionary=None, upload_eds=False):
"""Add a remote node to the network.
:param node:
Can be either an integer representing the node ID, a
:class:`canopen.RemoteNode` or :class:`canopen.LocalNode` object.
:param object_dictionary:
Can be either a string for specifying the path to an
Object Dictionary file or a
:class:`canopen.ObjectDictionary` object.
:param bool upload_eds:
Set ``True`` if EDS file should be uploaded from 0x1021.
:return:
The Node object that was added.
:rtype: canopen.RemoteNode
"""
也许您可以在这里找到所需的数据表:https ://compatibility.rockwellautomation.com/pages/search.aspx?crumb=117&q=EDS%20files
- 制造商提供的电池管理系统等对象字典、电子数据表和设备配置文件?
对象字典是每个节点的 CANopen 实现的一部分。它不是一些物理文件,它只是一个抽象地址的大地址表,最严格标准化。
他们不需要提供电子数据表(EDS),但如果他们不能提供,我会觉得很可疑。
设备配置文件 (DSF) 是指网络中节点的特定配置。而 EDS 是原始出厂默认设置。文件格式方面,我认为它们是相同的。
通常不会提供 DSF,因为提供特定配置没有多大意义。当您希望将配置存储在磁盘上时,更有可能是您的特定 PLC 或其他东西吐出的东西。
- 我必须自己生成这些文件吗?
如果您确实需要,只有 DSF。如果您正在编写 Python 程序,我认为没有必要。
我还建议找出制造商是否已在自动化中向 CAN 注册了供应商 ID——“拥有”CANopen 标准的非营利组织。
https://www.can-cia.org/services/canopen-vendor-id/
同一个站点也有一些关于 CAN 和 CANopen 的不错的阅读材料。
大多数 CANopen 软件都需要 EDS 文件(包括 Python 的canopen库)。如果您没有 EDS 文件,您可以自己创建它,前提是您知道设备的完整 OD 结构。如果有问题的 CANopen 设备遵循 CiA 设备配置文件,您可以假设存在一些 OD 条目。但不能保证,因为设备配置文件中提到的一些 OD 条目是可选的,并且可能存在设备配置文件中未提及但由制造商提供的其他条目。因此,通常制造商提供 EDS 文件。如果制造商记录了 OD 条目,但将创建 EDS 文件留给用户,那将没有多大意义。
一些 CANopen 设备可能将其 EDS 文件嵌入到自身中。查找 OD 条目 0x1021 和 0x1022。CiA 301 的最新版本应该提到它们。