如图
MCU:AT32F403ARCT7
FinSH连串口1
RS485连串口2
用RT-Thread Studio创建工程后,加入FreeModbu slave组件,编译通过,在进行调试过程中出现以下的问题,希望各位大佬赐教。
问题一、用UartAssis.exe软件模拟Modbus主机0x03功能读取从机数据正常
但用Modbus Poll.exe进行调试时却出现这样的情况
这问题不知从何入手进解决?实际应用时是与PLC(主机)联机。
问题二、长时间运行时会出现死机现象,FinSH输出如下信息
追踪源码:
void rt_assert_handler(const char ex_string, const char func, rt_size_t line)
{
volatile char dummy = 0;
if (rt_assert_hook == RT_NULL)
{
ifdef RT_USING_MODULE
if (dlmodule_self())
{
/* close assertion module */
dlmodule_exit(-1);
}
else
endif
{
rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line);
while (dummy == 0);
}
}
else
{
rt_assert_hook(ex_string, func, line);
}
}
另在UartAssist.exe调试窗口发现从机响应报文中的CRC码有错
正确的响应报文应是:01 03 06 00 00 00 00 00 00 21 F5
出现这现象有些板频繁些,有些板很长时间也没出现,现在我暂时用加入看门狗的方法来解决,但我也希望能切底弄清是什么原因?
问题三、我现Modbus串口的波特率是38400,再高就出错了,用UART TTL和RS485都是一样。
但我用雅特力的DEMO板加上我自己做的扩展板,Modbus同样是采用串口2,用UART TTL波特率可到115200,但用RS485也只能到38400,我的接口芯片是SP3485SE EE(与这个有关吗?)
更多回帖