PLC程序变量
(1) 变量与参数。“变量”与“参数”是S7中常用的名词,在不同的使用场合有不同的含义。为了防止概念的混淆,可根据不同的用途,将S7中的变量分为“程序变量”与“诊断变量”两大类;将参数分为"程序参数"与"配置参数(组态参数)"两大类。
“诊断变量”用于PLC调试阶段,如“变量表调试”所指的就是“诊断变量”。诊断变量包括的范围很广、凡是PLC中可以赋值或进行显示的信号与数据统称为诊断变量(Varlable),它包括输入、输出、内部标志寄存器、定时器、计数器、数据块中的内容等。
“配置参数(组态参数)”用于PLC硬件的配置(组态),通过“配置参数(组态参数)”的设定,可以定义PLC的组成模块、I/O地址、通信接口等。
“程序变量”与“程序参数”是在PLC程序设计阶段需要使用的“变量”与“参数”。因此,除非特别说明,这里所讲的“变量”均是指“程序变量”,“参数”均是指“程序参数”;而在调试部分,硬件组态(配置)部分所述的“变量”均是指“诊断变量”,“参数”均是指“配置参数”。
S7可以使用的"程序变量"包括程序参数、局部变量(又称临时变量Temporary)、静态变量(Static)3 种基本类型,并且有规定的使用范围。
(2) 变量的作用。在PLC程序中可以使用变量,是S7系列PLC的特点之一。在S7中使用变量可以实现以下功能:
1) 增加程序的通用性。在PLC程序设计阶段,为了提高程序的通用性,可以通过变量使得同一逻辑块用在不同的控制场合。
例如:对于图5-35所示的逻辑块,设其功能为实现逻辑运算C=B·A;D=D 1,并且采用变量进行编程。
调用该逻辑块时,若对变量A赋值为I0.1、变量B 赋值为I0.2、变量D赋值为MW10、变量C赋值为Q01 时,程序的执行结果为:
Q0.1=I02·I0.1:MW10=MW10 1。
图5-35 变量的作用
2) 便于程序检查。使用了变量后,在调用该逻辑块时,在调用指令中可以显示该逻辑块所需要的相应输入、输出信号(见图5-36),以方便程序设计与检查。
由于S7对变量与符号地址有规定的格式要求(不可以使用S7关键词,有关S7的关键词可以参见附录),因此,在图5-36中已经将图5-35所对应的逻辑块变量A、B、C、D、分别采用了符号地址IN_A、IN_B、OUT_C、INOUT_D进行编程。
图5-36 调用变量编程的块
(3) 变量的分类与使用范围。S7可以使用的"程序变量"包括程序参数、局部变量(又称临时变量Temp)、静态变量(Stat)3种基本类型。
1) 程序参数。S7的程序参数用于传递逻辑块之间的数据。当采用调用式结构时,应通过参数定义执行被调用的逻辑块所需要的数据;也可以通过参数将被调用的逻辑块的执行结果返回给调用的块。
在S7中,从参数的用途与功能上,程序参数可以分为输入参数(IN)、输出参数(OUT)、输入/输出参数(IN_OUT)3种;从参数的性质上可以分为形式参数(Format Parameter)与实际参数(Actual Parameter)2种。
● 输入参数(IN):它是逻辑块执行所需要的基本输入参数,在逻辑块中只能进行"读"操作,必须由调用它的其他逻辑块予以赋值。
例如,在图5-35中,信号A、B在逻辑块中为"触点"信号,它必须由调用它的块将其定义为I0.1、10.2或11.1、11.2等具体而明确的输入地址(可以是**地址或符号地址,参见图5-36)。
● 输出参数(OUT):它是逻辑块执行结果存储所需要的基本输出参数,在逻辑块中只能进行"与"操作,必须由调用它的其他逻辑块定义地址,执行结果可以用于其他逻辑块。
例如,在图5-35中的信号C在逻辑块中为输出"线圈"信号,同样必须由调用它的逻辑块将其定义为Q0.1或Q1.1等具体而明确的输出(可以是**或符号地址,参见图5-36)。
● 输入/输出参数(IN_OUT):它是逻辑块执行所需要的基本输入/输出参数,在逻辑块中可以进行“读/写”操作。在逻辑块中一方面要求有“初始值”输入(初始值可以在变量表中设定),另一方面又可以进行输出。因此,必须由调用它的其他逻辑块或变量表给定"初始值";但在逻辑块的执行过程中将改变参数值,改变后的输入/输出参数同样可以用于其他逻辑块。
例如,在图5-35中的D在逻辑块需要进行加"1"运算,它必须由调用它的块给定初始值(MW10),运算结果同时又保存在MW10中(参见图5-36)。
● 形式参数与实际参数:在使用了变量后,功能块中所使用的信号与数据只能以“符号”的形式出现,如图5-35中的A、B、C、D等,这些“符号”称为形式参数(Format Parameter)。而在调用块中对“符号”所赋予的实际地址或实际数值,如图5-36中的10.1、10.2、00.1、MW10等称为实际参数(Aetual Parameter)。
2) 局部变量。S7中的局部变量又称为"临时变量(Temporary)",它用于存储逻辑块内中间状态暂存的寄存器(堆栈L),堆栈的状态仅在所在的逻辑块内生效,不可以用于其他逻辑块。
3) 静态变量。静态变量(Static)只能用于功能块FB,它存储在与功能块配套的即时数据块DI中,仅对所调用的FB块有效,结果可以记忆,但只能与FB配套使用,不能用于其他逻辑块。
4) 变量的使用范围。程序变量在逻辑块中的使用有规定的范围,具体如下。
●组织块OB:只能使用临时变量(Temp);
● 程序块FC;可以使用临时变量(Temp)与程序参数输入(IN)、输出(OUT)与输入/输出(IN/out);
● 功能块FB:可以使用全部变量。
西门子代理商西门子PLC代理商
西门子授权代理商
西门子模块代理商
西门子总代理商
6ES7211-1BE40-0XB0 | CPU 1211C AC/DC/Rly,6输入/4输出,集成2AI |
6ES7211-1AE40-0XB0 | CPU 1211C DC/DC/DC,6输入/4输出,集成2AI |
6ES7211-1HE40-0XB0 | CPU 1211C DC/DC/Rly,6输入/4输出,集成2AI |
6ES7212-1BE40-0XB0 | CPU 1212C AC/DC/Rly,8输入/6输出,集成2AI |
6ES7212-1AE40-0XB0 | CPU 1212C DC/DC/DC,8输入/6输出,集成2AI |
6ES7212-1HE40-0XB0 | CPU 1212C DC/DC/Rly,8输入/6输出,集成2AI |
6ES7214-1BG40-0XB0 | CPU 1214C AC/DC/Rly,14输入/10输出,集成2AI |
6ES7214-1AG40-0XB0 | CPU 1214C DC/DC/DC,14输入/10输出,集成2AI |
6ES7214-1HG40-0XB0 | CPU 1214C DC/DC/Rly,14输入/10输出,集成2AI |
6ES7215-1BG40-0XB0 | CPU 1215C AC/DC/Rly,14输入/10输出,集成2AI/2AO |
6ES7215-1AG40-0XB0 | CPU 1215C DC/DC/DC,14输入/10输出,集成2AI/2AO |
6ES7215-1HG40-0XB0 | CPU 1215C DC/DC/Rly,14输入/10输出,集成2AI/2AO |
6ES72171AG400XB0 | CPU 1217C DC/DC/DC,14输入/10输出,集成2AI/2AO |
浔之漫智控技术(上海)有限公司专注于西门子等