PLC最常用的编程语言是梯形图。梯形图是最接近继电器、线圈等电气元件实体的符号表示方法。以如图1-11所示为例,左边是电源线,经过I0.0常开触点、I0.1常闭触点后,由线圈Q0.0输出。当I0.0所对应的开关动作,I0.1对应的开关不动作时,线圈Q0.0闭合;此时若I0.1对应的开关动作,则线圈Q0.0断开。
图1-11 PLC的梯形图控制示意
由图1-11可知,在PLC的端子上接入行程开关、继电器等外部元件(I0.0、I0.1和Q0.0所对应的电气元件),用户可以在博途编程软件平台上编写梯形图,通过网线下载到PLC,PLC就可以按照用户的逻辑和如图1-12所示的能流(电流)方向进行控制了。
图1-12 能流(电流)方向
PLC常见的三种元件是输入继电器、输出继电器和内部辅助继电器,见表1-3。根据IEC61131-3标准,PLC元件用百分数符号%开始,随后是位置前缀符号;如果有分级,则用整数表示分级,并用小数点符号“.”分隔。
表1-3 PLC常见三种元件的种类、功能与符号
需要注意的是,在本书后续讲述中,为了简洁,一般把%省略。用户在编辑梯形图程序时,软件会自动补全%符号。
有了如图1-13所示的输入电气元件(如按钮、选择开关、行程开关、接近开关等)、S7-1200 PLC、输出电气元件(如指示灯、接触器、蜂鸣器、电磁阀线圈等),就可以组成最基本的PLC控制系统,来完成如图1-14所示的分拣输送应用等,实现逻辑控制、顺序控制、定位控制等。
图1-13 PLC控制系统
图1-14 分拣输送应用
图1-15是某泵站采用S7-1200 CPU 1215C DC/DC/DC进行液位自动控制示意图,当下液位开关检测到ON时,启动水泵,进行注水;当水位达到一定值时,上液位开关检测到ON,则停止水泵。请设计电气线路,并进行PLC编程和下载。
图1-15 液位自动控制示意图
步骤1:电气接线和输入/输出定义
根据实例说明可以得出,液位开关信号有2个,分别是下液位开关信号和上液位开关信号,分别定义为I0.0、I0.1;输出为水泵接触器,定义为Q0.0。本实例选用CPU 1215C DC/DC/DC,进线电源部分为DC24V,输入部分可以采取漏型接法,输出部分采用DC24V线圈的水泵接触器,表1-4为输入/输出定义,电气线路如图1-16所示。
表1-4 输入/输出定义
图1-16 电气线路
步骤2:在博途软件中创建新项目
进入博途软件后,如图1-17所示,选择“启动”→“创建新项目”后,输入项目名称(如本实例的“液位控制”),单击
图符输入存放路径。
图1-17 创建新项目
输入项目名称后,就会看到“新手上路”提示(见图1-18),包含创建完整项目所必需的“组态设备”“创建PLC程序”“组态工艺对象”“组态HMI画面”或“打开项目视图”等步骤。新手一步步操作即可。这里先选择“组态设备”。
图1-18 新手上路
S7-1200 PLC提供了控制器、HMI、PC系统等设备,选择“SIMATIC S7-1200”,依次单击CPU类型(本案例为“CPU 1215C DC/DC/DC”),最终选择订货号6ES7 215-1AG40-0XB0,其中版本号可根据实际情况来选择,如V4.2,如图1-19所示。
图1-19 添加新设备
单击“添加”按钮后,就会出现如图1-20所示的完整设备视图。
图1-20 完整设备视图
步骤3:硬件配置
在设备视图中,单击CPU模块,按右键就会出现很多菜单,这里选择“属性”,如图1-21所示。
CPU的属性内容非常丰富,包括常规、PROFINET接口、DI 14/DQ10等。图1-22为CPU的目录信息,可以看到版本号,还设有“更改固件版本”按钮用于升级。
图1-23是PROFINET接口属性。这里选择默认值192.168.0.1。
图1-21 选择“属性”
图1-22 CPU的目录信息
图1-23 PROFINET接口属性
S7-1200 PLC提供了自由地址功能,如图1-24所示,可以对I/O地址进行起始地址的自由选择,如0-1022(因为输入地址最多到I1023.7,本机地址就有2个字节,因此到1022为止。)
步骤4:梯形图编程
图1-25为项目树全貌,找到“液位控制”→“PLC_1”→“程序块”→“Main”,就是梯形图编程的地方。图1-26是Main空程序块。
图1-24 I/O地址
图1-25 项目树全貌
图1-26 Main空程序块
用户要创建程序,只需将指令拖到程序段即可,比如本实例首先要使用常开触点,则从收藏夹中将常开触点直接拉入程序段1,如图1-27(a)所示,程序段1出现
符号,表示该程序段处于语法错误状态,尚未完成编辑过程;然后,在<??.?>处输入“%I0.0”或“I0.0”;根据梯形图的编辑规律,使用图符
打开分支,输入接触器自保触点“%Q0.0”或“Q0.0”,并用图符
关闭分支;同理,使用图符
、
完成后续编辑过程。完成后的梯形图如图1-27(b)所示,此时
符号已经消失。
从这里可以看出,变量名称自动变成“Tag_1”“Tag_2”“Tag_3”,不便于阅读,因此需要对变量名称进行重新定义。变量是PLC I/O地址的符号名称。用户创建PLC变量后,博途软件将变量存储在变量表中。项目中的所有编辑器(如程序编辑器、设备编辑器、可视化编辑器和监视表格编辑器)均可访问该变量表。
图1-27 创建梯形图
在项目树中找到“液位控制”→“PLC_1”→“PLC变量”→“显示所有变量”(见图1-28),单击后找到这3个变量名进行修改(见图1-29)。修改完成后,再次返回Main程序,如图1-30所示,就会看到相关变量名称已经替换,阅读起来非常方便。
图1-28 PLC变量
图1-29 修改PLC变量
图1-30 修改变量名称后的梯形图程序
需要注意的是,定义变量也可以在程序编辑前完成,即在编辑时,可以直接在<??.?>中选择变量,无需直接输入。这个可根据用户编辑习惯选择。
步骤5:编译、下载、调试
在创建阶段只是完成了梯形图语法的输入验证,若要完成程序的可行性,还必须执行编译命令。如图1-31所示,选择项目树中的“PLC_1[CPU 1215C DC/DC/DC]”,按右键弹出菜单,用户可以直接选择下载命令,博途软件会自动先执行编译命令,当然,也可以单独选择编译命令。
图1-31 执行编译
图1-31 执行编译(续)
博途需要对PLC的硬件配置和软件分别编译,并分别下载,只有两者均正确时才能完成下载。下载之前,还需要确保PC与PLC同在192.168.1. *频段内,但不重复(本实例中PLC地址为192.168.0.1)。图1-32是“扩展下载到设备”界面,在“选择目标设备”时,有3个选项,即“显示地址相同的设备”“显示所有兼容的设备”“显示可访问的设备”。需要注意的是,第一次连机时,存在PLC的IP地址与PC的IP地址不在同一个频段、PLC的CPU第一次使用无IP地址等情况,因此在“选择目标设备”时,不能选择“显示地址相同的设备”,而是选择“显示所有兼容的设备”,接口类型为ISO,访问地址是MAC地址,此时可以连接CPU,等下载结束后,再次连机,就会出现正常的连机情况了。
图1-32 “扩展下载到设备”界面
图1-33为下载信息反馈,描述了硬件配置下载、Main程序下载的过程。
图1-33 下载信息反馈
步骤6:程序调试
完成以上步骤后,PLC会自动切换到运行状态,此时选择
图标栏中的
进入程序块的在线监控(见图1-34),用绿色实线表示接通、蓝色虚线表示断开。程序解释如下:
(1)液位刚好处于上、下液位开关均没有动作的时候,水泵接触器不动作,程序状态如图1-34(a)所示。
(2)随着用水量的增加,液位不断下降,当下液位开关检测到ON时,水泵接触器马上接通,程序状态如图1-34(b)所示。
(3)水泵接触器动作后,水位马上上升,下液位开关变为OFF,根据自保原理,水泵接触器还继续接通,程序状态如图1-34(c)所示。
(4)当水泵的送水量大于用水量,液位不断上升,直到上液位开关检测到ON时,水泵接触器马上断开,程序状态如图1-34(d)所示。
(5)当液位从最高下降时,即使上液位开关为OFF,下液位开关也不会触发,水泵接触器不动作,程序状态回到如图1-34(a)所示状态。
图1-34 程序块的在线监控
图1-34 程序块的在线监控(续)
S7-1200 PLC的输入可以接两种类型的传感器,即PNP型(漏型接法)和NPN型(源型接法),其公共点不同,如图1-35所示。图中,虚线框内为传感器。
图1-35 两种类型传感器接入PLC示意图
图1-35 两种类型传感器接入PLC示意图(续)
布尔量(Bool)是指一个真或假状态,通常用0、1表示假或真。S7-1200 PLC中所有的位逻辑操作就是布尔量之间的操作。它们按照一定的控制要求进行逻辑组合,构成与、或、异或及其组合。表1-5是常见的位逻辑类型、符号及功能说明,包括常开触点、常闭触点、上升沿、下降沿、输出线圈、取反线圈、取反逻辑、置位、复位等。
表1-5 常见的位逻辑类型、符号及功能说明
取反线圈是指输出“1”时断开,输出“0”时接通。图1-36为输出线圈与取反线圈对比。由梯形图可知,输出线圈和取反线圈除了输出刚好相反,其余均相同,从真值表可以看出两者区别。
图1-36 输出线圈与取反线圈对比
“与”逻辑是指只有当两个操作数都是“1”时,结果才是“1”。“与”逻辑操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会对第二个操作数求值;如果第一个操作数是“0”,则无论第二个操作数是什么值,结果都不可能是“1”,相当于短路了右边。图1-37是“与”逻辑及其真值表。
“或”逻辑是指如果一个操作数或多个操作数为“1”,则“或”运算符返回布尔值“1”,只有全部操作数为“0”时,结果才是“0”。图1-38是“或”逻辑及其真值表。
图1-37 “与”逻辑及其真值表
图1-38 “或”逻辑及其真值表
“异或”逻辑是指如果 a 、 b 两个值不相同,则异或结果为“1”;如果 a 、 b 两个值相同,则异或结果为“0”。异或也叫半加运算,运算法则相当于不带进位的二进制加法。图1-39为“异或”逻辑及其真值表。
图1-39 “异或”逻辑及其真值表
边沿信号在PLC程序中比较常见,如电动机的启动、停止、故障等信号的捕捉都是通过边沿信号实现的。如图1-40所示,上升沿检测指令检测每一次0到1的正跳变,让能流接通一个扫描周期;下降沿检测指令检测每一次1到0的负跳变,让能流接通一个扫描周期。
图1-40 边沿检测示意图
当触发条件满足(RL0=1)时,置位指令将线圈置1;当触发条件不再满足(RLO=0)时,线圈保持不变,只有触发复位指令时才能将线圈复位为0。单独的复位指令也可以对定时器、计数器的值清0。在梯形图编程指令中,RS、SR触发器带有触发优先级,当置位、复位信号同时为1时,将触发优先级高的动作,如RS触发器,S(置位在后)优先级高。
采用PLC控制的方式,用三个开关S1、S2、S3控制一盏照明灯EL,任何一个开关都可以控制照明灯EL的亮与灭。
步骤1:电气接线与输入/输出定义
图1-41为电气原理图,为了阅读方便,与【实例1-1】略有不同的是输出4L+和4M的画法,电源输入DC24V与电源端L+和M是同一个电源。
图1-41 电气原理图
表1-6为输入/输出定义,包括开关1、开关2和开关3等输入元件,以及照明灯输出元件。
表1-6 输入/输出定义
步骤2:PLC编程
经分析可知,只有一个开关闭合时照明灯亮,再有另外一个开关闭合时照明灯灭,推而广之,即有奇数个开关闭合时照明灯亮,偶数个开关闭合时照明灯灭。根据控制要求列出真值表,见表1-7。
表1-7 三个开关控制一盏照明灯真值表
根据真值表和输入/输出定义,列出PLC输入/输出的逻辑表达式为
表1-8为变量定义,根据式(1-1)可以画出梯形图如图1-42所示。
表1-8 变量定义
图1-42 【实例1-2】的梯形图
步骤3:在线监控
将程序编译后,按照【实例1-1】下载,并进行在线监控,如图1-43所示,即三个开关均为ON的情况下,EL亮。
图1-43 在线监控
若在本实例的基础上,用四个开关S1、S2、S3、S4(定义为I0.3)控制一盏照明灯EL,任何一个开关都可以控制照明灯EL的亮与灭。此时可以判断:有奇数个开关闭合时照明灯亮,偶数个开关闭合时照明灯灭。根据控制要求列出真值表,见表1-9。
表1-9 四个开关控制一盏照明灯真值表
根据真值表,列出PLC输入/输出逻辑表达式为
根据式(1-2)可以画出如图1-44所示梯形图。
图1-44 梯形图
如图1-45所示,采用S7-1200 CPU 1215C DC/DC/DC设计运载小车控制电路,即用左运行按钮SB1控制电动机左转,带动运载小车从右向左运行,当到达最左侧的感应开关SQ1时,电动机停止;SB2为急停按钮,通过被按下可以随时停止电动机;SB3控制电动机右转,带动运载小车从左向右运行,当到达最右侧的感应开关SQ2时,电动机停止。请用RS触发器进行梯形图编程,并编译和下载。
步骤1:电气接线与输入/输出定义
图1-46为电气原理图。表1-10为输入/输出定义。
图1-45 运载小车控制示意图
图1-46 电气原理图
表1-10 输入/输出定义
步骤2:PLC编程
表1-11为变量定义,除了输入和输出,增加了SR触发器用的中间变量1和中间变量2。
表1-11 变量定义
PLC编程方法可以采用传统的“继电器—接触器”思路,也可以采用实例要求的SR触发器进行编程,如图1-47所示。触发器SR或RS的唯一区别是优先级。本实例是R优先,即使S端信号为ON,当R1(注意此时优先级多了一个数字“1”)端信号为ON时,输出Q端为OFF。
图1-47 【实例1-3】的梯形图
S7-1200 PLC有SR触发器和RS触发器。它们之间的区别如下:
(1)SR触发器:复位优先型触发器,逻辑为:
S =0、 R =0时, Q 保持不变(0或1); S =0、 R =1时, Q =0; S =1、 R =0时, Q =1; S =1、 R =1时, Q =0。
(2)RS触发器:置位优先型触发器,逻辑为:
S =0、 R =0时, Q 保持不变(0或1); S =0、 R =1时, Q =0; S =1、 R =0时, Q =1; S =1、 R =1时, Q =1。