系统共分为四部分:
信号采集,执行机构输出,显示器,主控板(i.mx rt1050评估板)
主控板和其他模块采用modbus进行连接。共有2路串口,uart2连接pc,uart3连接信号采集和输出。
演示程序采用rttread操作系统,包含以下功能:
1、modbus主机采集信号
2、modbus主机输出信号
3、modbus从机连接pc显示
4、温度湿度计算
5、温湿度输出控制
待进一步完成,历史数据记录,导出以及图像输出。
输入信号包含设备温度、湿度
输出信号包括加热、加湿、制冷、除湿
调节原理:高温或高湿度采用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,一路主机连接模块,一路从机连接上位机。
//作为主机连接下位模块 mb02_init(mb_rtu_master, mb_baud_tab[mb_baud_38400], mb_par_none); mb.obj02.slaveid = 1; //作为从机连接pc mb03_init(mb_rtu_master, mb_baud_tab[mb_baud_38400], mb_par_none); mb.obj03.slaveid = 1;
复制代码
//主机配置命令,独立os任务轮询。
//命令配置 端口x读取采样数据 mmb_stc_cmd_req(&mb.obj02,1, 2, fun_code_read_reg, ®hold[0], 0, 8, 0); //命令配置 端口x写输出数据至执行模块 mmb_stc_cmd_req(&mb.obj02,2, 3, fun_code_read_reg, (uint16_t*)&tempctrpar, 16, sizeof(tempctrpar)/2, 0); for(;;){ rt_uint32_t enent; if(mb.obj03.idle_time_cnt > 6000) { mb03_init(test_mode, mb_baud_tab[mb_baud_38400], mb_par_none); mmb_stc_cmd_req(&mb.obj03,6,1,fun_code_write_multiple_coil,&mb_tst.pv_r[14],0x20,16,dgus_callback); mmb_stc_cmd_req(&mb.obj03,7,1,fun_code_read_reg,&mb_tst.pv_w[16],0x22,16,dgus_callback); mb.obj03.slaveid = 1; } enent = oseventflagswait(os_obj.eid_mb , 0, rt_event_flag_or, ms_ticks(100), enent); mb_poll(&mb.obj00); mb_poll(&mb.obj02); mb_poll(&mb.obj03); mb_poll(&mb.obj04); }
复制代码
i.mx rt1050 处理速度极快,测试modbus主机短报文指令执行速度可以达到40条/s。极大降低的数据采集及执行元件执行延时,可做系统低速io扩展。
Qualcomm亮相进博会 5G生态合作加速
太阳能光伏成为未来新能源的主流形式,特斯拉联手松下联手生产太阳能电池
西门子PLC实操8步顺控编程窍门
最新黑科技来袭 很多企业开始“不务正业”
电子采购系统(SRM)可有效降低采购成本
基于NXP i.MX RT1050主控板的恒温恒湿控制系统
管理下一代开放标准车辆电子架构
超低温冰箱BDW-86L770-Y产品特点的介绍
云母电容有什么特点_云母电容的应用领域
扼流圈是什么东西呀?作用呢?
电动车要想真正普及发展,使用微型充电桩更为合理
科创板南微医学副总经理、财务总监芮晨为介绍、履历信息
民族品牌的骄傲!金立M6携手神州十一号遨游太空改写航天史篇章
LiDAR赋予无人驾驶汽车对复杂交通环境的感知能力
无人机遥感数据的处理与滑坡信息提取
区块链私有链的优点介绍
小LCD屏幕应用日渐普及,安森美半导体推出两款新的图像信号处理器
【XR806开发板试用】基于FreeRTOS的SoftAp配网实现
360F5手机上架官网 配置曝光 开售时间计日可期
用555制作的声控延时电路