这是一个自己练习的项目,模拟温室大棚温度、湿度控制系统包括模拟量转换,含PLC编程、HMI界面制作、并完成仿真练习,最终完成效果如下:

要实现的功能
- 系统启动后,自动进行温度、湿度判断,当系统检测外界实际温度、湿度不符合要求后,进行报警处理。
- 当温度低于设定最低值时,系统控制暖风机运行,直至温度符合要求后继续运行3s后停止运行。
- 当温度高于设定最高值时,系统控制冷风机运行,直至温度符合要求后继续运行3s后停止运行。
- 当湿度低于设定最低值时,系统控制加湿器运行,直至湿度符合要求后继续运行3s后停止运行。
- 当湿度高于设定最高值时,系统控制除湿器运行,直至湿度符合要求后继续运行3s后停止运行。
- 为方便操作员实时观测历史数据,系统在wincc中记录温度以及湿度变化。
- 同时为方便操作员掌握温度和湿度变化速率,设置曲线图记录数据。
难点
一是外部温度和湿度的转换,先通过NORM_X将外部温度数据做一个线性映射到我们指定的区间里,并给到一个中间值,然后再通过SCALE_X缩放,去计算这个中间值在0-100区间占比多少,最终得到实际温度,湿度同理

这里补充一个知识点,就是最大值为什么是27648?
- 一是PLC使用16位有符号整数(范围:−32768 至 +32767)表示模拟量,然后还需要还需要留15%的缓冲空间,用于识别超量程、断线、短路等异常状态
- 二是为了统一编程接口,无论硬件使用的是 8 位还是 16 位的模数转换器 (ADC),额定范围始终映射为 0 到 27648
- 三是只有西门子的PLC才是27648
其他品牌范围如下:
- 三菱:0–4000、0–12000、0–32000
- 罗克韦尔(Allen-Bradley):0–32767
- 施耐德:0–10000 或 0–32767
- 欧姆龙:0–4000 或 0–8000
二是转换后的实际温度湿度值,是根据外部监测到的温度和湿度变化而变化的,而在模拟中外部温度不会变化,那转换后的数据就一直是一个固定值了,而我们想要自主设置的是大棚内的温度,那要怎么模拟暖风机升温、冷风机降温、加湿除湿器这些设备的工作呢?所以模拟中只能修改外部监测值,同时又为了避免修改外部监测数据后,导致温度和湿度一样,所以这里做了一个计算,所以随便给个温度和湿度不一样的数来计算,比如下图中的53和33,530/27648*100=1.9,就是每秒变化1.9度,一来调升降速度,二来温度和湿度一样曲线图成一条线了
这里还需要注意的是,这里是仿真模拟所以这么做,如果有PLC实物的话,外部监测到的数据,就是输入模拟量的话得用IW64和IW66来做


三是记录wincc,记录每秒温度湿度变化的,在数据记录页用于展示

编程
程序段1-9是主程序
- 启动后,运行指示灯自保
- 转换实际温度,如上难点一
- 转换实际湿度
- 不符合设定值时运行,并在满足要求后,延迟3秒关闭暖风机
- 不符合设定值时运行,并在满足要求后,延迟3秒关闭冷风机
- 不符合设定值时运行,并在满足要求后,延迟3秒关闭除湿器
- 不符合设定值时运行,并在满足要求后,延迟3秒关闭加湿器
- 温度不达标时,报警指示灯亮
- 湿度不达标时,报警指示灯亮
程序段10-13这4段是模拟数据的变化,如果有实际PLC的话,这四段可以不用,上面难点二中己经描述清楚了
程序段14,记录wincc数据
程序段15-16,暖风机和冷风机动画循环