千里马02 2024-01-29 15:11 采纳率: 0%
浏览 14
已结题

freemodbus+FreeRTOS

我使用Cubemx配置stm32f407zet7,移植的freemodbus一切正常,启用FreeRTOS之后,开始运行五到十分钟就会提示下面的错误:
Assertion "pcb->snd_queuelen >= pbuf_clen(next->p)" failed at line 1111 in ../Middlewares/Third_Party/LwIP/src/core/tcp_in.c
Assertion "pbuf_free: p->ref > 0" failed at line 753 in ../Middlewares/Third_Party/LwIP/src/core/pbuf.c
然后freemodbus就不运行了

img


而且在#define MB_TCP_DEBUG 1这个定义参数改为0时,还是会输出debug的调试信息,没有任何作用,到底是为啥呀,求帮

  • 写回答

1条回答 默认 最新

  • GISer Liu 2024-01-30 20:41
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    针对您提出的问题,我们需要从几个方面来进行分析和解决。问题描述中提到,使用Codesys的使能块时,bDriveStartRealState位一直是False,导致使能不成功。控制字卡在7不上升至15,状态字显示为6-0x631、7-0x633、15-0x1637。而使用TwinCAT的NC轴可以正常使能。

    问题分析:

    1. 通信协议问题:您提到使用的是402协议,这是一种常用于驱动控制的工业通信协议。问题可能出在协议的某个细节上,Codesys与驱动器之间的通信可能存在某些不兼容性。

    2. 使能块配置问题:可能是Codesys中的使能块配置不正确,或者与步进驱动器的参数设置不匹配。

    3. 硬件兼容性问题:可能是Codesys与您的步进驱动器之间存在硬件兼容性问题。

    解决思路:

    1. 检查通信设置:首先确认Codesys与驱动器之间的通信设置是否正确,包括波特率、数据位、停止位、奇偶校验等。

    2. 检查使能块参数:检查在Codesys中配置的使能块参数是否与步进驱动器的要求一致。特别是控制字和状态字的配置,确保它们符合402协议的标准和驱动器的要求。

    3. 固件版本对比:比较Codesys和驱动器的固件版本,确保它们是最新的,有时候固件更新可以解决兼容性问题。

    4. 硬件兼容性检查:确认步进驱动器的型号和规格是否被Codesys官方支持。如果可能,查看Codesys的官方文档或论坛,看是否有相似案例或兼容性公告。

    5. 联系技术支持:如果以上步骤无法解决问题,建议联系Codesys和步进驱动器的技术支持,可能是更深层次的技术问题需要他们的协助。

    具体操作步骤:

    1. 通信设置确认

      • 进入Codesys的设备配置界面。
      • 检查与步进驱动器通信接口的设置,确保与驱动器的要求一致。
    2. 使能块参数检查

      • 打开使能块的配置界面。
      • 核对控制字和状态字的设置,参考402协议标准和步进驱动器的手册进行调整。
    3. 固件版本更新

      • 检查Codesys和步进驱动器的固件版本。
      • 如果不是最新的,从官网下载最新固件进行更新。
    4. 联系技术支持

      • 准备好设备的型号、固件版本和详细的问题描述。
      • 通过电话或邮件联系技术支持,提供问题描述和所尝试的解决步骤。

    通过以上步骤,应该能够定位问题的根源,并找到相应的解决方案。希望这些建议能够帮助您解决问题。如果有进一步的问题或需要更详细的指导,请随时提问。

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月5日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 岛津txt格式文件转nirs格式
  • ¥15 石墨烯磁表面等离子体
  • ¥15 angular 项目无法启动
  • ¥15 安装wampserver,图标绿色,但是无法进入软件
  • ¥15 C++ MFC 标准库 加密解密解惑
  • ¥15 两条数据合并成一条数据
  • ¥15 Ubuntu虚拟机设置
  • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项
  • ¥15 electron 如何实现自定义安装界面
  • ¥15 关于#linux#的问题:子进程C运行“ls –l”命令,且显示“C运行ls-l命令”(语言-c语言)