第五章 系统软件设计
5.1 显示系统主程序
本温度湿度显示系统主要测试的是室内环境的温湿度,不需要进行温、湿度的实时控制,因此系统对温、湿度显示精度的要求不是很高,为了省去繁琐的数据采样、滤波等处理程序,本设计采用定时1S进行数据读入方式,从而简化了程序的设计,提高了程序运行的可靠性。
N 时间校正? 初始化过程 开始 Y
N
定时时间到? 时间校正 Y
LED显示 时间读取 温湿度读取 图11显示系统主程序基本流程图
5.1.1 温度读入子程序
由于本温度、湿度监测与显示系统主要工作在室温范围内,因此温度测量显示范围确定在-25℃~+55℃之间,温度安全范围设定为-10℃~+30℃,当超过这
22
个范围时进行报警。集成温度传感器LM35测量的温度数据信号(直流电压信号-250mV~550mV)经过模拟量输入模块输入,经模块内部的A/D转换成12位数据存放在寄存器之中,在经过内部程序对数据进行处理和运算后,再输入到规定的数据存储器之中以备其他程序的调用。具体温度读入子程序流程图如图5-2。
数据转换成实数 是正数? N
子程序0结束 数据存储 数据处理及运算 数据存储 Y 读入温度值到AC0 初始化(清AC0) 子程序2开始 转换为正数 数据处理及运算 图12 温度读入子程序流程图
5.1.2 湿度读入子程序
湿度的读入程序的大体流程和温度的原理基本相同如下图5-3,这里不再赘述。集成湿度传感器HM1500的测量范围为(0~100%RH)输出电压范围(+1~+4V)输出电压信号与相对湿度之间的计算关系(Ta=+23℃时)为:
23
U。=1.079+0.2568RH 公式(5-1)
集成湿度传感器一般都需要温度补偿,当温度不是+23℃时,HM1500温度补偿公式为:
RH??RH?[1?2.4(TA?23)e?3] 公式(5-2)
子程序3开始 初始化(清AC0) 数据处理及运算 温度校正(数据计算) 温度报警? N Y Y
子程序1结束 数据转换及存储 报警处理 图13 湿度读入子程序流程图
5.1.3 显示子程序
由于测温范围设定在-25℃~55℃,因此温度显示需要使用三个LED数码管,两位进行数据显示,一位进行符号位显示,居中的“-”表示负号,此位LED数码管还兼有温度和湿度报警的作用,当温度超过允许的设定范围时LED最上面的“-”进行闪亮显示,湿度超过设定范围时最下面的“-”进行闪亮显示。
24
AC1、AC0+1 显示延时1~5ms 送位选 送段选码到QB0 送首地址给AC1 初始化清AC0、AC1 子程序4开始 N Y
显示最后一位LED 16次? Y 子程序4结束
图14 湿度读入子程序流程图
因此,本设计的这位LED数码管通过PLC的一个输出口Q1.4和74LS06进行连接后单独来驱动。程序流程图如图5-4所示,显示缓冲区设定在以变量存储器VB100开始的存储区域内。 5.1.4 实时时钟指令
S7-221和S7-222没有内置的实时时钟功能。S7-224和S7-226内置的实时
25
时钟内容用超级电容来保持。保持时间的典型值为190小时最少120小时。可用电池卡来延长断电保持的时间。
运用PLC.内部的功能指令读实时时钟指令(TODR)从实时时钟读取当前时间和日期,并装入以T为起始字节地址的8个字节缓冲区,依次存放年、月、日、时、分、秒、0、和星期。操作数T的数据类型为字节型。
设定实时时钟(TODW)指令把含有当时时间和日期的8个字节缓冲区的内容装入时钟。
本设计把时钟缓冲区设定在以变量存储器VB700开始的8个字节缓冲区,具体分配见表5.1。具体设置时钟初始化子程序和时钟读入子程序见附录。
表5.1 实时时钟缓冲区地址分配
年 VB700
月 VB701
日 VB702
时 VB703
分 VB704
秒 VB705
0 VB706
星期 VB707
5.2 程序清单
具体的程序设计(梯形图及指令标)见附录
26