|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 r" e+ X! e* d# a3 @ ?% ymcu:AT32F403ARCT7
- e- [6 z) {, F; bFinSH连串口1
$ k' g. ]; I7 l* u2 Z G- D5 V) KRS485连串口2/ t! t, a0 t0 f) Y4 S" y
用RT-Thread Studio创建工程后,加入FreeModbu slave组件,编译通过,在进行调试过程中出现以下的问题,希望各位大佬赐教。
8 ?. r$ f* O0 A' S) ?问题一、用UartAssis.exe软件模拟Modbus主机0x03功能读取从机数据正常+ O' `1 I% n0 Y1 ?
) G2 t/ F# p! S" C4 s* W9 W但用Modbus Poll.exe进行调试时却出现这样的情况
4 ]5 h# _ d D) ]
# Q# ^* X2 j; A& k, T0 m6 {这问题不知从何入手进解决?实际应用时是与PLC(主机)联机。& B; J: J) \' x+ X
^ q* U/ z( C
问题二、长时间运行时会出现死机现象,FinSH输出如下信息& I3 }1 m! Z+ r; x( i. A$ z
$ X; y+ g, a: W7 \/ U追踪源码:
: G8 \- u; ^' Q& ?% S: Y) S
3 Q6 J1 K- C) d# G4 {void rt_assert_handler(const char ex_string, const char func, rt_size_t line)- d, u, E/ Y, n3 V
{; U' U; ~, |0 P" l, \$ K) Z5 ~! J
volatile char dummy = 0;
6 c: m' q2 V3 D& J' s! ^ B
, c' F% L3 e" O- H1 ?, ^: ~) wif (rt_assert_hook == RT_NULL)/ P" P0 C& J" `$ N! |3 _8 i8 ]
{% f. |, O, R4 z( |: |
ifdef RT_USING_MODULE4 z) l5 r8 H" U8 r4 i7 h: b1 B
if (dlmodule_self())
% p: g3 ~3 V+ i7 [4 n{
' o: q+ o# m. B$ ?1 X# q; j) n+ w/* close assertion module */
' F7 S0 v5 o$ _- }2 ^# r5 q& f( P, Cdlmodule_exit(-1);
) O5 y* ~* ~( J( I/ j}) g R/ r% M. [6 P0 W$ t V1 d
else
: R5 e) h# t+ d0 b; A* s$ W. T* Nendif' d2 P# s% _% M& h ^+ i
{
! v) W. W0 |. Mrt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line);7 Y5 D' }# D' \' y, V
while (dummy == 0);
" J- E5 E" `3 u" F}
q! v8 W ]( _1 L}
+ n2 i6 D: f" _else
# I. B" k+ {+ j5 s{
" L7 O- [% b1 F, I j2 m' ?rt_assert_hook(ex_string, func, line);+ o% S, P, G1 f m! R& \, U
}
9 l' ~+ S2 W( H/ i/ @9 V9 I! h}
/ t5 A4 _2 k2 S: {8 ~; f3 X* g: R" ?- r( F# h9 l; \9 D1 O% l* I! V2 _
另在UartAssist.exe调试窗口发现从机响应报文中的CRC码有错9 I9 _ [/ ~' F% J: i
* l( q% k2 a _; e) Z正确的响应报文应是:01 03 06 00 00 00 00 00 00 21 F5* `' J: d, {1 [5 b/ S u0 N o5 \1 d
/ j( {7 Z& W8 P3 S, d% W出现这现象有些板频繁些,有些板很长时间也没出现,现在我暂时用加入看门狗的方法来解决,但我也希望能切底弄清是什么原因?+ c# _& ~. j0 }2 S/ Q
2 u' e% p3 E* R1 ]
问题三、我现Modbus串口的波特率是38400,再高就出错了,用UART TTL和RS485都是一样。
) Y) Z) H0 t+ \( J
9 @0 e1 V: L$ Q6 R# p4 D6 G6 ]7 S! s但我用雅特力的DEMO板加上我自己做的扩展板,Modbus同样是采用串口2,用UART TTL波特率可到115200,但用RS485也只能到38400,我的接口芯片是SP3485SE EE(与这个有关吗?)0 B! Y4 c/ h, @! b8 x- ~
! V. \8 \- e2 p0 k% y
& `' r l, K& r0 M |
|