一、引言
环境监测,是指环境监测机构对环境质量状况进行监视和测定的活动。环境监测是通过对反映环境质量的指标进行监视和测定,以确定环境污染状况和环境质量的高低。环境监测的内容主要包括物理指标的监测、化学指标的监测和生态系统的监测。 是科学管理环境和环境执法监督的基础,是环境保护必不可少的基础性工作。环境监测的核心目标是提供环境质量现状及变化趋势的数据,判断环境质量,评价当前主要环境问题,为环境管理服务。
实时监控与数据采集:上位机可以实时地监控远程设备的状态、运行情况、温度、压力等参数,并进行数据采集。通过对这些数据的分析和处理,操作人员可以及时了解系统的运行状况,从而做出相应的调整和决策。
此项目是为了能够使用上位机实现温湿度的数据采集、展示数据图表呈现数据以及能够控制led灯,为了能够有效验证程序的效果我们使用虚拟串口连接。
二、准备内容
上位机是一种计算机软件系统,用于监控和控制远程设备或系统。它通过与下位机建立通信连接,实时地获取和处理各种数据,并提供可视化的界面和控制功能给操作人员。上位机可以对远程设备进行监控、数据采集、参数配置、故障诊断、报警处理等操作,以实现对整个系统的综合管理和控制。我们使用visual studio2022进行代码编译,需要一个虚拟串口或者如果已经有物理串口模块,则不需要创建虚拟串口。
1、通讯协议
通讯协议上位机示例图片通常上位机和下位机通讯可以采用不同的通讯协议,可以有RS232的串口通讯或者采用RS485串行通讯。当用计算机和PLC通讯的时候,不但可以采用传统的D形式的串行通讯,还可以采用更适合工业控制的双线的PROFIBUS-DP通讯。采用封装好的程序开发工具就可以实现PLC和上位机的通讯,当然可以自己编写驱动类的接口协议控制上位机和下位机的通讯。
上位机示例图片
三、搭建串口环境
1、创建新项目
首先,我使用的是visual studio2022版本的开发工具,打开我们电脑的visual studio点击新建项目,点击Windows窗体应用程序取个名字点击确定建立环境监测项目。
2、设置界面
为了满足界面美化的需求我下载了美化界面的sunnyUI,以便我们的项目更美观。在NuGet中搜索sunnyUI下载安装,安装成功后可以看见sunnyUI的功能界面可以出现在工具箱中。
3、搭建环境
我们上位机通常提供直观的可视化界面,以展示监控数据、报警信息、设备状态等。这样的界面使得操作人员能够直观地了解系统情况,快速判断和处理异常情况,并且可以根据需要自定义显示内容和布局。所以要在工具箱中使用ui的界面设计,在ui中找到对应的温度、湿度、串口链接口、linechart图表,并创建温度、湿度、串口链接口还有呈现温湿度的数据的linechart图表。在串口编写中找到item输入我们需要的串口号。灯泡点亮我们直接在Baidu搜索一灭一亮图片放在我们的图片资源里面。
四、代码内容
(1)、我们代码使用了串口所以我们代码要码上相关的串口代码using System.IO.Ports;串口我使用的是115200。使用虚拟串口工具Virtual Serial Port Driver 虚拟出串口用于开发调试(如果已经有物理串口模块,则不需要创建虚拟串口)打开串口并添加监听事件,用于接收串口发到上位机的数据。 创建完成虚拟串口后系统就会虚拟出了两个串口COM1和COM2, 这两个串口为一个串口对,往COM1或者COM2发送数据,则另一个串口将会收到相应的数据。
(2)、由于我们的界面使用的是sunnyUI 所以我们要在代码的头部public partial class Form1 : Form添加上UI来完善我们的代码以免爆错。
(3)、为了存储我们的数据我们需要创建三个private 来存储数据、在代码中我创建了Tempe、hum来存储温湿度数据,创建led来控制灯泡亮与灭。
1、总代码呈现
private void uiButton_open_Click(object sender, EventArgs e)
{
if (serialPort !=null)
{
if (serialPort.IsOpen != true)
{
serialPort.PortName = this.uiComboBoxSerial.SelectedItem.ToString();
serialPort.Open();
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort = new SerialPort();
serialPort.BaudRate = 115200;
serialPort.DataReceived += myserialportReceive;
this.uiComboBoxSerial.SelectedIndex = 0;
}
//接收数据
private void myserialportReceive(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[5];
int count= serialPort.Read(data, 0, 5);
if(count != 5)
{
return;
}
if(data[0]!=0x55|| data[4] != 0xaa)
{
return;
}
temp = data[1];
hum = data[2];
Led = data[3];
this.Invoke(new Action(() =>
{
this.uiTextBoxTemp.Text = temp.ToString();
this.uiTextBoxhum.Text = hum.ToString();
if (Led == 0)
{
this.pictureBox1.Image = Properties.Resources.LED_OFF;
}
else
{
this.pictureBox1.Image = Properties.Resources.LED_ON;
}
}));
}
private void uiButton_close_Click(object sender, EventArgs e)
{
if(serialPort != null)
{
serialPort.Close();
}
}
6、将代码启动后我们将得到一个完整的项目:
可以使用虚拟串口进行配对实现我们项目所需要的项目要求
7、项目效果呈现:
我们在温湿度中输入数据打开串口匹配,可以在图表中看见对应的温湿度的曲线数据值。现代的上位机系统支持远程访问和移动访问功能,使得操作人员可以通过互联网或移动设备实现对系统的监控和控制。这样,即使不在现场,操作人员也能够随时随地监控和管理远程设备。
上位机作为一种用于监控和控制远程设备或系统的计算机软件系统,提供了实时监控、数据采集、远程控制、报警与故障诊断、数据分析与优化等功能。它在工业自动化和其他领域中发挥着关键作用,提高了系统运行效率、安全性和可靠性,帮助用户做出及时的决策和调整。
总之,上位机作为一个独立的计算机,具有更强大的处理能力和更广泛的通讯接口,不仅可以完成对下位机的控制和监测,还可以对生产过程进行分析和优化控制,具有重要的应用价值。