9
为主要讲授对象。西门子的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中的程序上传到计算机。编程软件还有对网络和硬件组态、参数设置、监控和故障诊断等功能。
使用该指令是将地址寄存器AR1的内容加上作为地址偏移量的累加器1中低字的内容,或加上指令中的16位常数,结果在AR1( AR2)中。首先将整数(16位)扩展为符号正确的24位,然后将其加到AR1的较低有效的24位(AR1中的相对地址的部分)。在AR1( AR2)中,区域ID的部分(*24~ 26位)保持不变。要加到AR1、AR2的内容中的整数(16位)由ACCU 1的低字中的值*。允许值的范围为-32768~+32767。参数P#Byte. Bit(被加到AR1或AR2上的地址)的数据类型为指针常数。要加到AR1、AR2的内容中的偏移量由参数P#Byte,Bit地址*。指令的执行与状态位无关,而且对状态位没有影响。
+AR1:加地址寄存器1中内容的整数(16位)通过累加器1低字中的数值定义,允许范围为-32768~+32767。
+AR1<P#Byte. Bit>:要加上的偏移量通过<P#Byte. Bit>地址定义。
编程示例1:
L +300 说明:将数值装入累加器1低字中
+AR1 将累加器1低字中的内容(整数,16位)加到地址寄存器1
编程示例2:
+ AR1 P#300.0 说明:将偏移量300.0加到地址寄存器1
2.+AR2加累加器1至地址寄存器2*(+AR2、+LAR2<P#Byte. Bit>)
使用该指令,可以将语句中或累加器1低字中定义的偏移量加至地址寄存器2。首先将整数(16位)扩展为带有其正确符号的2位数,然后加到地址寄存器2的较低有效24位(地址寄存器2中部分相关地址)。地址寄存器2中ID区部分(位24、25和26)保持不变。指令的执行与状态位无关,而且对状态位没有影响。
①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交换共享数据块和背景数据块
使用该指令,可以交换共享数据块和背景数据块。该指令可以交换数据块寄存器。一个共享数据块可转换为一个背景数据块,反之亦然。
①STL形式的打开主控继电器指令“MCR(”。使用“MCR(”打开一个MCR区域指令,可以将RLO保存在MCR堆栈中,并打开一个MCR区域。MCR区域是编程在指令“MCR(”和相应指令“)MCR”之间的指令。指令“MCR(”和“)MCR”必须总是组合使用。
如果RLO =1,则MCR激活。而在该MCR区中的MCR相关指令正常执行。如果RLO =0,则MCR去激活。而在该MCR区中的MCR相关指令根据表3-79执行。
表3-79 MCR的信号状态
MCR的信号状态
MCR的信号状态
②LAD形式的主控继电器接通指令-(MCR>)。“-(MCR<)”(主控继电器区打开指令)用于将RLO保存在MCR堆栈中。以下元素与MCR有关,并在打开一个MCR区时,受保存在MCR堆栈中的RLO状态的影响:
-(#) 中间输出
-( ) 输出
-(s) 输出置位
-(R) 输出复位
RS 复位触发器
SR 置位触发器
MOVE 赋值
①STL形式的主控制继电器断开指令“)MCR”。
如果RLO =1,则MCR激活。而在该MCR区中的MCR相关指令正常执行。
如果RLO =0,则MCR去激活。
“MCR(”:开始MCR区域;“)MCR”:结束MCR区域。
MCR由一个1位宽、8位深的堆栈控制。当所有8个输入项都为“1”时,MCR激活。使用“MCR(”指令,可以将RLO位复制到MCR堆栈中。使用“)MCR”指令,可以删除堆栈中的最后一个输入项,并总是空出*1层。
块调用指令( CALL)用来调用功能块(FB)、功能(FC)、系统功能块(SFB)或系统功能( SFC),或调用西门子预先编好的其他标准块。
在CALL指令中,FC、SFC、FB和SFB是作为地址输入的,逻辑块的地址可以是**地址或符号地址。CALL指令与RLO和其他任何条件无关。在调用FB和SFB时,应提供与它们配套的背景数据块(Instance DB)。而调用FC和SFC时,则不需要背景数据块。处理完被调用的块后,调用它的程序继续其逻辑处理。在调用SFB和SFC后,寄存器的内容被。恢复。
使用CALL指令时,应将实参(Actual Parameter)赋给被调用的功能块中的形参(Formal Parameter),并**实参与形参的数据类型一致。
使用语句表编程时,CALL指令中被调用的块应是已经存在的块,其符号名也应该是已经定义过的。
在调用块时可以通过变量表交换参数,用编程软件编写语句表程序时,如果被调用的逻辑块的变量声明表中有IN、OUT和IN_OUT类型的变量,则输入CALL指令后编程软件会自动地打开变量表,只需对各形参填写对应的实参即可。
在调用FC和SFC时,必须为所有的形参*实参。调用FB和SFB时,只需*上次调用后必须改变的实参。由于FB被处理后,实参储存在背景数据块中。如果实参是数据块中的地址,必须*完整的**地址,如DB1. DBW2。
逻辑块的IN(输入)参数可以*为常数、**地址或符号地址。OUT(输出)和IN_OUT(输入_输出)参数必须*为**地址或符号地址。
CALL指令保存被停止执行的块的编号和返回地址及当时打开的数据块的编号。此外,CALL指令关闭MCR区,生成被调用的块的局域数据区。
①CALL块调用指令:CALL<逻辑块标识符>。使用该指令,可以调用功能(FC)或功能块( SFB)、系统功能(SFC)或系统功能块(SFB),或调用由西门子公司提供的标准预编程块。使用CALL块指令,可以调用作为地址输入的FC和SFC或FB和SFB,与RLO或其他条件无关。如果使用该指令调用一个FB或SFB,必须提供具有相关背景数据块的程序块。在被调用块处理完后,调用块程序继续逻辑处理。逻辑块的地址可以***,也可相对*。在SFB、SFC调用后,保存寄存器的内容。
调用块可通过一个变量表与被调用块交换参数。
如果调用一个功能块(FB)、系统功能块(SFB)、功能(FC)或系统功能(SFC),并且被调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到调用块中。如果调用的是一个功能(FC)和系统功能(SFC),则必须在调用逻辑块中为声明的形式参数赋予实际参数。
如果调用的是功能块( FB)和系统功能块(SFB),只需定义与以前调用相比必须进行修改的实际参数。在处理完功能块后,实际参数保存在背景数据块中。如果实际参数是一个数据块,则必须*完整的**地址,如DB1、KBW2。
IN参数可作为常数、**地址或符号地址定义。OUT和IN_OUT参数必须作为**地址或符号地址定义。必须**所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。此外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。
编程示例1:为FC6调用赋值参数
CALL FC6
形式参数 实际参数
NO OF TOOL :=MW100
TIMEOUT :=MW110
FOUND :=Q0.1
ERROR :=Q100.0
编程示例2:无参数调用一个系统功能( SFC)
CALL SFC43 说明:调用SFC43,重新触发看门狗定时器(无参数)
编程示例3:使用背景数据块DB1调用FB99
CALL FB99.DB1
形式参数 实际参数
MAX_RPM :=#RPM1_MAX
MIN_RPM :=#RPM1
MAX_ POWER :=#POWER1
MAX_TEMP :=#TEMP1
每一次功能块(FB)或系统功能块(SFB)调用都必须有一个背景数据块。在上述举例中,数据块DB1必须在调用之前已存在。
②调用功能块指令:CALL FB nl、DB nl。使用该指令,可调用用户定义的功能块(FB)。调用指令能够调用作为地址输入的功能块,与RLO或其他条件无关。如果使用调用指令调用一个功能块,必须为它提供一个背景数据块。在处理完被调用块后,调用块程序继续处理。逻辑块的地址可以是**地址,也可以是符号地址。
调用块可通过一个变量表与被调用的块交换参数。
如果调用一个功能,并且调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。
由于在功能块处理完之后,实际参数保存在背景数据块中,当调用功能块时,只需定义与以前调用相比必须修改的实际参数。如果实际参数是一个数据块,则必须*完整的**地址,如DB1、DBW2。
IN参数可作为常数、**地址或符号地址定义。OUT和IN_OUT参数必须作为**地址或符号地址定义。必须**所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。此外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。
编程示例:使用背景数据块DB1调用FB99
CALL FB99,DB1
形式参数 实际参数
MAX_RPM :=#RPM1_MAX
MIN_RPM :=#RPM1
MAX_POWER :=#POWER1
MAX_TEMP :=#TEMP1
每一次功能块( FB)调用都必须有一个背景数据块。在上述举例中,数据块DB1必须在调用之前已存在。
③调用功能指令:CALL FCn。如果使用的是语句表编辑器(STL Editor),则n必须指向现有有效块。在使用之前,还必须定义符号名。
使用该指令,可调用功能( FC)。调用指令能够调用作为地址输入的功能(FC),与RLO或其他条件无关。在处理完被调用块后,调用块程序继续处理。逻辑块的地址可以***,也可相对*。
调用块可通过一个变量表与被调用的块交换参数。
如果调用一个功能,并且调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。
在调用功能时,必须在调用逻辑块中为声明的形式参数赋予实际参数。
IN参数可作为常数、**地址或符号地址定义。OUT和IN_OUT参数必须作为**地址或符号地址定义。必须**所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。除此之外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。
编程示例:为FC6调用赋值参数
CALL FC6
形式参数 实际参数
NO OF TOOL :=MW100
TIMEOUT :=MW110
FOUND :=Q0.1
FRROR :=Q100.0
④调用多背景块指令:CALL#变量名。通过使用一个功能块的数据类型声明一个静态变量,可以生成一个多背景块。在程序元素目录中只包含已声明的多背景块。
⑤条件调用指令:CC<逻辑块标识符>。使用该指令,可以在RLO =1时调用一个逻辑块。该指令用于无参数调用FC或FB类型的逻辑块。除了不能使用调用程序传送参数之外,CC指令与CALL指令的用法相同。该指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中,去激活MCR相关性,生成被调用块的本地数据范围,并开始执行调用的程序代码。
逻辑块的地址可以***,也可相对*。
编程示例1:
A I 2.0 说明:检查输入I2.0的信号状态
CC FC6 如果I2.0为“1”,调用功能FC6
A M 3.0 如果I2.0=1,从调用功能返回处执行;如果I2.0=0,直接在A I2.0语句后执行
如果CALL指令调用的是一个功能块(FB)或一个系统功能块(SFB),必须在语句中*一个背景数据块(数据块号)。对于使用CC指令的调用,不能将一个数据块分配给语句中的地址。
根据所使用的程序段,程序编辑器( Program Editor)可以在从梯形逻辑编程语言转换为语句表编程语言过程中,生成UC指令或CC指令。
编程示例2(功能块FB1的背景数据块是DB1,“:=”前面是用符号地址表示的形参,“:=”后面是实参):
CALL FB1,DB1
Switch_On :=I20.0 说明:将实参I20.0赋给形参Switch_On
Switch_Off :=I20.1
Failure :=I20.2
ActuaLSpeed :=MW2
Engine_On :=Q5.0
Preset_Speed_Reached:=Q5.1
CALL SFC43 调用SFC43,重新触发监控定时器(无参数)
每一个FB和SFB都必须有一个背景数据块,上例中在调用FB1之前,FB1和背景数据块DB1必须是已经存在的。
⑥无条件调用指令UC( Unconditional Block Call)和条件调用指令CC( Conditional Block Call)。用于调用没有参数的FC和SFC。其使用方法与CALL指令相同,只是在调用时不能传递参数。CC指令在逻辑运算结果RLO =1时才调用块。用CC指令和UC指令调用块时,不能使用背景数据块。下面是使用CC指令和UC指令的例子。
A I0.1 说明:刷新RLO
CC FC6 如果RLO=1,调用没有参数的功能FC6
L IW4 从FC6返回后执行,或在I0.1=0时不调用FC6,直接执行本指令
UC FC2 无条件调用没有参数的功能FC2
在CALL指令中,FC、FB、SFC和SFB是作为地址输入的,其地址可以是**地址,或者是符号地址。在调用FB和SFB时,必须提供与之相对应的背景数据块;而调用FC和SFC时,不需调用背景数据块。
在调用时,应将实参赋予被调用功能中的形参,并确保实参和形参数据类型相同,并且在FC和SFC的调用中,必须为所有形参*实参,而调用FB和SFB,则只需*上次调用后必须改变的实参。
FB功能块的具体调用(指令表程序)如下。
CALL FB1,DB1 说明:调用FB1,其背景数据块为DB1
MAX :=MW10 MAX为FB1定义的参数,将MW10的值赋予MAX
MIN :=MW20 将MW20的值赋予FB1参数MIN
POWER_ON :=I 0.0 将I0.0赋予FB1参数POWER_ON
POWER_OFF:=I 0.1 将I0.1赋予FB1参数POWER_OFF
程序中调用了背景数据块DB1,并将实参(“;=”之后的变量)赋予形参(“;”之前的变量)。
茂名西门子代理商-长沙西门子CPU模块代理商-淮北西门子代理商-成都西门子代理商