为什么在上面实现COE(可以通过以太网)时,为什么EtherCAT设备停留在Preop中,并且不会进入OP模式?
我正在研究一个芯片,该芯片应该可以通过以太猫连接作为PLC(主人)的从件起作用。该芯片包括Atthega2560和LAN9252,它是Ethercat奴隶。
在项目的第一步中,我为LAN9252编写了ESI文件,其中包括ESI中的输入和输出。连接稳定,数据将被发送和收集,而无需从和从而出现问题。您可以在ESI代码中看到输入和输出的定义部分如下(我不包括输出和输入中每个通道的包含,以使代码在此处缩短):
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Sm StartAddress="#x1000" ControlByte="#x64" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1200" ControlByte="#x20" Enable="1">Inputs</Sm>
<!-- ***************** output PDO 12 Bytes ************* -->
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<!-- ***************** input PDO 20 Bytes **************** -->
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<Mailbox DataLinkLayer="true">
<CoE SdoInfo="true" PdoAssign="false" PdoConfig="false" CompleteAccess="true" SegmentedSdo="true" />
<FoE />
</Mailbox>
<Dc>
<OpMode>
<Name>SM_Sync or Async</Name>
<Desc>SM_Sync or Async</Desc>
<AssignActivate>#x0000</AssignActivate>
</OpMode>
<OpMode>
<Name>DC_Sync</Name>
<Desc>DC_Sync</Desc>
<AssignActivate>#x300</AssignActivate>
<CycleTimeSync0 Factor="1">0</CycleTimeSync0>
<ShiftTimeSync0>2000200000</ShiftTimeSync0>
</OpMode>
</Dc>
<Eeprom>
ByteSize>4096</ByteSize>
<ConfigData>8003006EFF00FF000000</ConfigData>
</Eeprom>
在第二阶段确定此部分后,我想添加COE能够进入我的奴隶,因为我需要添加和控制PID Controler的系数独立于我的奴隶并通过我的主PLC侧。 通过在ESI中实现COE定义,我遇到了这两个问题(我猜这意味着COE没有实施)。
- 在活动运行中,从从preop模式下停留,并且不符合OP模式。
- 在设备的COE-ONLINE选项卡中,我看不到我在ESI中为COE定义的变量列表。
我从最后一步中添加了代码的添加和修改的部分:
<Profile>
<Dictionary>
<DataTypes>
<DataType>
<Name>STRING</Name>
<BitSize>24</BitSize>
</DataType>
</DataTypes>
<Objects>
<Objetc>
<Index>#x1018</Index>
<Name>PID Controller Coeffiecients</Name>
<Type>STRING</Type>
<BitSize>32</BitSize>
<Info>
<SubItem>
<Name>SubIndex 000</Name>
<Info>
<DefaultData>04</DefaultData>
</Info>
</SubItem>
<SubItem>
<Name>Kp</Name>
<Info>
<DefaultData>1</DefaultData>
</Info>
</SubItem>
<SubItem>
<Name>Ki</Name>
<Info>
<DefaultData>1</DefaultData>
</Info>
</SubItem>
<SubItem>
<Name>Kd</Name>
<Info>
<DefaultData>1</DefaultData>
</Info>
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
<Category>o</Category>
</Flags>
</Objetc>
</Objects>
</Dictionary>
</Profile>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Fmmu>MBoxState</Fmmu>
<Sm MinSize="64" MaxSize="128" DefaultSize="128" StartAddress="#x1000" ControlByte="#x26" Enable="1">MBoxOut</Sm>
<Sm MinSize="64" MaxSize="128" DefaultSize="128" StartAddress="#x1080" ControlByte="#x22" Enable="1">MBoxIn</Sm>
<Sm StartAddress="#x1100" ControlByte="#x64" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1200" ControlByte="#x20" Enable="1">Inputs</Sm>
<!-- ***************** output PDO 12 Bytes ************* -->
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<!-- ***************** input PDO 20 Bytes **************** -->
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<Mailbox DataLinkLayer="true">
<CoE SdoInfo="true" PdoAssign="true" CompleteAccess="true" />
</Mailbox>
DC和EEPROM保持不变。
我试图更改Mbox输入和输出以及POS输出和输入的开始地址。仍然存在同样的问题。
如果有人可以帮助我查看本守则中有什么问题或向我展示文档,我将不胜感激,在这里我可以更好地告知自己。我已经试图解决这个问题很长时间了,到目前为止还没有成功。我浏览了贝克霍夫(Beckhoff)关于Ethercat和Coe的文件。但是不幸的是,我无法弄清楚问题是什么。
请让我知道是否需要有关此问题的更多数据,我很乐意编辑并将数据添加到问题中。再次感谢。
编辑:显示的错误是:
fehler:超时:'下载PDO 0x1C12索引'。
Fehler:国家更改中止(要求“ Safeop”,返回“ Preop”)。
I am working on a chip which is supposed to be functional as a slave for a PLC (master) through an EtherCAT connection. The chip includes an Atmega2560 and a LAN9252, which ist he EtherCAT slave.
On first step in my project, I wrote the ESI file for LAN9252 including the inputs and outputs in the ESI. The connection is stablished and data is sent and recieved without problem from and to slave. You can see the definition part of the input and outputs in ESI code as following (I excluded the contains of every channel in outputs and inputs to make the code shorter here):
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Sm StartAddress="#x1000" ControlByte="#x64" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1200" ControlByte="#x20" Enable="1">Inputs</Sm>
<!-- ***************** output PDO 12 Bytes ************* -->
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<RxPdo Fixed="1" Mandatory="1" Sm="0">
<!-- ***************** input PDO 20 Bytes **************** -->
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<TxPdo Fixed="1" Mandatory="1" Sm="1">
<Mailbox DataLinkLayer="true">
<CoE SdoInfo="true" PdoAssign="false" PdoConfig="false" CompleteAccess="true" SegmentedSdo="true" />
<FoE />
</Mailbox>
<Dc>
<OpMode>
<Name>SM_Sync or Async</Name>
<Desc>SM_Sync or Async</Desc>
<AssignActivate>#x0000</AssignActivate>
</OpMode>
<OpMode>
<Name>DC_Sync</Name>
<Desc>DC_Sync</Desc>
<AssignActivate>#x300</AssignActivate>
<CycleTimeSync0 Factor="1">0</CycleTimeSync0>
<ShiftTimeSync0>2000200000</ShiftTimeSync0>
</OpMode>
</Dc>
<Eeprom>
ByteSize>4096</ByteSize>
<ConfigData>8003006EFF00FF000000</ConfigData>
</Eeprom>
After establishing this part, in the second phase, I want to add the CoE ability to my slave, since I need to add and control a PID controler's coeffiecinets independent from my slave and through my master PLC side.
By implementing the CoE definition in ESI, I face these two problems (which I'm guessing it means that CoE is not implemented).
- In active run the slave stays in PREOP Mode and does not go to OP Mode.
- In CoE-Online tab of the device, the I cannot see the variable list, which I defined already in ESI for CoE.
I bring the added and modified part of code from last step in the following:
<Profile>
<Dictionary>
<DataTypes>
<DataType>
<Name>STRING</Name>
<BitSize>24</BitSize>
</DataType>
</DataTypes>
<Objects>
<Objetc>
<Index>#x1018</Index>
<Name>PID Controller Coeffiecients</Name>
<Type>STRING</Type>
<BitSize>32</BitSize>
<Info>
<SubItem>
<Name>SubIndex 000</Name>
<Info>
<DefaultData>04</DefaultData>
</Info>
</SubItem>
<SubItem>
<Name>Kp</Name>
<Info>
<DefaultData>1</DefaultData>
</Info>
</SubItem>
<SubItem>
<Name>Ki</Name>
<Info>
<DefaultData>1</DefaultData>
</Info>
</SubItem>
<SubItem>
<Name>Kd</Name>
<Info>
<DefaultData>1</DefaultData>
</Info>
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
<Category>o</Category>
</Flags>
</Objetc>
</Objects>
</Dictionary>
</Profile>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Fmmu>MBoxState</Fmmu>
<Sm MinSize="64" MaxSize="128" DefaultSize="128" StartAddress="#x1000" ControlByte="#x26" Enable="1">MBoxOut</Sm>
<Sm MinSize="64" MaxSize="128" DefaultSize="128" StartAddress="#x1080" ControlByte="#x22" Enable="1">MBoxIn</Sm>
<Sm StartAddress="#x1100" ControlByte="#x64" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1200" ControlByte="#x20" Enable="1">Inputs</Sm>
<!-- ***************** output PDO 12 Bytes ************* -->
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<RxPdo Fixed="1" Mandatory="1" Sm="2">
<!-- ***************** input PDO 20 Bytes **************** -->
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<TxPdo Fixed="1" Mandatory="1" Sm="3">
<Mailbox DataLinkLayer="true">
<CoE SdoInfo="true" PdoAssign="true" CompleteAccess="true" />
</Mailbox>
DC and Eeprom stay the same.
I tried to change the start address for MBox input and output and POs outputs and inputs. still the same problems exist.
I would appreciate if anyone can help me to see what is wrong in this code or show me a documentation, where I can inform myself better withe subject. I am trying to solve this issue already for a long time and no succes till now. I went through the beckhoff's documentation about EtherCAT and CoE. But unfortunatly I cannot figure out what the problem is.
Please let me know if more data on the issue is needed, and I gladly edit and add the data to the question. Thanks again.
Edit: the error shown is:
Fehler: Timeout: 'download pdo 0x1C12 index'.
Fehler: state change aborted (requested 'SAFEOP', back to 'PREOP').
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论