MySQL 数据库 智能制造生产数据实时监控实战

MySQL 数据库阿木 发布于 2025-07-08 14 次阅读


智能制造生产数据实时监控实战:基于MySQL数据库的代码实现

随着工业4.0的推进,智能制造已成为制造业发展的新趋势。实时监控生产数据对于提高生产效率、降低成本、优化生产流程具有重要意义。本文将围绕智能制造生产数据实时监控这一主题,结合MySQL数据库,通过代码实现一个简单的实时监控系统。

一、系统需求分析

1.1 系统功能

本系统主要实现以下功能:

1. 数据采集:实时采集生产设备的数据,如温度、压力、速度等。

2. 数据存储:将采集到的数据存储到MySQL数据库中。

3. 数据查询:提供数据查询功能,支持按时间、设备、参数等条件查询。

4. 数据可视化:将查询到的数据以图表形式展示,便于分析。

1.2 系统架构

本系统采用B/S架构,分为前端和后端两部分:

1. 前端:使用HTML、CSS、JavaScript等技术实现数据可视化。

2. 后端:使用Python语言,结合Flask框架和MySQL数据库实现数据采集、存储和查询。

二、技术选型

2.1 数据库

MySQL是一款开源的关系型数据库管理系统,具有高性能、可靠性、易用性等特点,适合本系统存储生产数据。

2.2 后端框架

Flask是一款轻量级的Python Web框架,具有简单易用、扩展性强等特点,适合本系统后端开发。

2.3 数据采集

本系统采用Python的`pyserial`库实现串口通信,采集生产设备的数据。

三、系统设计与实现

3.1 数据库设计

本系统采用MySQL数据库存储生产数据,设计如下表结构:

sql

CREATE TABLE `production_data` (


`id` INT NOT NULL AUTO_INCREMENT,


`device_id` VARCHAR(50) NOT NULL,


`temperature` FLOAT NOT NULL,


`pressure` FLOAT NOT NULL,


`speed` FLOAT NOT NULL,


`timestamp` DATETIME NOT NULL,


PRIMARY KEY (`id`)


);


3.2 数据采集模块

使用Python的`pyserial`库实现串口通信,采集生产设备的数据。以下是一个简单的数据采集示例:

python

import serial


import time

def collect_data(device_id):


ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) 串口配置


while True:


data = ser.readline().decode().strip()


if data:


temperature, pressure, speed = data.split(',')


timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())


insert_data(device_id, temperature, pressure, speed, timestamp)


time.sleep(1)

def insert_data(device_id, temperature, pressure, speed, timestamp):


连接数据库


import pymysql


connection = pymysql.connect(host='localhost', user='root', password='password', database='production')


try:


with connection.cursor() as cursor:


sql = "INSERT INTO `production_data` (`device_id`, `temperature`, `pressure`, `speed`, `timestamp`) VALUES (%s, %s, %s, %s, %s)"


cursor.execute(sql, (device_id, temperature, pressure, speed, timestamp))


connection.commit()


finally:


connection.close()


3.3 数据查询模块

使用Flask框架实现数据查询功能。以下是一个简单的数据查询示例:

python

from flask import Flask, request, jsonify


from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost/production'


db = SQLAlchemy(app)

class ProductionData(db.Model):


__tablename__ = 'production_data'


id = db.Column(db.Integer, primary_key=True)


device_id = db.Column(db.String(50), nullable=False)


temperature = db.Column(db.Float, nullable=False)


pressure = db.Column(db.Float, nullable=False)


speed = db.Column(db.Float, nullable=False)


timestamp = db.Column(db.DateTime, nullable=False)

@app.route('/data', methods=['GET'])


def get_data():


device_id = request.args.get('device_id')


start_time = request.args.get('start_time')


end_time = request.args.get('end_time')


query = ProductionData.query


if device_id:


query = query.filter(ProductionData.device_id == device_id)


if start_time:


query = query.filter(ProductionData.timestamp >= start_time)


if end_time:


query = query.filter(ProductionData.timestamp <= end_time)


data = query.all()


result = [{'device_id': d.device_id, 'temperature': d.temperature, 'pressure': d.pressure, 'speed': d.speed, 'timestamp': d.timestamp} for d in data]


return jsonify(result)

if __name__ == '__main__':


app.run(debug=True)


3.4 数据可视化模块

使用JavaScript和ECharts库实现数据可视化。以下是一个简单的数据可视化示例:

html

<!DOCTYPE html>


<html>


<head>


<meta charset="UTF-8">


<title>生产数据可视化</title>


<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>


</head>


<body>


<div id="main" style="width: 600px;height:400px;"></div>


<script type="text/javascript">


var myChart = echarts.init(document.getElementById('main'));


var option = {


title: {


text: '生产数据'


},


tooltip: {},


legend: {


data:['温度', '压力', '速度']


},


xAxis: {


data: []


},


yAxis: {},


series: [{


name: '温度',


type: 'line',


data: []


}, {


name: '压力',


type: 'line',


data: []


}, {


name: '速度',


type: 'line',


data: []


}]


};


myChart.setOption(option);


// 获取数据并更新图表


function fetchData() {


var xhr = new XMLHttpRequest();


xhr.open('GET', '/data?device_id=1&start_time=2021-01-01&end_time=2021-01-02', true);


xhr.onreadystatechange = function () {


if (xhr.readyState === 4 && xhr.status === 200) {


var data = JSON.parse(xhr.responseText);


var xData = [];


var temperatureData = [];


var pressureData = [];


var speedData = [];


for (var i = 0; i < data.length; i++) {


xData.push(data[i].timestamp);


temperatureData.push(data[i].temperature);


pressureData.push(data[i].pressure);


speedData.push(data[i].speed);


}


myChart.setOption({


xAxis: {


data: xData


},


series: [{


name: '温度',


data: temperatureData


}, {


name: '压力',


data: pressureData


}, {


name: '速度',


data: speedData


}]


});


}


};


xhr.send();


}


fetchData();


setInterval(fetchData, 1000); // 每秒更新一次数据


</script>


</body>


</html>


四、总结

本文通过代码实现了一个基于MySQL数据库的智能制造生产数据实时监控系统。系统采用B/S架构,使用Python、Flask、MySQL、pyserial、ECharts等技术,实现了数据采集、存储、查询和可视化等功能。本系统可为企业提供实时生产数据监控,有助于提高生产效率、降低成本、优化生产流程。

五、展望

随着物联网、大数据、人工智能等技术的发展,智能制造生产数据实时监控系统将更加智能化、高效化。未来,可以从以下几个方面进行改进:

1. 引入机器学习算法,对生产数据进行预测和分析,为企业提供决策支持。

2. 结合物联网技术,实现设备远程监控和维护。

3. 开发移动端应用,方便用户随时随地查看生产数据。

通过不断优化和改进,智能制造生产数据实时监控系统将为制造业的发展提供有力支持。