CPU的程序分为操作系统和用户程序。操作系统用来处理plc的启动、刷新过程映像输入/输出区、调用用户程序、处理中断和错误、管理存储区和通信等任务。
用户程序由用户生成,用来实现用户要求的自动化任务。STEP 7将用户编写的程序和程序所需的数据放置在块中,功能块FB和功能FC是用户编写的子程序,系统功能块SFB和系统功能SFC是操作系统提供给用户使用的标准子程序,它们和组织块OB统称为逻辑块。
PLC得电或由STOP模式切换到RUN模式时,CPU执行启动操作,将没有断电保持功能的位存储器、定时器和计数器清零,清除中断堆栈和块堆栈的内容,复位保存的硬件中断等。此外还要执行一次用户生成的“系统启动”组织块OB100,完成用户*的初始化操作。以后PLC采用循环执行用户程序的方式,这种运行方式也称为扫描工作方式。
在PLC的存储器中,设置了一片区域用来存放输入信号和输出信号的状态,它们分别称为过程映像输入区和过程映像输出区。PLC梯形图中的其他编程元件也有对应的存储区。
下面是循环处理的各个阶段的任务(见图):
1)操作系统启动循环时间监控。
2) CPU将过程映像输出区的数据写到输出模块。
3) CPU读取输入模块的输入状态,并存入过程映像输入区。
4) CPU处理用户程序,执行用户程序中的指令。
5)在循环结束时,操作系统执行其他任务,例如下载和删除块,接收和发送全局数据等。
图 扫描过程
6) CPL返回一阶段,重新启动循环时间监控。
在启动完成后,每次循环都要调用一次组织块OB1。OB1是用户程序中的主程序,它可以调用别的逻辑块(FB、FC、SFB或SFC)。循环程序处理过程可以被某些事件中断。如果有中断事件出现,当前正在执行的块被暂停执行,并自动调用分配给该事件的组织块。该组织块被执行完后,被暂停执行的块将从被中断的地方开始继续执行。
在循环程序处理过程中,CPU并不直接访问I/O模块中的输入地址区和输出区,而是访问CPU内部的过程映像区。
在读输入模块阶段,PLC把所有外部输入电路的接通/断开状态读人过程映像输入区。
外部输入电路接通时,对应的过程映像输入位为1状态,梯形图中该输入位的常开触点接通,常闭触点断开。外部输入电路断开时,对应的过程映像输入位为0状态,梯形图中该输入位的常开触点断开,常闭触点接通。
某一编程元件对应的位为1状态时,称该编程元件的状态为ON,该位为0状态时,称该编程元件的状态为OFF。在程序执行阶段,即使外部输入电路的状态发生了变化,过程映像输入位的状态也不会随之而变,输入信号变化了的状态只能在下一个扫描循环周期的读取输入模块阶段被读入过程映像输入区。
PLC的用户程序由若干条指令组成,指令在存储器中顺序排列。在没有跳转指令和块调用指令时,CPU从一条指令开始,逐条顺序地执行用户程序,直到用户程序结束之处。在执行指令时,从过程映像输入区或别的存储区中将有关编程元件的0、1状态读出来,并根据指令的要求执行相应的逻辑运算,运算的结果写入到对应的存储区中,因此,各编程元件的存储区的内容随着程序的执行而变化。
在数字量(或称开关量)控制系统中,变量仅有两种相反的工作状态,例如高电平和低电平、继电器线圈的通电和断电,可以分别用逻辑代数中的1和0来表示这些状态,在波形图中,用高电平表示1状态,用低电平表示0状态。
使用继电器电路、数字电路或plc的梯形图都可以实现数字量的逻辑运算。图的上面是PLC的梯形图,下面是对应的数字门电路。
图中的I0.0~I0.4为数字输入变量,Q4.0~Q4.2为数字输出变量,它们之间的“与”、“或”、“非”逻辑运算关系如表1-1所示。“与”运算仅在输入均为1时输出才为1,“或”运算仅在输入均为0时输出才为0。“非”运算的输出与输入的状态总是相反,非运算又称为“取反”。
a)与b)或c)非
用继电器电路或梯形图可以实现基本的逻辑运算,触点的串联可以实现“与”运算,触点的并联可以实现“或”运算,用常闭触点控制线圈可以实现“非”运算。
多个触点的串、并联电路可以实现复杂的逻辑运算,例如图中的继电器电路实现的逻辑运算可以用逻辑代数表达式表示为
式中的加号表示逻辑或,乘号(·)或星号(*)表示逻辑与,变量上面的横线表示“非”运算。与普通算术运算“先乘除后加减”类似,逻辑运算的规则为先“与”后“或”。为了先作“或”运算(触点的并联),用括号将“或”运算式括起来,括号中的运算**执行。
西门子的PLC以其高的性能价格比,在占有很大的份额,在我国的各行各业得到了广泛的应用。S7-300/400属于模块式PLC,主要由机架、CPU模块、信号模块、功能模块、接口模块、通信处理器、电源模块和编程计算机组成,各种模块安装在机架上。通过CPU模块或通信模块上的通信接口,PLC被连接到通信网络,可以与计算机、其他PLC或其他设备通信。
1.CPU模块
CPU模块主要由微处理器(CPU芯片)和存储器组成。在PLC控制系统中,CPU模块相当于人的大脑和心脏,它不断地采集输入信号,执行用户程序,刷新系统的输出;存储器用来储存程序和数据。S7 - 300/400将CPU模块简称为CPU。
2.信号模块
输入( Input)模块和输出(Output)模块简称为I/O模块,开关量输入、开关量输出模块简称为DI模块和DO模块,模拟量输入、模拟量输出模块简称为AI模块和AO模块,它们统称为信号模块。信号模块是系统的眼、耳、手、脚,是联系外部现场设备和CPU模块的桥梁。
输入模块用来接收和采集输入信号,开关量输入模块用来接收从按钮、选择开关、数字拨码开关、限位开关、接近开关、光电开关、压力继电器等来的开关量输入信号。模拟量输入模块用来接收电位器、测速发电机和各种变送器提供的连续变化的模拟量电流、电压信号,或者直接接收热电阻、热电偶提供的温度信号。
开关量输出模块用来控制接触器、电磁阀、电磁铁、指示灯、数字显示装置和报置等输出设备,模拟量输出模块用来控制电动调节阀、变频器等执行器。
CPU模块内部的工作电压一般是DC 5V,而PLC的外部输入/输出信号电压一般较高,例如DC 24V或AC 220V。从外部引入的尖峰电压和干扰噪声可能损坏CPU模块中的元器件,或使PLC不能正常工作。在信号模块中,用光耦合器和小型继电器等器件来隔离PLC的内部电路和外部的输入、输出电路。信号模块除了传递信号外,还有电平转换与隔离的作用。
3.功能模块
为了增强PLC的功能,扩大其应用领域,减轻CPU的负担,PLC厂家开发了各种各样的功能模块。它们主要用于完成某些对实时性和存储容量要求很高的控制任务,例如高速计数、位置控制和闭环控制等。
4.接口模块
CPU模块所在的机架称为*机架,如果一个机架不能容纳全部模块,可以增设一个或多个扩展机架。接口模块(简称为IM)用来实现*机架与扩展机架之间的通信。
5.通信处理器
通信处理器(简称为CP)用于PLC之间、PLC与远程I/O之间、PLC与计算机和其他智能设备之间的通信,可以将S7 - 300/400接入各种通信网络,CP也用于实现点对点通信等。CPU模块集成有MPI通信接口,有的CPU模块还集成了其他通信接口。
6.电源模块
电源模块(简称为PS)用于将输入的AC 220V电源或DC 24V电压转换为稳定的DC 24V和DC 5V电压,供其他模块和输出模块的负载使用。
7.编程设备
S7 - 300/400一般使用安装了编程软件STEP 7的个人计算机作为编程设备,可以生成和编辑各种文本程序或图形程序。程序被编译后下载到PLC,也可以将PLC中的程序上传到计算机。编程软件还有对网络和硬件组态、参数设置、监控和故障诊断等功能。
①STL形式的打开数据块指令“OPN<数据块>”。使用打开数据块指令,可以打开一个数据块作为共享数据块或背景数据块,可以同时打开一个共享数据块和一个背景数据块。访问已打开的数据块内的存储单元时,其地址中不必指明是哪一个数据块的存储单元,如打开数据DB10后,DB10. DBW35可简写为DBW35。
编程示例:
OPN DB10 说明:打开数据块DB10作为共享数据块
L DBW35 将打开数据块的数据字DBW35装入累加器1低字中
T MW22 将累加器1低字中的内容传送到存储字MW22
OPN DB20 打开数据块DB20作为背景数据块
L DIB12 将打开背景数据块的数据字节12装入累加器1低字中
T DBB37 将累加器1低字中的内容传送到打开共享数据块的数据字
节DBB37
②LDA形式的打开数据块指令“-(OPN)”。“-(OPN)”(打开数据块指令)可以打开一个共享数据块( DB)或背景数据块(DI)。“-( OPN)”功能是一种数据块无条件调用功能。数据块的编号被传送到DB或DI寄存器。在此之后,DB和DI指令根据寄存器的内容访问相应的数据块。
编程示例如图所示:数据块10( DB10)被打开。接点地址( DBX0.0)指的是数据块DB10中包含的当前数据记录的数据字节0的0位。该位的信号状态被赋值给输出Q4.0。
图 打开数据块指令使用示例
CDB交换共享数据块和背景数据块
使用该指令,可以交换共享数据块和背景数据块。该指令可以交换数据块寄存器。一个共享数据块可转换为一个背景数据块,反之亦然。
6ES72111BE400XB0 | CPU 1211C AC/DC/Rly,6输入/4输出,集成2AI |
6ES72111AE400XB0 | CPU 1211C DC/DC/DC,6输入/4输出,集成2AI |
6ES72111HE400XB0 | CPU 1211C DC/DC/Rly,6输入/4输出,集成2AI |
6ES72121BE400XB0 | CPU 1212C AC/DC/Rly,8输入/6输出,集成2AI |
6ES72121AE400XB0 | CPU 1212C DC/DC/DC,8输入/6输出,集成2AI |
6ES72121HE400XB0 | CPU 1212C DC/DC/Rly,8输入/6输出,集成2AI |
6ES72141BG400XB0 | CPU 1214C AC/DC/Rly,14输入/10输出,集成2AI |
6ES72141AG400XB0 | CPU 1214C DC/DC/DC,14输入/10输出,集成2AI |
6ES72141HG400XB0 | CPU 1214C DC/DC/Rly,14输入/10输出,集成2AI |
6ES72151BG400XB0 | CPU 1215C AC/DC/Rly,14输入/10输出,集成2AI/2AO |
6ES72151AG400XB0 | CPU 1215C DC/DC/DC,14输入/10输出,集成2AI/2AO |
6ES72151HG400XB0 | CPU 1215C DC/DC/Rly,14输入/10输出,集成2AI/2AO |
6ES72171AG400XB0 | CPU 1217C DC/DC/DC,14输入/10输出,集成2AI/2AO |