freeModbus流程分析

简介: freeModbus流程注解

ADU 》 应用数据单元,每个MODBUS帧
PDU 》 协议数据单元,除设备地址及CRC校验码的数据

Modbus从设备

字符接收:
串口字符中断 》RTUReceiveFSM 》读取一个字节 》保存至接收缓冲区,同时启动T3.5定时器(帧与帧之间需间隔至少3.5个字符传输时间);
每次收到新字符,定时器都会被重置,直至T3.5超时,表示一个MODBUS帧结束

定时器超时后:
发出FRAME_RECEIVED事件

主线程:
收到FRAME_RECEIVED事件后,对帧进行CRC校验,并从中获取到从机地址、帧数据起始地址以及帧数据长度,当帧地址为本机地址或广播地址时,发出EV_EXECUTE事件

收到EV_EXECUTE事件后,从帧数据中取得功能码,并依据功能码调用相应的处理函数,相同的帧数据地址用于保存处理结果数据,并返回结果数据的长度,然后调用RTUSend函数,通知发送任务进行数据发送

注意:

  1. T3.5超时到函数被处理这段时间内,如果有新的帧进来,因共享缓冲区的原因,数据帧将会被破坏,需要注意
  2. MODBUS-RTU是按照数据传输间的空闲时间作为帧与帧之间区分的依据,所以串口接收不能使用缓冲区,必须实时处理,以满足时序要求

Modbus主设备

主设备功能是由从设备移植而来,所以基本流程与从设备一致,流程如下:

  1. 应用任务填充PDU数据至发送缓冲区中,然后发送MASTER_FRAME_SENT事件,等待发送完成
  2. 主功能线程收到MASTER_FRAME_SENT事件后,调用MasterRTUSend函数,添加CRC校验码后,启动发送线程
  3. 发送线程调用MasterRTUTransmitFSM函数,送出所有数据,然后判断如果为广播模式,则启动广播命令固定延时定时器,否则启动等待从设备响应定时器
  4. 接收到从设备数据后,停止等待接收定时器,启动T3.5定时器
  5. T3.5定时器超时后,发送MASTER_FRAME_RECEIVED事件,通知主线程数据接收完成
  6. 主线程解析帧并获取从机地址、数据等信息,发送MASTER_EXECUTE事件
  7. 主线程收到MASTER_EXECUTE事件,根据功能码最高位判断是否发生异常,并解析出异常码
  8. 如果数据正常,则调用对应处理函数进行数据处理

注意:

  1. 主模式下定时器不再是单一的T3.5定时器,还有等待从设备响应超时定时,以及广播命令固定延时定时功能
  2. 定时器超时函数中,判断超时原因为接收等待超时,则发送MASTER_ERROR_PROCESS事件,主线程中根据超时类型调用对应的错误回调函数处理各种错误
目录
相关文章
|
2月前
|
监控 安全 数据处理
了解阿里云 RPA:如何实现流程自动化
机器人流程自动化(RPA)是一种快速发展的技术,它可以帮助企业实现重复性任务的自动化,提高工作效率和准确性。阿里云 RPA 作为一款强大的 RPA 解决方案,为用户提供了一种简单而高效的方式来实现流程自动化。本文将介绍阿里云 RPA 的功能和特点,以及如何使用它来实现流程自动化。
|
11月前
|
存储 数据可视化 测试技术
「数据架构」5分钟学会数据流程图:客户服务系统示例
「数据架构」5分钟学会数据流程图:客户服务系统示例
|
消息中间件 数据库 RocketMQ
生成预订单流程分析1|学习笔记
快速学习生成预订单流程分析1
96 0
生成预订单流程分析1|学习笔记
|
消息中间件 数据库 RocketMQ
生成预订单流程分析2|学习笔记
快速学习生成预订单流程分析2
49 0
|
大数据 测试技术 开发者
项目分析_流程分析|学习笔记
快速学习项目分析_流程分析
86 0
项目分析_流程分析|学习笔记
|
数据采集 消息中间件 监控
数据预处-理用例流程介绍|学习笔记
快速学习数据预处-理用例流程介绍
67 0
数据预处-理用例流程介绍|学习笔记
|
数据采集 机器学习/深度学习 算法
整体流程介绍 | 学习笔记
快速学习整体流程介绍
108 0
整体流程介绍 | 学习笔记
|
XML Dubbo Java
服务注册流程分析01
在填充该 ServiceBean 的时候会将对应的那个声明了注解的 bean 设置到 ServiceBean 中。 剩下的流程放置到下一篇文章中
95 0
|
Dubbo Java 应用服务中间件
服务注册流程分析02
上一篇文章中、我们已经知道 Dubbo 会额外注册 ServiceBean 到 Spring 容器中、因为需要借助这个 ServiceBean 注册到服务中心
127 0
分享到支付宝集成流程
支付宝分享是指第三方移动应用通过接入该功能,让用户可以分享图片、网页至支付宝。可以通过支付宝分享,帮助移动应用通过社交快速传播,并能在传播中方便高效的提升购买转化率。 一、文档地址 官方文档地址:[url]https://docs.open.alipay.com/215/105279/[/url] 二、开发前准备工作 调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url] 注意事项:1、不支持沙箱测试;2、不需签约,但需要添加功能;3、不支持第三方调用。
541 0