|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
6 `1 R; V9 y1 O) P: _/ `, ?
mcu:AT32F403ARCT7" h* g/ f# N7 ]: k+ v- |
FinSH连串口1
; k# q8 Q" |5 gRS485连串口20 A/ V1 C4 w3 l/ b. J
用RT-Thread Studio创建工程后,加入FreeModbu slave组件,编译通过,在进行调试过程中出现以下的问题,希望各位大佬赐教。
# y( H/ n# m6 S$ G9 \& r8 F |% Y问题一、用UartAssis.exe软件模拟Modbus主机0x03功能读取从机数据正常
2 ]! m8 s- g/ ~( {& ` M' |0 J8 Q& f1 j+ b+ r) h7 d" u2 M
但用Modbus Poll.exe进行调试时却出现这样的情况8 R4 F4 J: z- E4 V4 W _
/ ?* B5 f4 o7 Q, Q( A这问题不知从何入手进解决?实际应用时是与PLC(主机)联机。) O; A4 \3 f# {
) h* q, e" ^) n9 X问题二、长时间运行时会出现死机现象,FinSH输出如下信息, N8 I8 N/ j; y; _* O7 S" Y% B
5 v& j; \$ l# F8 @3 l
追踪源码:
# `# Z; V4 D' o. Q, W0 i1 i9 {% T& I3 l
void rt_assert_handler(const char ex_string, const char func, rt_size_t line)! x3 f3 y* V" g
{
/ a+ a! I, [2 v2 S6 k& G; x1 Fvolatile char dummy = 0;$ H" \7 ]+ A+ i. m' U2 O7 C
1 c" g+ U _% W( G0 H5 [0 |if (rt_assert_hook == RT_NULL)
2 _* S/ s" T& ]8 M$ ?{ n4 C; @) K) w0 H, o2 U8 Z' k: ~) v
ifdef RT_USING_MODULE- @7 D6 y& [4 b. y# u' T1 ?9 H
if (dlmodule_self())
/ ^/ F& S! ~! w% x8 j; r9 X5 y+ J9 |{' o# y% z; K' k) L& @6 _
/* close assertion module */1 L% _- c- }9 l$ m; V
dlmodule_exit(-1);
- W! f) _* a& F( l}
! [/ u$ A0 W2 ]+ Lelse
% ]+ }9 n" a S1 V6 A- uendif
[6 y {+ C: E( u{
V+ o. q# p9 O" b7 \rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line);
7 i& c, [4 T: [; {( K4 lwhile (dummy == 0);! P" Y `8 h- a& v( L
}
5 G0 X& X5 F1 x+ _( Q, h}5 o; A0 E( ^8 K, p" W% B0 S& I3 \
else& s6 ]* Z1 L; ]
{% g1 [/ ^; ?4 a; c
rt_assert_hook(ex_string, func, line);
! @! P9 l4 [4 o( k7 V}: `" M/ V3 D, ]2 d' @1 |3 z
}+ l0 k0 [: L% O7 |! |3 g# ^: V0 O
1 A ~: ] i! O& a
另在UartAssist.exe调试窗口发现从机响应报文中的CRC码有错& u9 U* s b: J2 j
5 Q2 C5 q, G7 H) ^9 q+ W2 j
正确的响应报文应是:01 03 06 00 00 00 00 00 00 21 F5- R, ]! }8 B" N+ Y U: W0 k: p
0 y- Q* U: @5 U: F4 G出现这现象有些板频繁些,有些板很长时间也没出现,现在我暂时用加入看门狗的方法来解决,但我也希望能切底弄清是什么原因?
- c1 t T5 d6 l v6 t: S" ?3 f
1 y/ p" Q; |5 e问题三、我现Modbus串口的波特率是38400,再高就出错了,用UART TTL和RS485都是一样。
/ x4 c" g; t8 v/ h7 a& n; `! \! ~! @2 M2 _& Z& L% V
但我用雅特力的DEMO板加上我自己做的扩展板,Modbus同样是采用串口2,用UART TTL波特率可到115200,但用RS485也只能到38400,我的接口芯片是SP3485SE EE(与这个有关吗?)
6 ]6 ^" D8 X8 N2 W$ u
: d) {, I' o' k/ c/ a/ c& `
' `- x* A' |" W$ m5 C# P) p |
|