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事件,主线程中根据超时类型调用对应的错误回调函数处理各种错误
目录
相关文章
|
数据采集 SQL 数据可视化
人人都会点数据分析 | 了解数据分析的整体流程
人人都会点数据分析 | 了解数据分析的整体流程
153 0
|
存储 数据可视化 测试技术
「数据架构」5分钟学会数据流程图:客户服务系统示例
「数据架构」5分钟学会数据流程图:客户服务系统示例
|
消息中间件 数据库 RocketMQ
生成预订单流程分析1|学习笔记
快速学习生成预订单流程分析1
134 0
生成预订单流程分析1|学习笔记
|
数据采集 机器学习/深度学习 算法
整体流程介绍 | 学习笔记
快速学习整体流程介绍
整体流程介绍 | 学习笔记
|
数据采集 消息中间件 监控
数据预处-理用例流程介绍|学习笔记
快速学习数据预处-理用例流程介绍
数据预处-理用例流程介绍|学习笔记
|
数据采集 消息中间件 监控
项目总体数据处理流程详解|学习笔记
快速学习项目总体数据处理流程详解
项目总体数据处理流程详解|学习笔记
|
消息中间件 数据库 RocketMQ
生成预订单流程分析2|学习笔记
快速学习生成预订单流程分析2
|
前端开发 测试技术 数据库
接口测试平台183:并发用例报告数据收集-数据准备/bug修复阶段 (1)
接口测试平台183:并发用例报告数据收集-数据准备/bug修复阶段 (1)
接口测试平台183:并发用例报告数据收集-数据准备/bug修复阶段 (1)
|
测试技术 数据库
接口测试平台184:并发用例报告数据收集-数据准备/bug修复阶段 (2)
接口测试平台184:并发用例报告数据收集-数据准备/bug修复阶段 (2)
接口测试平台184:并发用例报告数据收集-数据准备/bug修复阶段 (2)
分享到支付宝集成流程
支付宝分享是指第三方移动应用通过接入该功能,让用户可以分享图片、网页至支付宝。可以通过支付宝分享,帮助移动应用通过社交快速传播,并能在传播中方便高效的提升购买转化率。 一、文档地址 官方文档地址:[url]https://docs.open.alipay.com/215/105279/[/url] 二、开发前准备工作 调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url] 注意事项:1、不支持沙箱测试;2、不需签约,但需要添加功能;3、不支持第三方调用。
588 11