黃初敏
(東風柳州汽車有限公司,柳州 545000)
Python 作為人工智能領域的熱門計算機編程語言,具有語言簡潔易上手、可移植性強以及擴展庫豐富等優勢,被廣泛應用于前端開發、后端開發、爬蟲開發、人工智能、大數據以及物聯網等領域。Python 具有豐富而強大的庫,常被稱為膠水語言,能夠把用其他語言編寫的各種模塊(尤其是C/C++)輕松集成在一起。智能制造注重信息化與自動化的深度融合。Python 對工業控制的兼容性極強,但目前行業內將Python 應用于工業自動化控制領域的成熟應用案例較少[1]。本項目將基于Python 編程語言,配合智能傳感元件和工業控制PLC,開發用于監測設備動態的智能監測系統。
項目實施方案如圖1 所示,具體方案及步驟包括以下5 個方面。第一,在重點設備上安裝智能傳感器(震動、溫度、電流等),通過IO-LINK 模塊或RS422/485 模塊采集傳感器數據。數據經過PLC 初步處理后,以浮點型(real)數據格式存儲在PLC 的DB 數據塊內。浮點型數據可存儲帶小數點的數據,數據準確性較高。第二,利用Python 調用第三方模塊編寫讀取PLC DB 數據塊的程序,再利用封裝好的SQL 指令將數據轉存至上位機內的MySQL 數據庫內。數據以序號、數值以及采集時間的格式按序存儲在表內,便于調取和追溯。第三,從MySQL 數據庫讀取數據,利用Matlab 模塊繪制數據曲線,以不同顏色區分不同數據,可實現放大、縮小以及拖動等常規操作。第四,對歷史數據進行大數據分析形成算法。利用數據分析的方法可以提煉收集的各種形式的數據,從數據中發現規律,進而利用發現的規律預測數據的走向,從而幫助人們進行生產經營或者其他決策[2]。第五,利用自學習算法實現設備重大故障預警和智能預測功能。

圖1 項目實施方案示意圖
項目試點對象為東風柳州汽車有限公司商用車總裝車間一線主線的主傳動軸,需要監測主軸的震動、溫度及變頻器電流數據。在開展程序設計前,需要安裝如表1 所示的軟件及Python 程序。

表1 軟件/組件需求表
由于主線采用西門子S315-2PN/DP PLC 作為主控單元,現場采用profinet 工業以太網通信,傳感器連接在IOLINK模塊上。傳感器及模塊安裝完畢后,需要在step7 組態界面對IOLINK 模塊進行組態。以震動數據為例,利用梯形圖編程,將震動數據處理后存儲在PLC DB1000.DBD6 內,數據格式為real,即浮點型數據。
Python 支持開源第三方庫程序的調用,利用snap7 工具可實現PC 直接通過TCP 網口連接PLC,無需額外的OPC 軟件進行中轉。
通過以下指令可測試PLC 連接及數據讀取。
import snap7 #導入第三方模塊
plc=snap7.client.Client()
plc.connect("192.168.8.1",0,2) #連接PLC
data=plc.read_area(0x84,1000,6,4)#讀取DB1000.DBD6數據
……
其中,plc.connect("192.168.8.1",0,2) 代碼中的IP 地址為PLC IP 地址;“0”代表PLC 機架號;“2”代表PLC插槽號。西門子S300 系列PLC 的機架號為0,插槽號為2。而data=plc.read_area(0x84,1000,6,4)代碼中,“0x84”代表訪問的對象是PLC 的DB 塊(I 點為0x81,Q 點為0x82,M 點為0x83),“1000”為DB 塊編號,“6”為DB 塊起始地址,“4”代表讀取數據長度(real 為4,word 為2,dword 為4,bit 則為1)。代碼執行后若可正常讀出數據,說明通信及數據讀取正常。
傳感器數據讀取程序寫在PLC 的OB35 系統塊內,系統默認掃描周期為100ms,即每0.1s 反饋一個實時數據,數據量龐大。Python 的元祖、列表以及字典皆無法滿足龐大的數據存儲需求,故需要將讀取的數據存儲到MySQL 數據庫中,并設置固定的數據格式,程序如下(部分)。
import pymysql#導入pymysql 模塊
conn=pymysql.connect(……user=’root’,passwd=’xx xx’,db=’plc_data’) #連接數據庫
cur=conn.cursor() #獲取游標
cur.execute(‘drop table if exists plcdata") #創建plcdata 表
sql=”””CREATE TABLE IF NOT EXISTS`plcdata`……”””
cur.execute(sql)
通過上述代碼可在MySQL 中創建名為“plc_data”的數據庫,并創建名為“plcdata”,列名為“序號”“數值”“采集時間”的表。其中,“采集時間”可利用datetime 模塊獲取系統時間。數據庫創建完畢后已具備數據寫入條件,利用sql=”insert into plcdata values(%s,%s,%s)”指令可將從PLC 采集的數據用SQL 指令寫入創建好的表內。
數據存儲到MySQL 后,需要把數據以趨勢圖的方式展現出來,此時需要用到第三模塊Matplotlib。Matplotlib 是Python 中最常用的可視化工具之一,可以非常方便地創建高質量的不同類型的2D 圖表和一些基本的3D 圖表[3]。通過讀取數據庫的數據,利用圖譜工具繪制出運行曲線,所有代碼最終執行結果如圖2 所示(圖2 中利用navicat 查看數據庫信息)。

圖2 項目最終效果
本項目設計的一種基于Python 的設備動態智能監測系統,可實現車間重點設備的震動、溫度以及電流等核心參數動態監測。監測數據實時存儲在MySQL 數據庫內,可實現歷史數據追溯,借助Matplotlib 第三方模塊可實現圖譜分析,最后配合大數據算法實現設備故障預警功能,輔助企業最終實現智能制造。