煤矿井下安全生产监测系统协议设计与实现

1 项目描述

(1)项目背景:

煤矿井下生产环境恶劣,为保障井下人员的安全,需要实时对井下各种环境因素进行监控。监控数据主要分为两大类,模拟量和开关量。模拟量包括甲烷、瓦斯、氧气、一氧化碳、二氧化碳和温度等,而开关量涉及通风风机、设备运行状态和馈电传感器等。这些数据通过上位机和下位机之间的网络通信进行传输和处理。

(2)项目目标:

  1. 设计并实现一个适用于煤矿井下安全生产的监测系统协议,确保上位机和下位机之间的可靠通信。
  2. 实现传感器数据的定时采集和上传,包括甲烷检测传感器、温度测量传感器和氧气检测传感器的模拟量数据,以及通风风机和煤矿设备的开关状态。
  3. 根据控制规则,对上传的数据进行处理,控制传感器的工作状态,以保障安全生产。
  4. 保持上位机和下位机的时间同步,确保数据时间戳的准确性。
  5. 实现数据确认机制,确保上位机发出的控制指令被正确执行。

2 任务分析

系统分为上位机(计算机)和下位机(嵌入式系统),通过网络通信。下位机连接各种传感器,并设置多个继电器(进出端口,可实现对传感器的通断电),并将传感器数据定时上传到上位机(每5秒上传一次;如果传感器数值发生变化,则立即上传)。上位机收到下位机数据后,要显示收到的各个传感器的数值或者状态,并且根据控制规则向下位机传输控制数据,从而对各个传感器进行控制。

下位机可采集到甲烷检测传感器(16bit)、温度测量传感器(8bit)、氧气检测传感器(8bit)的模拟量数据,以及主备两台风机开关状态;井下开采设备、煤矿传输设备的馈电传感器开关状态的开关量。下位机连接了各继电器,可控制井下开采设备、传输设备、风机设备的通电。

(1)井下通风风机分为主备,两者不能同时处于关闭状态。若上位机检测到两个通风风机同时为关闭状态,需要立即报警。

(2)甲烷浓度超过预警值时,上位机提示报警;继续上升超过断电阈值时,通知下位机相应的继电器工作(开采设备、传输设备断电),并检测对应的馈电传感器是否有电(如断电失败),上位机要立即报警。

(3)井下温度过高或氧气浓度过低,需要同时开启两个通风风机,待温度和氧气浓度适宜,关闭备用风机,保持主风机开启。

(4)系统需要上位机和下位机保持时间同步。如果下位机传来的数据(其中包括时间信息)中,时间误差超过2秒,要给下位机下发校正时钟命令,让下位机与上位机的时间保持一致。

(5)下位机对于上位机发来的命令,要给出确认报文,并反馈上位机的指令是否成功执行,避免服务器重传。

3 协议的设计

通信协议设计部分的代码分为上位机和下位机两部分。下位机代码主要负责模拟实时数据采集和传输,上位机代码负责接收下位机发送的数据并进行处理和响应。

(1)下位机代码中的通信协议设计部分主要包括以下内容:

  1. 创建socket对象,指定地址家族为IPv4,类型为TCP流套接字。
  2. 设置本地主机名和端口号,并通过socket对象与上位机建立连接。
  3. 通过循环实现实时数据采集和传输:
  4. 生成随机的模拟数据,包括甲烷浓度、温度、氧气浓度以及风扇和设备状态等。
  5. 将数据转换为二进制字符串,添加到发送数据包中,并通过socket对象发送给    上位机。
  6. 接收上位机的响应数据,并根据响应数据进行相应的处理,如判断是否需要断电或开启备用风扇等。
  7. 根据处理结果更新发送数据包,并重新发送给上位机。

(2)上位机代码中的通信协议设计部分主要包括以下内容:

  1. 创建socket对象,指定地址家族为IPv4,类型为TCP流套接字。
  2. 设置本地主机名和端口号,并绑定端口号,用于监听客户端的连接请求。
  3. 使用循环持续监听客户端的请求:

①接收客户端发送的数据,并将接收到的数据解码为字符串。

②根据数据包中的信息,提取甲烷浓度、温度、氧气浓度以及风扇和设备状态等信息。

③进行数据处理和判断,如判断甲烷浓度是否超过预警值或断电阈值,判断氧气浓度和温度是否异常等。

④根据判断结果进行相应的操作,如发送断电指令给下位机、发送开启风扇指令给下位机等。

