《PYTHON在ABPLC报文截取中的应用.docx》由会员分享,可在线阅读,更多相关《PYTHON在ABPLC报文截取中的应用.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、PYTHON在AB PLC报文截取中的应用摘要: 本文从安全生产实际需求出发,针对广州地铁二十一号线BAS专业获取AB PLC报文数据的需求, 利用PYTHON基于EtherNet/lP实时获取PLC标签或寄存器状态并保存本地,达到故障处理时协助定位的目的。关键词:环境与设备监控系统;Allen-Bradley;可编程逻辑控制器;PYTHON0引言PLC是一种专为在工业环境应用而设计的数字运算电子系统,它将计算机技 术、自动控制技术和通讯技术融为一体,成为实现单机,车间,工厂自动化的核 心设备,具有可靠性高,抗干扰能力强,组合灵活,编程简单,维修方便等优点。 随着技术的进步,其控制功能由简单的
2、逻辑控制,顺序控制发展为复杂的连续控 制和过程控制,成为自动化领域的三大技术支柱I。1项目背景1.1 技术背景广州地铁二十一号线环境与设备监控系统(以下简称BAS)使用Allen- Bradley (以下简称AB) 1756-L71可编程逻辑控制器(以下简称PLC) , PLC机 架的以太网通信模块基于EtherNet/IP协议与综合监控进行通信。EtherNet/IP 是由罗克韦尔自动化公司开发的工业应用层协议。图1给出了 BAS网络系统架构。图1 BAS网络系统架构1.2 实际需求广州地铁二十一号线曾发生综合监控日志记录设备控制指令已下发到BAS, 但是BAS未执行的情况,由于综合监控仅记
3、录指令是否下发,无法确认BAS是否 已收,因此需要监控对应标签数值变化情况,检查是否实际收到指令。通过编写PYTHON脚本,部署在BAS维修工作站,实时监视关键标签值的变 化,并将变化情况记录在本地Excel文件中,故障后查询对应事件记录来确认执 行情况。1. 3整体情况脚本涉及二十一号线全线21个车站,每个车站一台工作站,根据每个站点 表中标签的名字,进行查询记录。2改造过程程序编写底层与PLC通信使用Burt Peterson开发的pylogix包,该包基于 socket开发,允许通过标签名对标签状态进行查询。图2给出了 PLC标签列表。J;(ft.m匕T W.AKZrT八M:I sy.:
4、;jJ CMX.rtJIJ4Hte* w.EUi.U1V KMXate图2 PLC标签列表使用Pycharm作为开发软件,使用PYTHON包主要有pylogix、PyQt5、 openpyxl, pylogix负责与PLC交互,获取寄存器数值,PyQt5用于人机交互界 面设计,openpyxl负责Excel数据交互,将查询到的数据存储在Excel文件中, 方便存档和历史查询。图3给出了软件工作流程图。图3软件工作流程图关键程序代码:以记录扶梯故障代码为例with PLC() as comm:comm. IPAddress = 192. 168. 1. 103while True:本地文件处理”
5、if self, record:try:wb = load workbook,E:扶梯故障代码记录.xlsx) ws = wb. activeexcept:wb = Workbook E:扶梯故障代码记录.xlsx) wb. save( E: 扶梯故障代码记录.xlsx)wb = load_workbook(E:扶梯故障代码记录. xlsx) ws = wb. activews. cell (1, 1). value =日期ws. cell (1, 2). value 二编号ws. cell (1, 3). value =故障代码for escalator in escalatorsself.
6、 comboBox. currentText():QApplication. processEvents()ret = comm. Read(escalator)if ret. Value != 0:# prin t (re t. TagName, re t. Value) row_xlsx = ws. max_row + 1ws. cell (ravjdsx, 1). value = tiiiE. strftinE C%d %H:%M:%S,)ws. cell (rov_xlsx, 2). value = ret. TagNamews. cell (rowxlsx, 3). value =
7、hex (ret. Value) 2: self. tableWidget_l. setRowCount(begin_row+l) self. tableWidget_l. set Item (begin_row, 0,QtWidgets. QTableWidgetItem(time, strftime( %Y- %m-%d %H:%M:%S?)self. tableWidget l. setitem(begin row, 1,QtWidgets. QTableWidgetItem (ret. TagName)self. tableWidget_l. setitem(begin_row, 2,
8、QtWidgets. QTableWidgetltem(hex(ret. Value)2:) time, sleep(2)# 时间间隔wb. save (5 E:扶梯故障代码记录.xlsx)else:return测试结果如图4所示。Hita2021 (M 01 口二12197021 (M 01 口二】二】19TQi11 已iqsi y皿: an Qi S皿OA 03 J17377laior OH II AKW19T2021 (M 01 U 21219T2Q:1 GA 03lc:107 03 II19TiazLot-m uiisic:ia* :j i ;忙a皿2021 (M-G3|ciO7_lJ
9、I_ACag时3021*01-03|aiO7_MJI_ACatf1STwonaoa ua 如皿IF摩1a s imIEg1】a S依18 8,有二W7a s lui夕IST】、i k,:i 1) in ;、iq-二i ,197IF:9;18 S UH|(:13 8 ”_JEMx a s jKUQ7 8 ri akmir图4测试记录图3结束语本文主要讨论PYTHON在AB PLC标签报文截取上的应用,基从安全生产实际 需求出发,针对广州地铁二十一号线BAS专业获取AB PLC报文数据的需求,利 用PYTHON基于EtherNet/IP实时获取PLC标签或寄存器状态并保存本地,达到 故障处理时协助定位的目的。参考文献:1王文.基于AB PLC的长输油气管道SCADA站控系统的实现J ,化工设计通讯,2022, 48(07): 19-21.2海军,马见功,白海燕.AB PLC与ESSER火灾报警系统程序设计和应用J.自动化技术与应 用,2022, 41 (03):96-100.3蒋磊.基于AB PLC的除尘控制系统设计J.有色金属加工,2021, 50(06): 57-60.
限制150内