PAS一个轻量型MES系统

PAS线控系统介绍

PAS是基于ISA 95标准研发的生产线实时控制系统,可以有效的协助MES回答客户下述几个关键的生产问题:
如何生产
可以生产什么
在什么时间生产什么
在什么时间已生产什么



前言

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


一、PAS环境

系统平台

本系统时基于.NET Core + Vue +Sql Server +node-red平台研发。

软件环境

网络服务器操作系统: Windows Server 2012 R2
数据库系统: SqlServer关系型数据库.
网络终端操作系统: Windows 7以上
单机应用操作系统: Windows 7以上
工业控制器:西门子,倍福,基恩士,三菱

开发工具

Visual Studio 2019、 Visual Studio Code 2019、Sql Server2017

系统架构

系统采用表述三层架构,UI层、业务逻辑层、数据引擎

二、功能介绍

1.模块总览

权限管理
基础信息管理
工单管理
设备管理
设备点检和维养
工艺路径管理
生产管理
物料管理
工具管理
追溯
质量管理
SOP管理
仓库管理
文档管理
日志

2.功能简介

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

项目已经在多家大型公司应用,经过重复迭代应用,未来也会不端的完善,希望能多多收到大家的建议。后续将会将在Github上创建开源项目。
相关视频

PAS总览

工单管理


设备管理 - ZL PAS System

对于感兴趣的朋友可以访问如下地址http://1.15.141.193:8001

账号GUEST 密码GUEST

<think>嗯,用户想开发一个轻量级的本地MES系统。首先我需要明确MES系统的主要功能。MES是制造执行系统,主要负责生产管理,包括生产调度、设备监控、质量管理、数据采集这些模块。因为是轻量级,所以可能需要简化一些复杂的功能,专注于核心模块。 接下来要考虑技术选型。用户需要本地部署,所以数据库可能需要用SQLite或者MySQL这样的关系型数据库,方便数据管理。后端的话,Python的Flask框架比较轻量,适合快速开发。前端可以用Vue.js或者React,不过如果用户希望更简单,可能直接用HTML加JavaScript,或者考虑使用桌面应用框架如Electron,这样打包成客户端应用更方便。 然后,模块设计方面,可能需要分几个部分:生产订单管理、设备监控、质量管理、数据采集和报表。每个模块需要对应的数据库表结构设计。比如生产订单表需要订单号、产品型号、数量、状态、时间等字段。设备监控表可能需要设备ID、状态、时间戳。质量管理涉及缺陷记录,数据采集则要记录生产数据。 权限管理也是必要的,不同角色的用户访问权限不同,可能需要用户表来区分角色。不过轻量级系统可能只需要基本的用户登录和权限控制,比如分管理员和操作员两种角色。 接下来考虑代码实现。后端用Flask搭建RESTful API,处理前端请求,操作数据库。比如创建订单的接口,获取设备状态的接口,提交质量检测结果的接口。前端可以用简单的HTML页面配合Ajax请求数据,或者用Vue.js来构建更动态的界面。 数据库部分,使用SQLite的话,连接和操作都比较简单,适合轻量级应用。比如用SQLAlchemy作为ORM工具,方便管理表结构和查询。需要创建User、ProductionOrder、Equipment、QualityInspection这些模型。 在设备监控模块,可能需要定时轮询设备状态,或者通过传感器实时获取数据。如果是模拟的话,可以在后端写一个定时任务,随机生成设备状态的变化。数据采集可以通过API接收来自设备端的数据上传,比如POST请求发送生产数量、时间等信息。 质量管理需要记录缺陷数据,可能包括缺陷类型、数量、处理措施等。前端页面可以提供一个表单,让用户输入这些信息,提交到后端存储。报表生成可能需要使用图表库,比如ECharts或Chart.js,在前端展示生产数据的统计结果,比如每日产量、设备利用率、缺陷率等。 安全性方面,需要考虑用户认证,比如使用JWT令牌,保护API接口,防止未授权访问。同时,数据库需要做好备份,避免数据丢失。 部署方面,由于是本地系统,可能需要打包成可执行文件,比如使用PyInstaller将Python后端打包,或者用Electron整合前端和后端,方便用户安装使用。 测试时,需要确保各个模块的功能正常,比如创建订单后状态是否正确更新,设备状态变化能否实时显示,质量数据是否能正确记录和查询。性能方面,由于是轻量级,应优化数据库查询,避免数据量过大时的延迟。可能的挑战包括实时数据更新的实现,设备接口的兼容性,以及用户权限管理的细粒度控制。需要根据实际需求调整功能,保持系统简洁高效。 现在,根据这些思考,整理出一个结构化的解决方案,包含技术选型、模块设计、代码示例等,并给出相关问题供用户进一步考虑。</think># 轻量级本地MES系统开发方案 ## 技术选型建议 ```python 技术栈 = { "前端": "Vue.js + ElementUI 或 Electron(桌面应用)", "后端": "Python Flask/Django FastAPI", "数据库": "SQLite/MySQL/MariaDB", "通信协议": "RESTful API + WebSocket(实时更新)", "报表引擎": "Jinja2 + PDFKit 或 ECharts", "部署方式": "Docker容器化打包" } ``` ## 核心模块实现示例(Flask+SQLite) ### 1. 数据库模型设计 ```python # models.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class ProductionOrder(db.Model): id = db.Column(db.Integer, primary_key=True) order_number = db.Column(db.String(50), unique=True) product_code = db.Column(db.String(100)) quantity = db.Column(db.Integer) status = db.Column(db.String(20)) # 待生产/生产中/已完成 start_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime) class Equipment(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) status = db.Column(db.String(20)) # 运行/停机/维护 last_maintenance = db.Column(db.DateTime) class QualityInspection(db.Model): id = db.Column(db.Integer, primary_key=True) order_id = db.Column(db.Integer, db.ForeignKey('production_order.id')) defect_type = db.Column(db.String(100)) defect_count = db.Column(db.Integer) inspector = db.Column(db.String(50)) ``` ### 2. 生产订单API示例 ```python # app.py from flask import Flask, request, jsonify app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mes.db' db.init_app(app) @app.route('/api/orders', methods=['POST']) def create_order(): data = request.json new_order = ProductionOrder( order_number=data['order_number'], product_code=data['product_code'], quantity=data['quantity'], status='pending' ) db.session.add(new_order) db.session.commit() return jsonify({"message": "Order created"}), 201 @app.route('/api/orders/<int:order_id>/start', methods=['POST']) def start_production(order_id): order = ProductionOrder.query.get_or_404(order_id) order.status = 'in_progress' order.start_time = datetime.now() db.session.commit() return jsonify({"message": "Production started"}) ``` ### 3. 实时看板示例(WebSocket) ```python # websocket.py from flask_socketio import SocketIO, emit socketio = SocketIO(app, cors_allowed_origins="*") @socketio.on('request_update') def handle_update_request(): orders = ProductionOrder.query.all() equipment = Equipment.query.all() emit('data_update', { 'orders': [o.serialize() for o in orders], 'equipment': [e.serialize() for e in equipment] }) ``` ## 系统架构设计 ``` 客户端(浏览器/Electron) ↑↓ HTTP/WebSocket Flask API 服务层 ↑↓ SQLAlchemy ORM SQLite 数据库 ↑ 硬件接口层(可选RS232/OPC UA) ``` ## 部署方案 1. 使用PyInstaller打包Python后端为exe 2. 前端使用Electron打包为桌面应用 3. 数据库文件存储在本地目录 4. 配置文件采用JSON格式 5. 使用Inno Setup创建安装包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joey joy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值