MODBUS的工作步骤分析(图解)

通过自己的理解,将modbus的整个工作过程,归纳为如下几张图。

希望能更加形象地,从整体的角度去理解整个原理。

由于篇幅有限,图的字体很小,部分程序的语句被省略掉了,请结合freemodbus的源代码进行查看。 

串口,是基于STM32的USART2进行相应地设置。

 

此外,有3个枚举概率,应该有所认识和区别。

1)eMBEventType,在eMBroll( )中,对事件进行判断。所谓的事件,是针对一条完整的帧(报文)的操作。

typedef enum
{
    EV_READY,                              // 事件准备阶段,即还没有接收到一帧数据
    EV_FRAME_RECEIVED,         //接收完了一帧数据
    EV_EXECUTE,                         //对这一帧数据的具体执行
    EV_FRAME_SENT                  //一个帧被发送
} eMBEventType;   

2)eRcvState 和 eSndState, 这两个枚举变量,是表示接收状态、发送状态,是针对每个字节而言的。

如果有字节在接收,则eRcvState = STATE_RX_RCV;当所有的字节接收完后,就重新出于空闲状态了。

如果没有字节在接收,则eRcvState = STATE_RX_IDLE;只有在接收空闲状态,才能发送。反之亦然。

 

他们的关系:当一帧的所有的字节被接收、或者被发送完成之后, 就触发了一个事件。从而,进入了对事件的操作中。

 

在有个大致的理解之后,下面的图就更加容易理解了。

 

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值