简介
电子秤作为现代工业生产和商业流通中的核心计量设备,其准确性直接关系到产品质量和交易公平。针对仙贝生产企业的电子秤管理需求,我们开发了一套集电子秤检测信息录入、产品信息管理、实时称重数据采集和后台可视化大屏于一体的综合管理系统。该系统基于Django框架构建,支持双杰G&G和上海寺冈两大品牌电子秤的通信协议对接,实现了从数据采集到可视化展示的完整解决方案。
一、电子秤通信协议对接与数据采集
电子秤检测管理系统流程图:
电子秤数据采集是整个系统的基础环节,需要正确理解并实现不同品牌电子秤的通信协议。双杰G&G电子秤主要采用RS232串行通信协议,其参数设置和数据格式均有明确规范。根据技术文档,双杰电子秤的RS232参数配置为波特率600-9600可设置(出厂默认600),8位数据位,1位停止位,无校验位。数据输出格式固定为14位ASCII码,包含符号、数值、单位及换行符。例如,显示123.45g时,输出数据为□□□123.45□g□↓←,符号位为空格表示非负数,负数则显示为"-"。为实现数据采集,我们编写了Python脚本,通过串口读取并解析这14位ASCII码数据,然后将解析后的重量值通过API发送至后台系统。
上海寺冈电子秤则提供了两种通信方式:RS232和TCP-IP。RS232参数与双杰类似,但其TCP-IP通信方式更为先进,支持局域网数据传输。根据寺冈电子秤的TOP2000软件使用指南,需在电子秤的设置模式下配置IP地址(如192.168.0.135)和端口号。我们设计了一个通用的网络通信模块,通过TCP/IP协议与寺冈电子秤建立连接,实现数据的实时采集和传输。对于两种不同品牌的电子秤,我们分别编写了适配器类,统一了数据采集接口,确保系统能够兼容不同品牌设备。
二、检测信息录入模块开发
检测信息录入模块是系统的核心交互界面,需要支持手动录入电子秤的检测时间、负责人、编号、校验周期,并保存校验记录。我们采用了Django框架的表单系统来实现这一功能。首先定义了检测记录模型,包含检测时间、负责人、电子秤编号、校验结果、下次检测时间等字段:
class ScaleDetectionRecord(models.Model):scale = models.ForeignKey(Scale, on_delete=models.CASCADE)detection_time = models.DateTimeField()responsible_person = models.ForeignKey(User, on_delete=models.CASCADE)cycle = models.CharField(max_length=50)next_detection_time = models.DateTimeField()is_valid = models.BooleanField(default=True)
针对校验周期的计算,我们实现了Python自定义校验周期计算逻辑,通过datetime
模块和dateutil.relativedelta
库将自定义周期(如"3个月")转换为下次检测时间:
from dateutil.relativedelta import relativedeltadef calculate_next_detection_time(base_time, cycle):if cycle == '1 month':return base_time + relativedelta(months=+1)elif cycle == '3 months':return base_time + relativedelta(months=+3)elif cycle == '6 months':return base_time + relativedelta(months=+6)elif cycle == '1 year':return base_time + relati