APP下载

基于WinForm的不锈钢产线云端电机故障处理系统设计

2023-04-14陈奕夫张前进

电脑知识与技术 2023年6期
关键词:云端设计

陈奕夫 张前进

摘要:在不锈钢生产过程中,机械设备有概率出现非预估的机械故障或因不锈钢板面不均导致的电机过载等现象。由于部分产线工艺复杂,产线状态需要工人去监控,在电机密集区域工人无暇顾及,出现问题需要产线工人前往对应区域的HMI处才能控制,大大增加了问题处理时间、降低了产线生产效率。与此同时,许多工业软件需要大量的“点数授权费用”,增加了小型生产线的成本。对此,文章提出一种基于WinForm的云端电机故障检测系统的设计思路,在本地及云端布置系统,将可疑数据传输至云端中进行检测处理。

关键词:WinForm;云端;故障检测处理系统;设计

中图分类号:TP311.1     文献标识码:A

文章编号:1009-3044(2023)06-0090-04

开放科学(资源服务)标识码(OSID)

0 引言

现如今,随着“中国智造2025”等一系列国家战略发展方向政策的出台,传统工厂需要逐步推进智能化建设,更新硬件设备与软件系统,以提升工厂生产线的生产效率、提高产线可靠性、减少故障排查的时间等。其中减少故障排查时间困扰着大部分的工厂。

在确保硬件设备可靠性后,故障检测软件系统也成为许多低端工厂的“痛点”,其授权费用高、应用效果不好、配置繁琐的特点使得许多工厂望而却步。编辑提出一种基于WinForm的云端电机故障处理系统,该系统检测到可疑数据的同时将数据转发至云端分析,待分析结果出现后便将控制指令返回至产线控制器,这样做的好处是减少了产线控制器的内存占用、提高了故障检测的精度、可在已投产的产线基础上增加该系统等。与此同时,该系统设计均由开源代码开发,不需要缴纳巨额的专利费用或点数费用,后期扩展性好。

WinForm是.NET开发平台对Windows Form的一种称谓,WinForm有以下几个重要特点。1)功能强大。Windows的窗体可用于设计窗体以及使用其可视控件,以创建丰富的基于Windows平台的应用程序。2)操作方便。得益于微软公司对WinForm的支持,WinForm包含着许多简易的方法函数,降低了编程人员的工作量,与此同时,编程人员也可在Nuget开源项目中获取到丰富的技术支持。3)使用安全[1]。WinForm充分利用公共语言运行库的安全特性,同时拥有内存自动管理机制,大大降低了内存泄漏等难以察觉的问题的发生概率。

1 系统设计

1.1 总体设计

设计该云端故障检测系统所使用的软件是Visual Studio Community 2022,以WinForm为C/S开发架构,选择MySQL数据库对产线本地数据实时记录以及云端数据信息持久化存储,使用Modbus TCP协议进行可编程逻辑控制器(Programmable Logic Controller,下文均写作PLC)的数据传输。

本系统由两台计算机组成,一部用于生产线数据采集,另一部作为云端服务器对可疑数据进行专业的分析。其中,产线工业控制计算机(以下简称产线工控机)可选择通过Modbus TCP或其他开源的通讯协议对可编程控制器或产线传感器进行数据监控以及采集工作;产线工控机通过单向Socket连接模式与云端服务器进行短连接。

1.2 数据采集系统设计

产线工控机与生产线PLC采用Modbus TCP连接并交互数据,或使用特定厂家定制的通讯协议进行通讯。大部分厂商的PLC均支持Modbus TCP通讯协议,以下将使用Siemens S7-1515-2PN系列PLC作为例子,演示PLC与产线工业控制计算机之间的Modbus TCP长连接。S7-1515-2PN使用Siemens TIA Portal V15.1进行软件编程,该软件提供了S7-1500系列CPU在Modbus通讯中作为主站与从站的两种功能块;在S7-1500的组态中,使用的Modbus TCP为V5.0版本,该版本需要固件V2.5版本以上支持[2]。

