EtherCat 从站开发中遇到的问题分享

最近使用了STM32F407和AX58100开发了EtherCat从站控制器。和大家分享一下遇到的问题和解决过程,希望对大家有所帮助。

一、移植

1.  按照网上的教程指导,使用SSC_V5i13生成XML和从站源码。学习XML文件中各属性定义。

2.  移植了硬件相关的驱动和与协议相关的业务逻辑,发现生成的从站内存读写函数代码效率太低,就根据AX58100手册的内存操作,重新改写了。

3.  使用倍福上位机TWINCAT3.1将XML中信息烧录到EEPROM

二、上机调试时候发现:

1.  PER-OP模式切换到SAFE-OP失败

跟踪调试发现UINT16 APPL_GenerateMapping(UINT16 *pInputSize,UINT16 *pOutputSize)这个函数执行后计算出的字符和理论值不符合。这个函数作用是计算出所有PDO需要的总长度,根据数据字典0x1600和0x1A00的定义,重新改写这个函数。同时很奇怪官方生成的代码怎么会有问题,和V5.12,V5.11生成工具生成的代码对比一下,是有计算表达式的不同。最后才找出根本原因。

2. SM正常但是DC模式不正常

DC模式从SAFE-OP转到OP模式,一直超时报警。搜了很多资料,有的说DC的扫描周期太短,有的说中断响应优先级不合理。搞了几天没有解决。用示波器查看了SYNC的同步信号也无异常。最后没办法,和其他地方搞到的能正常运行代码一个文件一个文件替换。最后发现是AX58100中内存交互函数出了问题。问题出在改写时候使用的STM32的SPI库函数操作。这个没有深究定位到具体问题段,它的调用路径有点长,我也不想改ST库函数。换成案例那样的一个个收发,就正常了。

U8 SPI_WR( U8 data )
{
    SPI3->DR = data;
    while( !(SPI3->SR&SPI_FLAG_RXNE) );
    return SPI3-&g

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值