|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, i# K8 q. N6 F; y
mcu:AT32F403ARCT7$ m- Y ]3 M$ j
FinSH连串口1
! a" {; \% |: o: m' o+ S. p; E8 vRS485连串口2
6 J: P2 V, l/ Y, r用RT-Thread Studio创建工程后,加入FreeModbu slave组件,编译通过,在进行调试过程中出现以下的问题,希望各位大佬赐教。
9 g9 _/ n' Q. I) S# B9 I问题一、用UartAssis.exe软件模拟Modbus主机0x03功能读取从机数据正常" g1 C: i) v( m/ m; [8 P2 G0 T
3 [7 _- G; G9 e7 l
但用Modbus Poll.exe进行调试时却出现这样的情况
/ D% ` Z% j3 G+ z' b$ m/ m9 o7 _
这问题不知从何入手进解决?实际应用时是与PLC(主机)联机。
0 C4 Z& C& w" o t: _9 Z' l9 v
5 r, s5 E3 @* P/ o7 k/ q% Z) k问题二、长时间运行时会出现死机现象,FinSH输出如下信息, g; z q$ X; K5 y' R% M
+ G$ h1 D) ^: w. `
追踪源码:3 m" T% g0 N# J
5 V p) H0 u6 G6 L7 s: p, kvoid rt_assert_handler(const char ex_string, const char func, rt_size_t line); V! i4 ^, b: L0 e% t
{
3 q1 a4 F6 L) F6 xvolatile char dummy = 0;
& L/ g) r( q Z/ A) l. k% l6 n1 G A. `0 n$ @ v2 c0 S' t& q
if (rt_assert_hook == RT_NULL)
c& `. C, [2 z; k4 Q{
( r' C: ^% L3 A2 p: Z# zifdef RT_USING_MODULE2 w: [3 }/ q) J0 j
if (dlmodule_self())
* f) D# p" E6 {" `4 f/ V. @{
/ N0 h% D P; ~( _/* close assertion module */& u7 e/ Q. @8 ^* X
dlmodule_exit(-1);
) m4 E" d2 z/ N}
9 G" I) {+ V# U( v$ q8 Helse
7 L+ g; O* H$ [/ zendif3 ^' S+ h e) M, n
{/ R$ n2 a, L u7 A
rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line);
# y5 ^" p5 y6 m( G, Y8 Gwhile (dummy == 0);& n2 O$ @; B4 l. b
}
% c3 P+ K' P6 Z0 Z/ a1 Z _5 u}
3 X) B% \$ p" F& I* kelse
8 A2 P) ?8 A- I8 Z2 r4 D{
8 z$ v3 \8 a! s8 ?9 \' jrt_assert_hook(ex_string, func, line);
1 n9 G- n, |, i: Y& v}
" J X, I8 u1 A4 A# |}( h5 H ^8 k- U1 ^* P8 @" E- C
$ D5 b. R* B1 t& u% N0 ^9 v
另在UartAssist.exe调试窗口发现从机响应报文中的CRC码有错
4 Q5 d; i: Y6 A4 A+ \0 A/ p" r5 `" T6 \% M0 f/ x( o/ {7 M
正确的响应报文应是:01 03 06 00 00 00 00 00 00 21 F5
" q" ~5 L$ o, ~' ~# M, R" y. n8 y( @# J9 x( \. Q
出现这现象有些板频繁些,有些板很长时间也没出现,现在我暂时用加入看门狗的方法来解决,但我也希望能切底弄清是什么原因?) A$ y k, O+ I, O0 m
$ r& M) h( }" ?7 N3 a1 |
问题三、我现Modbus串口的波特率是38400,再高就出错了,用UART TTL和RS485都是一样。3 O1 x: D3 l8 `* M$ @3 C: G4 E8 O: J
& Z* P9 z$ k+ d) { a但我用雅特力的DEMO板加上我自己做的扩展板,Modbus同样是采用串口2,用UART TTL波特率可到115200,但用RS485也只能到38400,我的接口芯片是SP3485SE EE(与这个有关吗?)
' @( U, m* \* H, [+ t8 j! a2 f, w0 { _/ r( U* b6 j/ {) {. V" v7 n
4 l3 j/ h. F' \3 b |
|