最近要弄modbus,目前console和modbus共用一个485接口,故将console暂时屏蔽,
仅使用modbus来调试(先前使用modbus poll程序会进finsh_rx_ind而不是serial_rx_ind)。
但现在状态机仅运行一次后续的字节就没有反应了,eMBPoll仅运行了一次之后就没在运行了。
暂时没调试出居体原因,求调试过从机的小伙伴给个测试例程,谢谢咯。
https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32
主从机都有,使用前先看下 README
https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32
主从机都有,使用前先看下 README …
老大!我看了一遍了Readme里面主要是说主机模式,我现在把所有_m源文件都屏蔽了,编译能过。
主程序运行下面这段代码:
[i] eMBInit(MB_RTU, 0x01, 1, 115200, MB_PAR_EVEN);
eMBEnable();
while (1)
{
eMBPoll();
}[/i]
串口使用uart1,调试能看到[i]serial_rx_ind[/i]被调用了,但是modbus poll软件上显示的是超时。
https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32
主从机都有,使用前先看下 README …
[i]/! \brief If Modbus Master ASCII support is enabled. /
/! \brief If Modbus Master RTU support is enabled. /
/! \brief If Modbus Master TCP support is enabled. /
/! \brief If Modbus Slave ASCII support is enabled. /
/! \brief If Modbus Slave RTU support is enabled. /
/! \brief If Modbus Slave TCP support is enabled. /
仅使能了从机RTU模式。
https://blog.csdn.net/arminkztl/article/details/11738395
先确认数据接收与发射在电脑端是否正常(比如串口助手)
再仔细检查 modbus poll 软件确定使用及配置有没问题
总之你这个与协议栈没有关系,静下心来认真的调试下
https://blog.csdn.net/arminkztl/article/details/11738395
先确认数据接收与发射在电脑端是否正常(比如 …
好的,老大。
串口之前一直用来做 rt_kprintf 的输出,用来做打印,应该没什么问题;
modbus poll及slave软件我用虚拟串口在PC上做过调试,两者能良好运行。
接下来我看下只能慢慢撸协议了。
好的,老大。
串口之前一直用来做 rt_kprintf 的输出,用来做打印,应该没什么问题;
有了协议栈,不到万不得已不用太多关注协议细节。
所以重心先放在移植、使用及硬件差异方面,大家都能用的代码,你跟大家也就这些差异了。
有了协议栈,不到万不得已不用太多关注协议细节。
所以重心先放在移植、使用及硬件差异方面,大家都能用 …
已经搞定了,多谢老大。
我现在需要基于Modbus去搞一套电能方面的协议了,good luck!
具体什么问题原因,怎么解决的。多跟大家分享下嘛
主要是硬件的适配上的问题,console和modbus共用一个端口,在接收回调的时候会出问题。
原本是想干掉console,仅用modbus,但没有完全干掉。console不仅在rtconfig.h中有指定端口,在board.h中也有。我之前是忘记把board.h里面的干掉了,所以导致后面链接还是有问题。
目前测试已经通过了,主机端能正常改写从机寄存器。