会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
yjbjingcha
博客园
首页
新随笔
联系
订阅
管理
项目1——单片机高效的工具审查,控制系统流程图和时序图
1. 系统整体架构流程图
外部设备
STM32F103RET6 主控制器
FreeRTOS任务层
业务逻辑层
通信协议层
硬件抽象层
Modbus RTU
Modbus RTU
Modbus RTU
上位机
Modbus主站
伺服驱动器1
站号1
伺服驱动器2
站号2
按钮面板
急停/复位/启动
气动阀门
工件夹紧
GPIO控制
UART通信
定时器
看门狗
Modbus主站
mb_master.c
Modbus从站
mb_slave.c
寄存器管理
mb_reg.c
伺服控制器
tigerservo.c
按钮控制器
button_control.c
气阀控制器
valveControl.c
Modbus适配器
modbus_slave_adapter.c
defaultTask
空闲任务
优先级:Normal
modbusTask
Modbus通信
优先级:Normal
servoTask
伺服控制
优先级:High
systemTask
系统监控
优先级:Low
2. 伺服控制状态机流程图
系统启动
初始化完成
读取完成(21个参数)
读取中/重试
发现差异
无差异
写入完成
重试失败
发现控制差异
无差异
写入完成
重试失败
读取完成
检测到差异
读取中
通信错误
通信错误
通信错误
通信错误
通信错误
INIT
READ_INOUT_DATA
配置Modbus
写入初始参数
CHECK_INOUT_DIFF
使用表驱动
地址映射
WRITE_INOUT_DIFF
CHECK_CTRL_DIFF
比较读写缓存
50ms延时机制
READ_OUTPUT_DATA
智能站号选择
参数同步更新
WRITE_CTRL_DIFF
检查控制位
启动/停止/急停等
32位控制命令
自动清除标志位
11个输出参数
状态位解析
3. 按钮控制流程图
稳定
抖动
按下
释放
按下
就绪
未就绪
按下
否
是
是
否
是
否
是
否
是
否
系统启动
按钮控制初始化
按钮扫描
5ms间隔
消抖处理
10ms
事件检测
急停按钮?
复位按钮?
启动按钮?
急停处理
伺服紧急停止
等待2秒
开启气阀释放工件
等待2秒
设置急停状态
清除急停状态
架构状态检查
伺服回原点
启动条件检查
系统就绪?
机器运行中?
急停激活?
气阀状态检查
气阀开启?
关闭气阀夹紧
启动伺服
等待2秒
启动成功?
设置运行状态
开启气阀释放
4. Modbus通信时序图
上位机
STM32 MCU
伺服驱动器1
伺服驱动器2
系统启动 - 初始化阶段
写入P3_001(波特率)
ACK
写入P3_002(协议类型)
ACK
批量写入P6组参数(21个)
ACK
正常运行 - 状态机循环
03H读取P6参数[0-20]
参数值
10H写入差异参数
ACK
alt
[发现参数差异]
10H写入控制寄存器
ACK
alt
[有控制命令]
03H读取转子速度
速度值
03H读取回授位置
位置值
03H读取状态字
状态值
loop
[每100ms周期]
上位机通信
03H读取状态数据
状态值
10H写入控制参数
ACK
地址透传处理
转发到站1
响应
转发到站2
响应
alt
[P6组地址(站1)]
[站2信息地址]
最终响应
loop
[按需通信]
错误处理机制
重试计数+1
重新发送
重置状态机
alt
[重试次数<3]
[重试失败]
alt
[通信超时]
上位机
STM32 MCU
伺服驱动器1
伺服驱动器2
5. 系统安全互锁流程图
激活
未激活
运行中
bo_zeroSpeed=false
停止
bo_zeroSpeed=true
运行中
停止
有报警
无报警
伺服运行中
伺服停止
工件未夹紧
工件夹紧
安全检查开始
急停状态?
仅允许开阀
释放工件
伺服运行状态?
禁止所有操作
机器运行标志?
伺服报警?
允许操作
气阀操作?
伺服操作?
按钮操作?
安全气阀控制
安全伺服控制
安全按钮响应
伺服-气阀互锁
气阀锁定
气阀自由
气阀-伺服互锁
伺服锁定
伺服自由
安全操作执行
操作被拒绝
安全检查结束
6. 系统启动时序图
000ms
000ms
000ms
000ms
000ms
000ms
000ms
000ms
000ms
000ms
000ms
HAL_Init
UART配置
定时器配置
看门狗配置
内核初始化
Modbus寄存器初始化
GPIO配置
任务创建
调度器启动
按钮控制初始化
LED调试初始化
从站适配器初始化
互斥锁创建
等待伺服启动
通信参数安装
初始参数写入
任务调度
状态机循环
Modbus使能
硬件初始化
FreeRTOS启动
业务模块初始化
伺服系统初始化
正常运行
系统启动时序图
7. 错误处理和恢复流程图
通信超时
参数异常
硬件故障
系统异常
小于3次
大于等于3次
是
否
有效
无效
是
否
正常
异常
正常
溢出
是
否
是
否
系统错误检测
错误类型判断
通信错误处理
参数错误处理
硬件错误处理
框架错误处理
重试次数检查
重新尝试通信
重置通信状态机
通信恢复?
恢复正常运行
重新初始化
参数验证
范围检查
更新参数
拒绝参数
错误响应
硬件状态检查
关键硬件?
安全停机
隔离故障模块
进入急停状态
降级运行
系统健康检查
互斥锁状态
任务状态检查
重置互斥锁
栈溢出检查
看门狗检查
栈错误处理
初始化成功?
安全模式
故障监控
自动恢复?
人工干预
错误处理完成
总结
以上流程图和时序图详细展示了系统的各个关键流程:
整体架构图
: 展示了系统的分层结构和模块间关系
状态机流程
: 详细描述了伺服控制的核心逻辑
按钮控制流程
: 展示了安全相关的用户交互逻辑
通信时序
: 说明了Modbus双重角色的通信机制
安全互锁
: 展示了多重安全保护机制
启动时序
: 描述了体系的初始化过程
错误处理
: 展示了系统的容错和恢复能力
posted @
2025-09-13 12:43
yjbjingcha
阅读(
11
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
公告