基于NXP i.MX RT1050主控板的恒温恒湿控制系统

基于NXP i.MX RT1050主控板的恒温恒湿控制系统,第1张

系统共分为四部分:
信号采集,执行机构输出,显示器,主控板(i.MX RT1050评估板

主控板和其他模块采用modbus进行连接。共有2路串口,UART2连接PC,UART3连接信号采集和输出。

演示程序采用rttread *** 作系统,包含以下功能:
1、modbus主机采集信号
2、modbus主机输出信号
3、modbus从机连接PC显示
4、温度湿度计算
5、温湿度输出控制
基于NXP i.MX RT1050主控板的恒温恒湿控制系统,234604yz2wwf6kimkii4c2.png.thumb.jpg,第2张
待进一步完成,历史数据记录,导出以及图像输出。

输入信号包含设备温度、湿度
输出信号包括加热、加湿、制冷、除湿

调节原理:高温或高湿度采用PID调节,低温或低湿度启动压缩机制冷、除湿。控制要求允许波动较大时,压缩机可采用切换工作制以节省能源并延长设备寿命,切换式调节由程序根据温湿度的波动情况调节开关压缩机的温湿度点。

PC端显示使用昆仑通泰组态软件,采用modbus连接主控系统。



系统的关键是实现多通道modbus管理,包括主机和从机。从机相对简单,只需处理接收到的报文即可。主机相对复杂,要能够处理静态命令和突发命令,其中静态命令在机器空闲时一直轮询执行,比如获取温湿度值,发送输出值给执行模块等;突发命令只在需要执行时执行一次,比如开关机,复位从设备等。

主机使用缓冲池来存放用户请求的命令,Poll函数自动处理缓冲池中的命令

缓冲池结构如下
    0                                                      mbSCBuffSize                                          mbCBuffSize
    |                                                           |                                                     |
| Buff0 | Buff1 | Buff2 |  ....  | Buff[mbSCBuffSize-1] | Buff[mbSCBuffSize] | Buff[mbSCBuffSize+1] |  ....  | Buff[mbCBuffSize]|
    |                                       |                   |                                                     |
   静态                                    静态                动态                                                  动态
   缓冲                                    缓冲                缓冲                                                  缓冲
   起始                                    结束                开始                                                  结束

扫描顺序:
先扫描动态区,从上次处理的位置开始,命中后退出。若扫描完整个动态区都没有命中,开始扫描静态区                              
扫描静态区,方法同动态区。
两个区域的区别在于:动态区的命令处理后会被清除,而静态一直保持就绪状态。




-------------- 状态机过程 ---------------------------
从机:
RX-IDLE&TX-IDLE -> RX-RCV&TX-IDLE -> RX-RCVEND&TX-IDLE -> RX-IDLE&TX-SEND -> RX-IDLE&TX-IDLE

主机:
RX-IDLE&TX-IDLE -> RX-RCV&TX-SEND -> RX-RCV&TX-IDLE -> RX-RCVEND&TX-IDLE -> RX-IDLE&TX-IDLE

为尽量兼容其他设备,接收处理施加延时:

对于含 *** 作系统的应用,可以在数据发送函数添加任务延时即可。

对于不含 *** 作系统的应用--
主机模式在接收结束后延时处理即可。
从机接收到非本机地址直接处理,接收到本地地址延时处理。

配置两通道modbus,一路主机连接模块,一路从机连接上位机。
  1.     //作为主机连接下位模块
  2.     mb02_Init(MB_RTU_MASTER, mb_baud_tab[MB_BAUD_38400], MB_PAR_NONE);
  3.     mb.obj02.SlaveId = 1;
  4.    
  5.     //作为从机连接PC
  6.     mb03_Init(MB_RTU_MASTER, mb_baud_tab[MB_BAUD_38400], MB_PAR_NONE);
  7.     mb.obj03.SlaveId = 1;

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2460761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存