⑤根据操作结果更新发送数据包,并发送给下位机。

⑥根据需要发送当前时间给下位机,以同步时间。

⑦打印相关信息,如甲烷浓度、温度、氧气浓度、设备状态、时间等。

综上所述,通信协议设计部分的代码主要涉及数据包的构建、解析和处理,以及根据协议执行相应的操作和响应。通过约定的数据格式和控制指令,上位机和下位机可以进行稳定的通信,并能够准确地传输和处理数据。

4 项目主要流程

(1)通信协议设计:

  1. 设计一个适用于煤矿井下环境的通信协议,确保上位机和下位机之间的稳定通信。
  2. 定义数据包的格式、控制指令集、数据校验等内容,以确保数据的准确性和可靠性。

(2)代码模拟硬件连接与配置:

  1. 根据需求用代码定义各种传感器和继电器,确保它们能够正常工作并与下位机通信。
  2. 编写下位机的网络通信模块代码,使其能够与上位机进行可靠的通信。

(3)数据采集与上传:

  1. 编写代码实现传感器数据的定时采集,包括模拟量和开关量数据的处理。
  2. 设计数据上传机制,确保数据能够准时且准确地传送到上位机。

(4)控制逻辑实现:

  1. 根据背景介绍和控制规则,设计并实现控制逻辑,以处理传感器数据和控制设备的状态。
  2. 实现报警机制,当出现异常情况时及时发出警报提示。

(5)时间同步机制:

  1. 设计并实现时间同步机制,确保上位机和下位机的时间保持一致。
  2. 当下位机的时间误差超过2s,自动校正时间,并确保数据的时间戳准确。

(6)数据确认机制:

  1. 实现数据确认机制,确保上位机发出的控制指令被下位机正确执行。
  2. 设计反馈机制,使上位机能够及时得知指令的执行状态,避免服务器重传。

5 项目的实现

(1)下位机启动:

创建一个socket对象,并指定地址家族为IPv4,类型为TCP流套接字;获取本地主机名作为客户端的标识;设置端口号,与上位机设置相同;连接上位机的服务,指定主机和端口。

进入无限循环,模拟实时数据采集和传输:

生成随机的模拟数据,包括甲烷浓度、温度、氧气浓度、风扇和设备状态等;

井下通风风机分为主备,两者不能同时处于关闭状态。若上位机检测到两个通风风机同时为关闭状态,需要立即报警。将数据转换为二进制字符串,并添加到发送数据包中;通过socket对象将数据包发送给上位机;

接收上位机的响应数据,并根据响应数据进行相应的处理;根据处理结果更新发送数据包,并重新发送给上位机;通过延时等待,模拟实时数据采集和传输的时间间隔。

(2)上位机启动

进入无限循环,持续监听客户端请求:

接收客户端发送的数据,并解码为字符串;提取甲烷浓度、温度、氧气浓度、风扇和设备状态等信息;进行数据处理和判断,根据情况发送指令给下位机或响应客户端。

进行数据处理和判断,根据情况发送指令给下位机或响应客户端。打印相关信息,如甲烷浓度、温度、氧气浓度、设备状态、时间等。

甲烷浓度超过预警值时,上位机提示报警;继续上升超过断电阈值时,通知下位机相应的继电器工作(开采设备、传输设备断电),并检测对应的馈电传感器是否有电(如断电失败),上位机要立即报警。

井下温度过高或氧气浓度过低,需要同时开启两个通风风机,待温度和氧气浓度适宜,关闭备用风机,保持主风机开启。

(3)系统需要上位机和下位机保持时间同步。如果下位机传来的数据(其中包括时间信息)中,时间误差超过2秒,要给下位机下发校正时钟命令,让下位机与上位机的时间保持一致。

如果没有进行过任何操作,则直接发送数据给客户端,并打印"数据正常"。

(4)下位机对于上位机发来的命令,要给出确认报文,并反馈上位机的指令是否成功执行,避免服务器重传。

0 0 00 0000000000000000 00000000 00000000 0 0 0 0 0000000000

  1. 第一个0代表馈电传感器断电是否处理。
  2. 第二个0代表风扇开不开。
  3. 第三、四个0代表:正常 00;上位机传来消息后改为 01;发送确认报文11。
  4. 十六个0代表甲烷浓度,八个0代表温度,八个0代表氧气浓度。
  5. 后面两个0代表主副风扇,再后面两个0代表馈电运行,最后十个0代表时间。

6 项目实现结果

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值