PLC与产线工控机使用双向连接模式,PLC使用客户端向产线工控机发送数据,工控机使用服务端接收数据;当工控机需要向PLC发送数据时,则自动建立客户端访问PLC的服務端。该双向连接模式实现了数据流收发独立,避免了收发数据串行的问题,且通讯效率高,方便日后维护,连接模型如图3所示。

其中,REQ输入端为时钟输入,上升沿触发数据的发送;CONT输入端为建立通讯使能端,输入为true时激活通讯;CONNECT输入端为连接对应服务端的地址;DATA输入端为传输数据的地址;DONE输出端为显示本次数据是否成功发送;BUSY输出端为显示数据是否发生冲突;ERROR输出端为本次数据传输是否存在问题;STATUS输出端为错误代码。

WinForm中配置Socket服务端网络通讯访问步骤如下:

1) 实例化一个线程实例,实例化一个套接字实例。

2) 绑定本机的IP和端口。

3) 对于TCP协议的通讯,由于它是面向连接的通讯方式,因此需要使用Listen方法监听连接进来的端口,待监听到连接时则使用Accept方法来返回套接字实例。

4) 进行Send/Receive操作[3]。

5) 待信息传输完毕后关闭并释放套接字实例。

6) 开启线程。

非主线程套接字与PLC客户端建立连接过程代码如下:

Thread thread = new Thread(() =>

{

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

IPEndPoint ipe = new IPEndPoint(long.Parse("127.0.0.1"), 6666);

socket.Bind(ipe);

socket.Listen(10);

socket = socket.Accept();

MessageBox.Show("Connected!");

socket.Close();

socket.Dispose();

});

thread.Start();

1.3 数据上传系统设计

产线工控机的服务端接收到来自PLC数据后,触发数据初步检验线程,判定数据是否在正常区间内,其判定流程如图5所示。

可疑数据组将存放于产线工控机的本地MySQL数据库中,其中存储可疑数据的表单字段包含DataID(数据ID,主键),MachineID(电机位置),Current(电流值),Voltage(电压值),IronLength(数据对应的不锈钢板长度)。

使用者可根据实际需求设定电机数据的正常范围以及数据采集计时器上限,可疑数据密度过大的数据组则认定为可疑数据组。当第一个可疑数据存入MySQL时,写入语句将会触发计时器记录委托,当计时器记录到一定时间后结束计时,同时会以数据密度为准则,判定是否上传至云端进行进一步的故障分析。

数据密度计算代码如图6所示。

该类使用float数组类型保存可疑数据,使用float类型数据“Normal”变量作为正常范围值的上限,遍历“SuspectNumbers”数组,当数据不符合正常区间时将计数“Count”加一,若计数值大于数组长度一半以上,则认为该组数据存在异常,触发发送数据至云端数据库函数。其中,产线工控机与云端服务器采用Socket短连接形式,采用单向Socket进行收发数据,当一个故障处理周期过后,连接将自动断开。

1.4 云端反馈系统设计

云端反馈系统包含着一个专家控制系统,专家控制系统主要指的是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的经验方法来处理该领域的高水平难题[4]。该专家控制系统会收集现场工程师针对不同故障的处理策略,在日后使用时自动适配故障处理策略。为防止新型故障的出现,该系统也预留了增加故障处理策略的接口,现场工程师可在原策略数据库的基础上添加新的故障处理策略。当专家系统无法适配对应故障处理策略时,则向现场工程师发出告警,请求手动修正故障并存储新的故障策略。

待专家系统运算完毕或工程师手动选择处理策略后,云端服务器将以原Socket链路返回数据,以保证故障处理环节顺序执行。

产线工控机接收到故障返回策略后将会建立Socket客户端用以连接PLC的服务端,其连接过程步骤如下所示:

