袁金慶
摘要:現在工業控制領域大部分仍是以PLC(可編程邏輯控制器)為控制核心的工業自動化,但隨著工業4.0概念的提出,制造業對自動化、智能化生產模式的需求日益增長,作為邏輯控制器的PLC對一些大數據量處理工作力不從心。本文主要將淺顯談論下python在工業控制領域的應用。
關鍵詞:python;自動化;工業控制;
1、概述
隨著科學技術的發展,越來越多的企業開始進入智能化生產,PLC在對連續數據采集,數據顯示,數據庫管理等工作顯得心有余而力不足。連續數據采集,數據顯示,數據庫管理等工作使用上位機比較適合,而上位機開發語言主要有C、C++、C#、VB.NET、python等,python相對與其他語言簡單易學,效率高,免費且開源等優勢。
2、PLC發展現狀
(1)在PLC技術中,開關量的邏輯控制是最為常見的類型,其應用最為廣泛。基于開關量的邏輯控制技術取代了傳統繼電器電路,使電路控制技術的真正進入了邏輯控制時代。
(2)由于PLC只能處理數字信號,在應用過程中需要將模擬量進行數字化轉換,此過程需要借助A/D和D/A轉換器實現,為便于用戶使用,PLC廠家在進行設計的過程中,就已經研發了與之相匹配的A/D和D/A轉換器,從而保證PLC器件能夠對模擬量控制信號做出正確的響應。
(3)在控制機構的配置上,基于開關量的串口控制模塊需要與位置傳感器相連接,根據執行機構的運動情況,進行周期性的響應,這就是基于運動控制的PLC技術。
(4)所謂過程控制,也就是自動控制原理中的反饋控制(或閉環控制),在PLC技術的實際應用中,不僅需要對現場狀態進行及時的反饋,還應當具備對過程量的控制能力。
3、python語言優勢
Python語言目當前最為流行的編程語言之一,相對于其他語言Python具有明顯優勢。
(1)簡單、易學
(2)免費、開源
(3)高層語言
(4)可移植性
(5)解釋性
(6)面向對象
(7)可擴展性
(8)豐富的庫
(9)規范的代碼
4、python在工業控制領域的應用
(1)與PLC通訊
本文以西門子S7系列的PLC為例,使用Snap7庫實現與PLC的數據交換。
① python安裝snap7只需要簡單命令pip install python-snap7即可。
② 使用snap7.client.Client庫中connect(self,address,rack,slot, tcpport=102)與PLC連接。
例:
import snap7
client = snap7.client.Client()
client.connect("127.0.0.1",0,0,1012) #"127.0.0.1"為PLCip地址,0為PLC號,0為CPU所在槽號,1012為端口號。
③ 數據讀取,又分為ct?_read、db_read、mb_read、tm_read或者read_area等。
例:
read_area(area,dbnumber,start,size)
#area為內存地址區域如下表,dbnumber為DB號,僅讀取DB區域時使用,start為偏移起始地址,size讀取字節數
④ 數據寫入,同數據讀取,又分為ct?_write、db_write、mb_write、tm_write或者write_area等。
通過以上,用很少的代碼就可以實現PLC的讀寫。
(2)機器人或其他第三方智能設備通訊。
Python自帶socket模塊,可以通過socket通訊實現與支持socket通訊方式的設備通訊。
第三方設備一般作為服務端會與多個設備相連接,上位系統一般使用客戶端,使用python如下代碼建立客戶端。
from socket import *
HOST = '127.0.0.1' #第三方設備的ip地址
PORT = 21567 #端口號
BUFSIZ =1024 #設置緩存器大小
ADDR = (HOST,PORT)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
(3)建立數據庫
現在已經存在了很多優秀的商業數據庫,如Oracle、DB2、SQL Server、Access等。同時,還有很多優秀的開源數據庫,如MySQL、PostgreSQL等。
其中MySQL是一種開放源代碼的關系型數據庫管理系統,因為其速度、可靠性和適應性而備受關注。MySQL是流行的關系型數據庫管理系統之一。本文以MySQL為例介紹。
① 數據庫安裝。首先必須確保安裝MySQL。Python中使用pip install MySQL-python安裝即可。
② 數據庫連接。
例:import MySQLdb
db=MySQLdb.connect("localhost","testuser","test123","TESTDB", charset='utf8') #打開數據庫連接
③ 獲取游標,要想操作數據庫,光連接數據是不夠的,必須拿到操作數據庫的游標,才能進行后續的操作。
例:cursor=conn.cursor()
④ 創建數據庫
如果數據庫連接存在我們可以使用execute()方法來為數據庫創建表:
cursor.execute('CREATE DATABASE IF NOT EXISTS pythonDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;')
⑤ 創建表
sql="""CREATE TABLE IF NOT EXISTS user` (`id`int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) NOT NULL, `age` int(11) NOT NULL,PRIMARY KEY (`id`) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""
cursor.execute(sql)
⑥ 插入單條數據
insert=cur.execute("insert into user values(1,'liming',18)")
⑦ 數據庫查詢
查詢Mysql使用fetchone()方法獲取單條數據,使用fetchall()方法獲取多條數據。
5、結束語
Python具有大量的第三方庫,比如Numpy庫具有支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫,可以處理PLC或第三方設備中的大量數據。再比如PIL、matplotlib庫,可以將讀取的數據進行圖片形式或三維形式的直觀顯示。Xlwt/xlrd等EXCEL庫可以將數據寫入EXCEL中,便于數據的整理保存比較等工作。Python作為現在最流行的編程語言,在工業控制領域我們也可以適當應用,解決一些小問題,提高工作效率。
參考文獻:
[1]陳琥.PLC的發展現狀及應用前景[J].電子技術與軟件工程,2017,000(009):120-120.
[2]宋春穎.基于Python的數據挖掘與分析[C]//第三十四屆中國(天津)2020’IT、網絡、信息技術、電子、儀器儀表創新學術會議.0.
[3]丁未.將工業與科技世界的運行統一在Python語言的開源框架中[J].中國儀器儀表,2013,000(008):23-25,31.