袁金庆
摘要:现在工业控制领域大部分仍是以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.