文章目录
背景
在非标设备里,经常需要用到mes上传数据给客户服务器,然而不同的客户需求不同,即便是同一个客户,也经常改动接口,随之而来的就需要经常改动设备代码,为了降低设备软件和客户mes服务器之间的强耦合,在非标设备和客户 MES 服务器之间添加 RabbitMQ 中间层,实现生产数据上传和指令接收,同时避免对设备代码进行大幅修改。但是不能完全避免修改设备代码。
整体架构概述
此方案的核心是在非标设备软件和客户 MES 服务器之间引入 RabbitMQ 作为中间层。非标设备将生产数据上传至本地数据库,然后由数据同步模块从数据库中读取数据并发送到 RabbitMQ。客户 MES 服务器从 RabbitMQ 接收数据。同时,MES 服务器可以将启动、暂停等指令发送到 RabbitMQ,设备端的指令接收模块从 RabbitMQ 接收这些指令并执行相应操作。
方案详细步骤
1. 数据库选型与搭建
- 选型:根据设备数据量和性能需求,选择合适的数据库。如果数据量较小且对实时性要求不高,可以选择 SQLite;如果数据量较大且需要高并发处理,建议选择 MySQL 或 PostgreSQL,sqlserver。
- 搭建:安装并配置所选数据库,创建相应的数据库和表来存储生产数据。以下是一个使用 MySQL 存储生产数据的示例 SQL 脚本:
-- 创建数据库
CREATE DATABASE device_data;
-- 使用数据库
USE device_data;
-- 创建产能表
CREATE TABLE production_capacity (
id INT AUTO_INCREMENT PRIMARY KEY,
device_id VARCHAR(50),
capacity INT,
record_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建报警信息表
CREATE TABLE alarm_info (
id INT AUTO_INCREMENT PRIMARY KEY,
device_id VARCHAR(50),
alarm_message TEXT,
alarm_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建运行状态表
CREATE TABLE running_status (
id INT AUTO_INCREMENT PRIMARY KEY,
device_id VARCHAR(50),
status VARCHAR(20),
status_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 设备端数据上传至数据库
- 修改设备代码:在不进行大幅修改的前提下,在设备代码中添加将生产数据插入数据库的逻辑。以下是一个使用 Python 和 MySQL 数据库的示例代码:
import mysql.connector
# 连接数据库
mydb = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",

最低0.47元/天 解锁文章
2262

被折叠的 条评论
为什么被折叠?



