使用小记

openPOWERLINK协议栈结构图镇楼 openPOWERLINK结构

一个MN一个CN(nodeId=1)互联的条件

  1. 与demo的配置无关,demo中关于IP、网关和子网掩码均无需更改,与网卡不符也没有关系。
  2. 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)
    
  3. 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

  • 按照Linux下的协议栈库创建步骤,需要apt-get install libpcap0.8-dev,否则make过程中报找不到pcap.h错误。
  • 生成demo_mn_qt需要apt-get install qt4-dev-tools和g++