使用小记
openPOWERLINK协议栈结构图镇楼
一个MN一个CN(nodeId=1)互联的条件
- 与demo的配置无关,demo中关于IP、网关和子网掩码均无需更改,与网卡不符也没有关系。
- MN的objdict.h位于objdicts\CiA302-4_MN,修改内容:
OBD_SUBINDEX_RAM_VAR_RG(0x1400, 0x01, kObdTypeUInt8, kObdAccGRW, tObdUnsigned8, NodeID_U8, 0x01, 0, 254) OBD_SUBINDEX_RAM_VAR_RG(0x1800, 0x01, kObdTypeUInt8, kObdAccGRW, tObdUnsigned8, NodeID_U8, 0x01, 0, 254)
- CN的objdict.h位于objdicts\CiA401_CN,修改内容:
OBD_SUBINDEX_RAM_VAR(0x1600, 0x00, kObdTypeUInt8, kObdAccRW, tObdUnsigned8, NumberOfEntries, 0x01) OBD_SUBINDEX_RAM_VAR(0x1600, 0x01, kObdTypeUInt64, kObdAccRW, tObdUnsigned64, ObjectMapping, 0x0008000000016200LL) OBD_SUBINDEX_RAM_VAR(0x1A00, 0x00, kObdTypeUInt8, kObdAccRW, tObdUnsigned8, NumberOfEntries, 0x1) OBD_SUBINDEX_RAM_VAR(0x1A00, 0x01, kObdTypeUInt64, kObdAccRW, tObdUnsigned64, ObjectMapping, 0x0008000000016000LL)
多个CN节点入网连接报错误0x8480的可能解
节点状态异常,可能由于网络或节点状况不好,例如:
- 在普通办公网络中进行POWERLINK组网,网络环境复杂原因造成网络延迟较高。
- POWERLINK节点运行在非实时环境、CPU处理能力差、网卡性能不佳,尤其在虚拟机上配置的节点,导致POWERLINK帧处理不及时。
此种情况建议修改mnobd.cdc,配置MN索引0x1F92的各CN对应子索引值,我设成10000000(10ms),该索引即为管理各CN的PRes超时时间。 同时建议0x1F8A子索引0x02(AsyncSlotTimeout)设长,官方安装版demo_MN_qt例程设置为100000000(100ms)。
运行demo_mn_qt一定在同文件夹下放上mnobd.cdc
openPOWERLINK on ubuntu14.04.1
- 按照Linux下的协议栈库创建步骤,需要apt-get install libpcap0.8-dev,否则make过程中报找不到pcap.h错误。
- 生成demo_mn_qt需要apt-get install qt4-dev-tools和g++