前言
1.上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。
2.智能温室监测系统集传感器、自动化控制、通讯、计算等技术与专家系统于一体,通过预装多种作物生长所需的适宜环境参数,搭建温室智能化软硬件平台,实现对温室中温度、湿度、光照、二氧化碳等因子的自动监测和控制。本文将介绍该系统的串口通讯部分。
串口通讯部分
项目中上位机与下位机是通过串口连接进行数据传输的,上位机可以控制温室大棚进行通风、采光等操作,这种操作属于上位机下发控制指令,数据流向从上到下;上位机还需要显示当前的温室大棚内的实时温度值,这种属于下位机上传数据,数据流向是从下到上。
如下同
我的上位机程序是用Visual Studio 2022做的,而下位机是51单片机。
因此通信协议的要求可以总结出以下几点:
1. 通信协议应包含数据流向,既要区分是下发还是上传
2. 通信协议应包含控制对象与控制值,例如控制风扇的状态为开
3. 通信协议需要包含帧头和帧尾,在本项目中使用固定帧长度
数据段名称 含义
帧头(2Byte) 固定为0xAA 0x55
数据流向(1Byte)
0x01:上位机下发
0x81:下位机上传
操作对象(1Byte)
0x01:温室灯光
0x02:温室风扇
0x03:温室当前温度
数据(2Byte) 根据操作对象不同含义有所不同
帧尾(1Byte) 固定为0x0D
定义跟下位机通讯的协议
在类中添加ReqceivedRawData方法,其参数为byte[]数组,接收来自串口的原始数据。代码如下所示。
实现灯光控制接口。
实现风扇控制接口。
实现温度读取接口。
以上其实是在课上学习的内容,这些只是一部分啦。