资料下载: https://download.csdn.net/download/vvoennvv/88499366
一、概述
使用STM32F103芯片,根据状态机处理事件的锅炉控制器的项目,支持外设自检、文件存储、Modbus RTU通信、采集热电偶、采集直流模拟量、采集水温、采集炉温、开关量输入、拨码开关查询、看门狗等功能。
二,软件设计
1. 上电运行后,首先检测急停按钮是否按下,如按下,停止所有IO输出。急停按钮需要一个IO输入点,正常时为ON, 按下后为OFF.
2. 传感器故障: 检测传感器测温是否异常,传感器是否断线,如未出现故障程序向下执行,否则输出一个传感器故障位ON(内部寄存器),并使报警位ON(IO输出端)。(要定下来几路传感器,不然没法判断哪路故障)
3. 炉温超温:传感器实测温度与设定的超温值比较,如未超过,程序向下执行,否则输出一个超温故障位ON(内部寄存器),并使报警位ON(IO输出端)。
4. 炉体超温:检测定义好的某IO输入端,如为OFF,程序向下执行,否则输出一个炉体超温故障位ON(内部寄存器),并使报警位ON(IO输出端)。
5. 自动/手动(本地):检测定义好的某个IO输入端,如为ON,程序执行手动状态,否则执行自动状态。
5.1 本地手动:检测定义好的IO输入端(1#启动),如为ON,将此状态保持,使1#输出位ON。(此功能执行方式为:1#启动按钮按下,同时1#停止为OFF,并且传感器实测温度低于可设定的炉温上限值,将此状态保持,并输出给定义好的IO端,如停止按钮按下,或温度大于上限,将状态复位,停止IO输出。 *共有12路输出,按钮均为点动控制)
5.2 本地自动: 程序向下执行。
6. 自动/手动(屏幕): 由触摸屏来控制某个定义好的内部寄存器,如为ON进入屏幕手动状态,否则进入自动运行。 控制过程同上, 1#启动,1#停止……….12#停止,均使用定义过的内部寄存器,由触摸屏控制。
7. 自动运行: 检测是否在允许加热的时间内。
*时间控制方式: 使用峰平谷/自定义两种控制方式,下附触摸屏截图:
8. 如实际温度低于设定下限, 并且低于设定上限,将此状态保持。依次进行IO输出
9. 如实际温度大于等于上限后,将状态复位,依次停止IO。
IO依次输出:如此功能开启,按照触摸屏指定时间,依次进行1.#到12#输出。
IO依次停止:如此功能开启,按照触摸屏指定时间,依次停止1#到12#。
附:
A:峰平谷,自定义,通过改变某寄存器状态进行切换(ON为自定义,OFF为峰平谷),峰平谷中,定义每段时间后,通过开启位,使该段生效。 同时,应有:峰 平 谷 的选择按钮,只有选择该按钮后,这一时期的设置才最终生效。
B: 炉温连续采集,有连接采集和间隔采集两种温度采集方式,如选择间隔采集,在屏幕设定时间内间隔采集。
C:加热器路数设定:设备共有12路加热。在自动运行中,应有每一时段开启的路数选择。**加热器不能出现同时启动,或同时停止的情况,只可以依次启停。
D:如果循环泵停止,不允许加热器输出。(循环泵为定义的IO输入端)
E:报警器应有测试,开启\关闭功能。
三,原理图和PCB
四,总结
一个学习STM32不可多得的项目,通过该项目可以熟悉STM32各种片内资源的使用。