西门子plc可以使用的“程序变量”包括程序参数、局部变量(又称临时变量temp)、静态变量(stat)3种基本类型。
(1)程序参数
s7的程序参数用于传递逻辑块之间的数据。当采用调用式结构时,应通过参数定义执行被调用的逻辑块所需要的数据:也可以通过参数将被调用的逻辑块的执行结果返回给调用的块。
在s7中,从参数的用途与功能上,程序参数可以分为输入参数(in)、输出参数(out)、输入/输出参数(in out)3种;从参数的性质上可以分为形式参数(format parameter)与实际参数( actual parameter)2种。
①输入参数(in):它是逻辑块执行所需要的基本输入参数,在逻辑块中只能进行“读”操作,必须由调用它的其他逻辑块予以赋值。
例如,在图11-2.1中,信号a、b在逻辑块中为“触点”信号,它必须由调用它的块将其定义为io.1、i0.2或il.l、i1.2等具体而明确的输入地址(可以是绝对地址或符号地址,参见图11-2.2)。
②输出参数(out):它是逻辑块执行结果存储所需要的基本输出参数,在逻辑块中只能进行“写”操作,必须由调用它的其他逻辑块定义地址,执行结果可以用于其他逻辑块。
例如,在图11-2.2中的信号c在逻辑块中为输出“线圈”信号,同样必须由调用它的逻辑块将其定义为qo.1或ql.l等具体而明确的输出地址(可以是绝对地址或符号地址,参见图11-2.2)。
③输入/输出参数(in- out):它是逻辑块执行所需要的基本输入/输出参数,在逻辑块中可以进行“读/写”操作,在逻辑块中一方面要求有“初始值”输入(初始值可以在变量表中设定),另一方面又可以进行结果输出。因此,必须由调用它的其他逻辑块或变量表给定“初始值”;但在逻辑块的执行过程中将改变参数值,改变后的输入/输出参数同样可以用于其他逻辑块。
例如,在图11-2.2中的d在逻辑块中需要进行加“1”运算,它必须由调用它的块给定初始值( mw10),运算结果同时又保存在mw10中(参见图11-2.2)。
④形式参数与实际参数:在使用了变量后,功能块中所使用的信号与数据只能以“符号”的形式出现,如图11-2.2中的a、b、c、d等,这些“符号”称为形式参数(format parameter)。而在调用块中对“符号”所赋予的实际地址或实际数值,如图11-2.2中的io.1、i0.2、qo.1、mw10等称为实际参数(actual parameter)。
(2)局部变量
s7中的局部变量又称为“临时变量(temporary)”,它用于存储逻辑块内部中间状态暂存的寄存器(堆栈l),堆栈的状态仅在所在的逻辑块内部生效,不可以用于其他逻辑块。
(3)静态变量
静态变量( static)只能用于功能块fb,它存储在与功能块配套的即时数据块di中,仅对所调用的fb块有效,结果可以记忆,但只能与fb配套使用,不能用于其他逻辑块。
(4)变量的使用范围
程序变量在逻辑块中的使用有规定的范围,具体如下:
组织块ob:只能使用临时变量(temp);
程序块fc:可以使用临时变量(temp)与程序参数输入(in)、输出(out)与输入/输出(in_out):
功能块fb:可以使用全部变量。