- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 canopen发送错误问题
解决:其实是回调函数定义的索引不对,应该定义在接收pdo的最后一个索引的变量上,定义靠前会导致提前调用回调函数,导致位于之后的变量值错误。canopen事件触发发送,接收端接收到后调用回调函数,发现回调函数内部的数据总是第一次错误,第二次再接收就对了。
2023-11-15 11:14:17 102
原创 PLC编成beremiz编写SFC的BUG
解决:经过定位,发现整个SFC中有三处调用AddRack,其中一处是P控制符,上面运行的是N控制符。将P控制符改为N就好了。疑惑:还未运行到P控制符的代码,不应该影响前面的调用才对。上面的跳转应该是跳转到了可能运行P控制符的流程分支,结果就不行,去掉跳转就永远不可能运行到P分支,所以正常了。现象:自定义了功能块AddRack,内部用ST语言编写,在SFC中调用。运行到该功能块就卡住。将SFC底部的跳转到别的分支去掉就能运行。按理说执行到该功能块,不用该受到后面还未执行部分的影响。
2023-11-03 11:01:29 85
原创 CANopen字典bug之中位机
Bug原因:中位机linux系统的定时器比较慢,事件触发发送pdo的禁止时间不能设置太低。解决:pdo参数中的inhibit time配置改为0x64后就解决了。bug现象:中位机按照下位机方式配置字典发现pdo只发送一次。
2023-11-01 18:49:03 54
原创 周立功串口设置波特率不成功
然后在终端使用命令stty -F /dev/ttyO2 speed 9600 手动设置波特率,可以改成功,成功收发。使用官方代码设置串口波特率cfsetispeed(&opt, B9600);不成功,不能正常收发数据。通过系统命令stty -F /dev/ttyO2 -a 查看串口波特率,发现还是115200。周立功板子EPC9600。
2023-10-18 11:54:44 389
原创 canopen字典Bug
Bug解决:变量类型改变后,查看生成的字典内容,保证相应位置的值改变,如下:0x20000108表示映射变量索引0x2000,子索引0x01,变量长度0x08,保证变量长度和设置的变量一致。若不一致,则可以删除pdo中映射的变量,再重新建立,则可以刷新缓存。Bug现象:制造商自定义变量设置后,变量类型大于8位时,pdo映射里发送该变量,会出现有时发不出去的情况。Bug原因:字典中有缓存,改变了变量类型后,即使重新建立了字典并显示了有改动,也不行。
2023-04-20 17:16:55 144 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人