haveDream
haveDream
这家伙很懒,什么也没写!

注册于 8年前

回答
34
文章
0
关注者
0

发布于5年前

有没有去搞搞 zlg 的 aworks。

发布于5年前

env的iot里面freemodbus软件包有例子。从机发送,使能就能看到


多谢,问题找到了。串口发送数据校验位设置与我的单片机设置不同造成的CRC校验错误,导致超时。

发布于5年前

[i=s] 本帖最后由 haveDream 于 2019-7-11 10:42 编辑 [/i]

你用什么软件测试的,主机发送数据的时候有没有加CRC尾?


问题找到了,恨自己学艺不精,调试了这么久。用的modbus poll。数据校验位不同造成的,狗日的串口助手居然识别不出来,我用了一个串口用于接收485过来的数据,对比发现modebus发送来的数据和我串口接收的一样,而单片机是错误的。我代码设置

  1. eMBInit(MB_RTU, 0x01, 1, 115200, MB_PAR_EVEN)

modebus poll 发送是 none 不带校验位,因此接收到的数据是错误的,CRC报错超时。

发布于5年前

看说明https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32


我说的是从机模式啊
一直超时。硬件测试过手动485发送接收没有问题。目前通过仿真查看

  1. eStatus = peMBFrameReceiveCur( &ucRcvAddress, &ucMBFrame, &usLength );

函数运行后,CRC校验出错,eStatus 返回值为5 MB_EIO 。 ucRTUBuf 中的数据接收没有问题。

发布于5年前

是一直超时还是偶尔超时,是否选对了硬件连接已经波特率等配置,还有从机地址等,缺一不可的。 …


一直超时。硬件测试过手动485发送接收没有问题。目前通过仿真查看

  1. eStatus = peMBFrameReceiveCur( &ucRcvAddress, &ucMBFrame, &usLength );

函数运行后,CRC校验出错,eStatus 返回值为5 MB_EIO 。 ucRTUBuf 中的数据接收没有问题。

发布于5年前

哪里有例子,让我参考下。一直没有调通

发布于5年前

这个已经很清晰了,原来的代码不是很方便传上来,有问题留言即可 。


按照你说的把void test_modbus (void) 程序运行起来后。通过软件 modbus poll 软件连接有错误。显示时间超时?这个怎么设置。

发布于5年前

Ubuntu 可以直接:


多谢大佬指点:victory:

发布于5年前

厉害了厉害了


linux新手,主要是wsl用起来很方便,占用内存也小。现在的WSL2 版本支持windos直接访问linux目录,太爱了,直接ctrl+v。

发布于5年前

能把代码传上来吗?完全不会用啊。

发布于5年前

WSL 现在不是很稳定呐,所以我还是推荐你用 VM 装个完整版的虚拟机


个人比较喜欢WSL。我有linux的笔记本,两个对比着用:)。

发布于5年前

ghost 精简版本的系统害人不浅啊


的确是,头一次碰到这问题真是搞笑了;P

发布于5年前

哈哈 一些非官方版本出现的问题真的是千奇百怪


我建议把系统要求写到文档中。明确要求系统版本类型是官版或者什么版本,否则会产生意想不到的错误。

发布于5年前

请使用功能较为完整的正版 windows 系统就没这些问题了


系统问题,今天换了win7官版。问题解决了

发布于5年前

联想笔记本,新安装的WIN7 OEM系统。env报错- 1.1.0 和 1.1.2两本版本错误相同
错误内容:
$ menuconfig
The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.

回到
顶部

发布
问题

投诉
建议