haveDream
haveDream
This guy hasn't written anything yet

注册于 5 years ago

回答
0
文章
0
关注者
0

有没有去搞搞 zlg 的 aworks。

271359695 发表于 2019-7-11 08:56
env的iot里面freemodbus软件包有例子。从机发送,使能就能看到


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

    本帖最后由 haveDream 于 2019-7-11 10:42 编辑


shauew 发表于 2019-7-11 09:07
你用什么软件测试的,主机发送数据的时候有没有加CRC尾?

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

whj467467222 发表于 2019-7-10 23:15
看说明https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32
我说的是从机模式啊
一直超时。硬件测试过手动485发送接收没有问题。目前通过仿真查看
eStatus = peMBFrameReceiveCur( &ucRcvAddress, &ucMBFrame, &usLength );

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

shauew 发表于 2019-7-10 18:11
是一直超时还是偶尔超时,是否选对了硬件连接已经波特率等配置,还有从机地址等,缺一不可的。 ...


一直超时。硬件测试过手动485发送接收没有问题。目前通过仿真查看
eStatus = peMBFrameReceiveCur( &ucRcvAddress, &ucMBFrame, &usLength );
函数运行后,CRC校验出错,eStatus 返回值为5 MB_EIO 。 ucRTUBuf 中的数据接收没有问题。

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

shauew 发表于 2019-7-10 16:42
这个已经很清晰了,原来的代码不是很方便传上来,有问题留言即可 。

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

Summer_gift 发表于 2019-7-2 16:34
厉害了厉害了


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

Summer_gift 发表于 2019-6-29 08:56
WSL 现在不是很稳定呐,所以我还是推荐你用 VM 装个完整版的虚拟机


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

flyboy 发表于 2019-6-27 09:12
ghost 精简版本的系统害人不浅啊


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

Summer_gift 发表于 2019-6-27 09:42
哈哈 一些非官方版本出现的问题真的是千奇百怪


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

Summer_gift 发表于 2019-6-26 09:41
请使用功能较为完整的正版 windows 系统就没这些问题了


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

联想笔记本,新安装的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.

发布
问题