1) 实例化一个线程,实例化一个套接字。

2) 等待套接字客户端连接至PLC服务端,若失败则激活重连机制。

3) 等待Send操作。

4) Send一个字节后,判定是否连接成功,若成功则返回故障处理策略。

5) 关闭连接,释放套接字资源[5]。

过程代码如下所示:

Thread thread = new Thread(async () => {

List heartbeat = new List();

heartbeat.Add(0x10);

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

IPEndPoint ipe = new IPEndPoint(long.Parse("192.168.99.10"), 3225);

await socket.ConnectAsync(ipe);

socket.Send(heartbeat.ToArray());

if (socket.Connected)

{

List bytes = GetTatics(status).ToList();

socket.Send(bytes.ToArray());

}

socket.Close();

socket.Dispose();

返回的故障处理策略将会在PLC上得到解析,分解成每一个电机的动作,例如停机,降低电压、电流,请求更换电机配件等。产线工控机使用客户端连接PLC上配置的服务端,服务端连接配置属性如图10所示。

其中,EN_R输入端口为程序启用端;CONT输入端为建立通讯使能端,当输入值为TRUE时将开始任意端口监听;DATA输入端为接收数据存放地址;DONE输出端为辨别当前数据是否成功接收;BUSY输出端为辨别接收数据是否冲突;ERROR输出端为辨别接收数据时是否产生错误;STATUS输出端为错误代码;RCVD_LEN为接收数据的字节长度。每接收一次完整的数据后将自动将字节数组转换成对应指令写入电机控制模块中,以此完成故障处理。

2 系统总结

产线工控机实时收集产线电机数据,检测到可疑数据的出现后将开始计数收集数据,若可疑数据密度较大则发送至云端反馈系统中分析,否则放弃该组数据;云端检测系统将可疑数据组与专家系统中的策略数据库进行比对,适配合适的故障应对策略,若没有合适的应对策略,则向现场工程师发出手动修正故障请求并将新的故障处理策略存储到策略数据库中;最后故障应对策略将通过产线工控机返还给PLC服务端接收模块,PLC通过解析字节数据组应用到产线故障电机处。

3 结束语

本文设计了一种基于WinForm框架开发的云端故障处理系统,通过Modbus TCP通讯协议实时监控电机数据,并将可疑数据通过Socket连接模式上传至云端故障处理策略库中进行比对分析,最后返回给PLC应用策略。该系统大大减少了生产线工人的工作负荷,提高了故障辨识率,一定程度上提高了产线的生产效率。在人工智能时代,本系统仅是初级的智能系统,系统架构仍未到达最优,有一定程度上的资源浪费,故障诊断以及处理能力仍有很大的提升空间,相信未来的故障诊断系统将会加入更多优化元素优化系统架构,提高故障诊断精确度以及故障处理能力。

参考文献:

[1] 魏立明,季树彬,孙佳隆.基于WinForm的設备管理系统的设计与实现[J].中国新技术新产品,2020(3):11-12.

[2] 佘志远,朱毅,肖万彪,等.基于西门子1500的Modbus TCP与相机通信在冲压行业的应用[J].锻压装备与制造技术,2021,56(4):68-71.

[3] 范营营,田雨.基于Socket通讯多线程技术的工业无线数据服务软件设计[J].机械设计与制造工程,2016,45(3):61-64.

[4] 吕俊霞.人工智能专家控制系统简介[J].精密制造与自动化,2020(1):62-64.

[5] 曲楠,李岩,宋万强,等.基于Socket异步技术的设备数据通讯设计[J].工业控制计算机,2022,35(2):52-53,111.

【通联编辑:梁书】

猜你喜欢

云端设计
四海心连·云端汇聚
何为设计的守护之道?
云端之城
瞒天过海——仿生设计萌到家
设计秀
有种设计叫而专
美人如画隔云端
行走在云端
云端创意
设计之味