学习电气控制,PLC编程是学习的重点。我们需要从本质上了解PLC的工作原理才能更好地去应用。PLC的硬件组成、PLC的工作原理、PLC编程的编程思路和PLC编程的学习方法都是大家要学习的重点。
PLC在早期是一种开关逻辑控制装置,被称为可编程序逻辑控制器(Programmable Logic Controller),简称PLC。随着计算机技术和通信技术的发展,PLC采用微处理器作为其控制核心,它的功能已不再局限于逻辑控制的范畴。因此,1980年美国电气制造协会(NEMA)将其命名为Programmable Controller(PC),但为了避免与个人计算机(Personal Computer)的简称PC混淆,习惯上仍将其称为PLC。
1987年2月,国际电工委员会(IEC)对PLC的定义为:PLC是一种数字运算操作的电子系统,专为在工业环境下的应用而设计。它采用了可编程序的存储器,用于在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式和模拟式的输入和输出,控制各种类型机械的生产过程。而有关的外围设备,都应按照方便与工业系统联成一个整体、易于扩充其功能的原则设计。
如图1.1所示为PLC控制系统的构成图。PLC的核心部件是【CPU模块】,该模块主要由【微处理器】和【存储器】组成,主要负责数据处理和数据存储,同时它连接了【输入模块】和【输出模块】,还可以通过【编程设备】编写和修改CPU内部的程序。当然所有的模块和设备都是需要供电的,【CPU模块】、【输入模块】、【输出模块】都需要【供电电源】来供电。【输入模块】的作用是负责采集【外部设备】的输入状态和信号,经过【CPU模块】处理后,决定输出信号,而输出信号必须通过【外部设备】来实现控制和动作。我们看到【输入模块】和【输出模块】都是连接的【外部设备】,但两者是不一样的,一个是输入设备,而另一个是输出设备。即使是同一个设备,也可能不是同一个端口,还是要区分输入和输出的。后边讲到的变频器和电动调节阀在同一个设备上既可作为输入也可作为输出,但是接线端子必须区分输入和输出。
图1.1 PLC控制系统构成图
图1.2是常用自控系统模块连接图。在PLC控制系统中,CPU模块是必不可少的,它是整个系统的大脑。【通信模块】根据使用需求选配,PLC需要与外部通信时就选择通信模块。【输入模块】和【输出模块】一般都是必须有,输入是为了采集外部信号,而输出是为了控制外部设备。有人说:“我用CPU只做通信,不做输入也不做输出。”在特殊情况下那样使用也是可以的。常规使用都有数字量输入、数字量输出和通信,基于这种情况,小型的CPU模块集合了数字量输入和数字量输出,同时也集成了对外通信端口。如果当前配置满足使用需求就不需要加扩展模块,不满足使用需求就需要增加对应扩展模块。如果用到【模拟量输入模块】和【模拟量输出模块】时,根据使用需求选配。一套PLC控制系统可以通过扩展模块来实现各种功能和满足各种需求,不过每一种CPU模块支持的扩展模块数量是不同的。具体到某种CPU模块的扩展能力和支持扩展模块的数量要查看对应的说明书。
图1.2 自控系统模块连接图
如图1.3所示,串口通信模块通常分为以下3类:RS-232通信模块、RS-485通信模块、RS-422通信模块。一般情况下,一个通信模块只支持一种通信方式。为了满足市场需求和兼容性,有的通信模块可能具备两种或者多种通信方式,例如有的模块同时支持RS-485通信和RS-232通信。同一种通信方式也可能支持多种协议,例如通过DB9接口下载程序时,西门子S7-200系列CPU模块和计算机通信采用RS-485通信方式,协议采用PPI协议;西门子S7-300系列CPU模块和计算机通信采用RS-485通信方式,协议采用MPI协议。总结一下:通信接口方式一样,但是采用的通信协议可能不一样。只有通信接口方式一样,并且采用的通信协议一样,二者才能实现通信。如果把通信方式比喻成不同的道路,而协议就是道路上跑的车。如公路上可以跑不同的车,例如卡车、轿车和货车等,但是不能跑火车。某种通信方式支持的协议是有限的,不能支持所有协议。
图1.3 通信模块常用分类图
如图1.4所示,CPU模块根据使用需求来划分大致有3种。
图1.4 CPU模块分类
第1种是根据通信接口的不同来分类,如CPU模块带RS-485通信接口、RS-232通信接口或者网口等。
第2种是根据输入和输出数量不同来分类,如SR20自带12个数字量输入和8个数字量输出,SR30自带18个数字量输入和12个数字量输出。
第3种是根据负载类别来分类,如SR20是通过继电器输出的,没有高速脉冲输出,也就不能做运动控制,而ST20是通过晶体管输出的,有高速脉冲输出,可以做运动控制,但是ST20只能做2个轴的运动控制。如果想做3个轴的运动控制就要选择ST30或者ST40等具备控制3个运动轴的CPU模块。
每一种CPU模块的详细情况和负载能力都要参看对应的手册或者说明书。在设计选型的时候一定要注意:不能等到控制系统做好了,才发现CPU模块选错了。
如图1.5所示,输入模块主要分两类,一类是数字量输入模块,另一类是模拟量输入模块。数字量输入模块根据接入点数的不同一般分为4DI、8DI、16DI和32DI等,4DI是指有4个数字量输入点,而8DI是指有8个数字量输入点,以此类推。模拟量输入模块一般分为2AI、4AI和8AI等。做PLC控制系统时具体选用哪一种模块需要根据工程项目需求来确定。
模块数量是根据工程项目需求的I/O点来规划和确定的,同时还要预留部分I/O点。最后要根据模块手册或者说明书详细核实该模块种类和数量是否满足实际使用需求。本书后续章节对数字量输入模块接线(第6章)和模拟量输入模块接线(第8章)分别做了详细讲解。
图1.5 输入模块分类
如图1.6所示,输出模块主要分为两类,一类是数字量输出模块,另一类是模拟量输出模块。数字量输出模块根据输出点数的不同一般分为4DO、8DO和16DO等,4DO是指有4个数字量输出点,8DO是指有8个数字量输出点,以此类推。模拟量输出模块一般分为2AO和4AO等。做PLC控制系统时具体选用哪一种模块需要根据工程项目需求来确定。
图1.6 输出模块分类
模块数量是根据工程项目需求的I/O点来规划和确定的,同时还要预留部分I/O点。最后要根据模块手册或者说明书详细核实该模块种类和数量是否满足实际使用需求。本书后续章节对数字量输出模块接线(第7章)和模拟量输出模块接线(第9章)分别做详细讲解。
如图1.7所示,混合模块主要分为两类,一类是数字量输入和输出混合模块,另一类是模拟量输入和输出混合模块。混合模块就是既具备输入信号也具备输出信号的模块,一般输入和输出的通道是分开的,输入通道只能接输入,而输出通道只能接输出。当然也有那种通用通道的模块,就是该通道既可以接输入也可以接输出,也不区分数字量和模拟量。接线的原则依然是按照说明书接线,越复杂的设备越需要详细解读说明书。在实际工作中,混合模块一般是为了匹配输入和输出点数,同时也节约了模块占位的数量。
图1.7 混合模块分类
如图1.8所示汇总了常用模块的分类信息,大家要对比理解常用模块的使用情况。当然还有其他特殊功能模块没有列出来,在学习的过程中需要查看说明书理解和使用。
图1.8 模块分类图
不同的设备工作方式也不一样。计算机的工作方式为等待命令的工作方式,而PLC的工作方式为循环扫描的工作方式。
PLC的循环扫描原理如下:CPU从第一条指令开始进行周期性地循环扫描,如果无跳转指令,则从第一条指令开始逐条按顺序执行用户程序,直至遇到结束符后又返回第一条指令,周而复始不断循环,每一个循环称为一个扫描周期。一个扫描周期主要分为3个阶段:输入刷新阶段、程序执行阶段和输出刷新阶段。
输入扫描:将输入模块的当前状态读取到CPU的输入映像寄存器中,以备程序扫描。
程序扫描:CPU从第一条用户程序开始,根据输入映像寄存器,及其他数据状态来确定对外部设备的控制,将控制信息送到输出映像寄存器。
输出扫描:将输出映像寄存器的状态传送到输出模块。
如图1.9所示为PLC主要工作原理图和执行过程。PLC周而复始地执行一系列任务,任务循环执行一次称为一个扫描周期,只要CPU在运行状态就会不停地扫描。
CPU模块主要由微处理器(CPU芯片)和存储器组成。CPU模块主要用于诊断PLC电源、内部电路的工作状态及用户程序中的语法错误。采集现场的状态或数据,并输入PLC的寄存器中;逐条读取指令,完成各种运算和操作;将处理结果送至输出端;响应各种外部设备的工作请求。
存储器分为系统程序存储器和用户程序存储器。系统程序存储器用以存放系统管理程序、监控程序及系统内部数据。PLC出厂前已将系统程序固化在只读存储器ROM或PROM中,用户不能更改。用户存储器包括用户程序存储区及工作数据存储区。这类存储器一般由低功耗的CMOS-RAM构成,其中的存储内容可读出并可更改。
图1.9 PLC工作原理示意图
注意: PLC产品手册中给出的“存储器类型”和“程序容量”是针对用户程序存储器而言的。
输入电路中每路输入信号均经过光电隔离、滤波,然后送入输入缓冲器等待CPU采样,每路输入信号均有LED显示,以指明信号是否到达PLC的输入端子,输入信号的电源均可由用户提供,直流输入信号的电源也可由PLC自身提供。输入模块的种类有:直流输入和交流输入。
(1)直流输入。直流输入电路如图1.10所示,虚线框内是PLC内部的输入电路,框外左侧为外部用户连接线,有些小型系统外接的直流电源的极性任意。图中只画出对应于一个输入点的输入电路,而各个输入点对应的输入电路均相同。在图1.10中,T为一个光电耦合器、发光二极管和光电三极管封装在一个管壳中。当二极管中有电流时发光,可使光电三极管导通。 R 1 为限流电阻, R 2 和C构成滤波电路,可滤除输入信号中的高频干扰,LED显示该输入点状态。
图1.10 数字输入接口电路(直流输入)
其工作原理如下:当S闭合时,光电耦合器导通,LED点亮,表示输入开关S处于接通状态。此时A点为高电平,该电平经滤波器送到内部电路中。当在CPU循环的输入阶段锁入该路信号时,将该输入点对应的映像寄存器状态置1;当S断开时,光电耦合器不导通,LED不亮,表示输入开关S处于断开状态。此时A点为低电平,该电平经滤波器送到内部电路中。当CPU在输入阶段锁入该路信号时,将该输入点对应的映像寄存器状态置0,以备在程序执行阶段使用。
(2)交流输入。交流输入的电路如图1.11所示,虚线框内是PLC内部的输入电路,框外左侧为外部用户连接线。图中只画出对应于一个输入点的输入电路,而各个输入点对应的输入电路均相同。在图1.11中,C为隔直电容,此电容对交流电相当于短路,电阻 R 1 和 R 2 构成分压电路。这里光电耦合器中是两个反向并联的发光二极管,任意一个二极管发光均可以使光电三极管导通,用于显示的两个发光二极管LED也是反向并联的,该电路可以接受外部的交流输入电压,其工作原理与直流输入电路基本相同。
图1.11 数字输入接口电路(交流输入)
PLC的输入电路分为汇点式、分组式、隔离式三种。输入单元只有一个公共端子(COM)的称为汇点式,外部输入的元器件均有一个端子与COM相接;分组式是指将输入端子分为若干组,每组分别共用一个公共端子;隔离式输入单元是指具有公共端子的各组输入点之间互相隔离,可各自使用独立的电源。
【扩展理解】 一般用一个开关来反馈信号,但也可以用多个开关来反馈信号。多个开关可以并联,也可以串联来完成一个信号的输入。对于大型系统的直流输入模块,很多COM端固定接负或者接正。COM端固定接负也称为源型(SOURCE),高电平有效,意思是电流从输入点流入(灌电流)时信号为ON。COM端固定接正也称为漏型(SINK),低电平有效,意思是电流从输入点流出(拉电流)时信号为ON。当然光电开关和接近开关也分PNP和NPN输出,为此选择检测开关时输出型式必须和PLC输入模块相适应。负COM端(源型)的PLC输入模块选择PNP输出的开关,正COM端(漏型)的PLC输入模块选择NPN输出的开关。
另外有人会提出这样的疑问:“如果我想直接输入交流信号呢?”一般的处理方法有两种,第1种是交流信号接到中间继电器线圈,通过中间继电器的触点来接入PLC输入模块;第2种是直接选用交流输入的数字量输入模块,将输入信号接入输入模块即可。
数字输出接口的作用是将内部的电平信号转换为外部所需要的电平等级输出信号,并传给外部负载。每个输出点的输出电路可以等效成一个输出继电器,按负载使用电源的不同,可分为直流输出、交流输出和交直流输出三种;按输出电路所用的开关器件不同,可分为晶体管输出、晶闸管输出和继电器输出。它们所能驱动的负载类型、负载的大小和响应时间是不一样的。
(1)继电器输出类型:继电器输出通过线圈的通和断来控制触点输出,为无源触点输出方式,用于接通或断开开关频率较低的直流负载或交流负载回路。
如图1.12所示,K为一小型直流继电器,其工作原理如下:当输出锁存器的对应位为1时,K得电吸合,其常开触点闭合,负载得电,LED点亮,表示该输出点接通;当输出锁存器的对应位为0时,K失电,其常开触点断开,负载失电,LED熄灭,表示该输出点断开。
图1.12 继电器输出电路
继电器输出点负责把公共端和输出点之间接通。如果公共端接负,输出就是负;如果公共端接正,输出就是正;如果接火线L,输出就是火线L;如果接零线N,输出就是零线N。总结成一句话就是:公共端给什么就输出什么。
从图1.12可以看出,继电器输出型PLC的负载电源可以是交流电,也可以是直流电,为有触点开关,带负载能力比较强,一般在2A左右,但寿命比无触点开关要短,开关动作频率也相应低一些,一般小于等于1Hz。
(2)晶体管输出型:如图1.13所示为NPN输出接口电路,它的输出电路采用晶体管驱动,也叫晶体管输出模块。但在实际使用中,晶体管输出模块也不一定全采用三极管,而是采用的其他晶体管,例如S7-200 SMART晶体管输出模块采用的就是MOSFET场效应管。此处讲解的是晶体管输出基本知识,其他类型详见产品样本。在图1.13中,T是光电耦合器,LED用于指示输出点的状态,VT为输出晶体管,VD为保护二极管,可防止负载电压极性接反或高电压、交流电压损坏晶体管。FU为熔断器,可防止负载短路时损坏PLC。其工作原理是:当输出锁存器的对应位为1时,通过内部电路使光电耦合器T导通,从而使晶体管VT饱和导通,使负载得电,同时点亮LED,以表示该路输出点有输出。当输出锁存器的对应位为0时,光电耦合器T不导通,晶体管VT截止,使负载失电,此时LED不亮,表示该输出点状态为0。如果负载是感性的,则必须给负载并接续流二极管(如图1.13右侧虚线所示),使负载关断时,可通过续流二极管释放能量,保护输出晶体管VT免受高电压的冲击。
图1.13 晶体管输出电路
注意: S7-200 SMART晶体管输出为源型(高电平),公共端接正。
晶体管输出模块用于带直流负载,每一个输出点的带负载能力一般为零点几安培。因晶体管输出模块为无触点输出模块,所以使用寿命比较长、响应速度快。
(3)晶闸管输出类型:如图1.14所示,晶闸管输出电路是采用光控双向晶闸管驱动的,所以又叫双向晶闸管输出模块。在图1.14中,T为光控双向晶闸管, R 2 和 C 构成阻容吸收保护电路。其工作原理是:当输出锁存器的对应位为1时,发光二极管导通发光,使双向晶闸管T导通,从而使负载得电,同时输出指示灯LED亮,表示该输出点为ON;当输出锁存器的对应位为0时,双向晶闸管T不导通,负载失电,输出指示灯LED灭,表示该输出点为OFF。
图1.14 晶闸管输出电路
晶闸管输出模块需要外加交流电源,带负载能力一般电压为250V,而电流为1A左右,不同型号的外加电压和带负载的能力有所不同。双向晶闸管为无触点开关,使用寿命较长,反应速度快,可靠性高。
PLC的输出电路分为汇点式、分组式、隔离式等类型。
【扩展理解】 我们要根据实际负载的需求配置PLC输出模块,当出现多种电流和电压类型时,尽量采用统一输出类型的模块来减少系统的复杂性。例如:控制交流负载时,也可以用晶体管输出模块控制直流中间继电器或者接触器,进而控制220V或者380V的交流负载。
PLC的电源是指将外部输入的交直流电源转换成供CPU、存储器、输入和输出接口等内部电路工作需要的直流电源。许多PLC的直流电源采用外部开关电源,不仅可以给模块供电,还可以为输入和输出设备提供负载电源。
一般继电器输出的CPU模块,输入电源是AC220V。而晶体管输出的CPU模块,输入电源是DC24V。有些CPU模块还集成了负载电源。
【扩展理解】 很多小型CPU模块集成直流24V负载电源,此电源的带负载能力很小,一般只有几百毫安。当所需负载电流超出该集成电源时需要外接电源。电源一般不能并联使用,如果CPU集成的24V电源不够,则负载电源可全部采用外部24V电源。
本书不仅讲述方法和经验,还包含学习思路的指引。跟着教程和案例,学习,练习,再实践。还要善于做笔记和自我总结,方便以后回顾。不懂的地方可研究与之相关的知识,及时记录疑问并想办法解决。随着时间的推移,大家就会积累自己的经验并慢慢感悟,逐渐就能独立编程。就像开车一样,拿到驾照之后也是需要实际上路来开车实践的。本书就像导航软件一样对大家进行一些指导和指引,帮助大家找到合适的方法和路线,避免绕远和走弯路,进而提高学习效率。
简单的问题复杂化就是将简单的问题扩充并延伸学习。例如用到了绿色启动按钮,就要去搜索所有类型的按钮,总结出来按钮如何选型、如何接线,以及按钮的类型、品牌、性价比。
复杂的问题简单化就是将复杂的问题简化处理。找准思路,通过对比学习、类比学习等方法来简化问题和难题。有了思路之后再将原来简化的东西填充回去。
各个击破,深度解析。复杂的问题简单化处理就是对于遇到的各种问题,将问题分解,并各个击破,然后深度解析(简单的问题复杂化),解析完毕之后,再重新串联贯穿起来。如果还有问题,继续使用这种方法来分析和处理问题,一直到整体解决为止。
(1)复杂的问题简单化:确定编程用到哪些基本指令,分解开来并专题化学习。
(2)简单的问题复杂化:根据能用到的所有场景将各个指令深入测试和研究,常规和非常规的都要测试。
(3)梯形图思维:每一个指令的变化将会导致不同的结果。用梯形图的思维按照生产工艺去编写程序,逐个分析指令的增减可能导致的结果,修改并完善程序,然后再调试运行。
(4)以被控机械为主、电气控制为辅的原则来实现工艺需求。
(1)自学能力:电气控制技术更新换代比较快,所以需要具备自学能力才能应对逐渐变化的技术发展。
(2)分析能力:电气接线和编程一般都比较复杂,同一现象的发生可能是由多种因素导致的,因此需要良好的分析能力和判断能力。
(3)处理问题的能力:做电气控制要胆大心细,要有处理问题的能力,否则以后面对新的现场和复杂的程序,没有处理问题的能力则无法顺利完成项目。
(1)官网:官网有经典实用案例和特别注意事项,官网有技术客服、软件、手册和说明书。
(2)百度:百度一般有你想要的资料,百度能解决一般的问题,百度也可以给你指引一定的思路。
(3)淘宝:万能的淘宝几乎什么都有,如果想要学习,比较快捷的方法是去淘宝搜索自己需要的设备和器件,没有相同型号的则可以找类似的,卖家将宝贝描述的详细程度让你不懂都不行。这家不行再找下一家,总有一家能解决你的问题。最为突出的就是使用参数和基本的接线,不懂的还可以打电话问淘宝卖家如何使用。
什么叫认知的态度?不管你懂不懂,必须以不懂的态度来学习;不管你会不会,必须以不会的态度来学习。本着借鉴和提升的想法,取其精华去其糟粕,三人行必有我师。我们不是去学习别人的缺点的,所以需要只盯着别人的优点去学习,不好的地方心里有数即可。任何一种学习方法或者一本书都不是完美的,大家要以良好的心态来学习,以提升自己为目的。
不管你具备什么基础知识,既然来学习,我们就会一视同仁地对待。既然你要学习就证明你不是超人,你不是超人就会有所忘记。既然你会有所忘记,你就需要做笔记或者总结文档,方便日后自己不懂的时候拿出来看看,也方便你日后可以教授给其他人。总结一下:把自己当老师来对待,做好将所学知识教给其他人的准备,因为每个人的见解都是独特的。
找到工控圈或者学习群,这样的群体会给你带来不同的价值观、体验观和不同的机会。包括学习机会、开阔视野的机会、就业机会和做工程项目的机会等。我们每个人都需要有自己的圈子,电气人员更需要有这样的圈子。
如果一个人学一门课程没有规划那是失败的。要么按照我们的学习思路,要么按照自己的学习思路制订学习计划表。按照学习计划表去要求和约束自己的行为。学习一门课程所遇到的每一个课题大家都要反问自己:学到什么程度?掌握了哪些内容?
一个人的成长过程是难受的,甚至是痛苦的。就像爬坡,过程很艰辛,但是爬上去以后就会有很多收获。在学习的过程中,可能会面临着一步三个坎,面临着无人问询,或者问谁都不知道,面临着困惑和不知所措,面临着无助和无奈。我们的书籍和课程,是经验的总结,也是方法的介绍。展现在你面前的都是很好的思路。突然自己开始做,就会各种碰壁。碰壁了你就会领悟到方法和思路,碰壁了你才会思考。案例和课程都是相对的,应用实例是千差万别的,学习要学会抓方法找原理,更要改变自己。改变自己的学习方法,改变自己的学习思路,改变自己的思维模式。所有的这些都离不开“坚持”两个字,否则一事无成。
不管大家出于什么原因来选择学习电气控制或者PLC编程,只要选择了就要坚持下去。编程确实能改变原来的思维,不管是从思想上还是从认知上都会有一定的提升。
反问一下自己:学习PLC编程要达到一种什么高度?如何保证自己达到这个高度?自己将做出如何的努力?
学习电气控制和PLC编程要确定学习目标和自己努力的途径。这样才能有的放矢,否则就变成了想学就学,不想学就拉倒了。如果你的学习效率和学习劲头差,那你就是在浪费生命,还不如学点你感兴趣的学科。要想在任何一门学科学有所成,必须付出一定的辛苦和努力,天上掉馅饼的事情不存在。你也不一定是天才,就算你是天才你也不可能什么都会,所以学习永远不晚。社会在发展,科技在进步。现在干什么的人都多,所有的事情都在往高、精、尖的方向发展。如果我们不孤注一掷努力学习,后悔的永远是自己。不管你干什么,只有达到了高、精、尖,做出了成绩,才能实现自我的价值。所以努力吧,学习永远不晚!
请大家按照自己的实际情况如实填写3个问题。
学习的目的:_________________________________________________________________。
努力的途径:_________________________________________________________________。
想要的高度:_________________________________________________________________。