函数、方法调用和功能块调用的一般规则和性能都可在指令表编程语言使用。
1.函数和函数的调用
指令表编程语言中,函数的调用较简单。它通过在操作符区域用函数名替代来调用,分为格式参数的调用和非格式参数的调用两种。
1)带非形参表的函数或方法调用。编程语言的格式如下:
函数名 非形参,非形参,…,非形参
2)带形参表的函数或方法调用。编程语言的格式如下:
函数名(第一形参:=实参,…,最后形参:=实参)
【例2-4】非形参的函数调用示例。
【例2-5】带形参的函数调用示例。
示例中,调用INSERT函数,第一参数是IN1,用实参'ABC'赋值给IN1,同样,用实参'XYZ'赋值给IN2,用实参2赋值给P,调用该函数后,当前结果存储器存放的字符串是'ABXYZC'。需注意,一些软件系统不一定具有带形参的函数调用性能。
表2-6是函数调用的格式和示例。表中的序号与IEC 61131-3标准中表69的序号对应,下同。
表2-6 函数调用的格式和示例
函数调用时的注意事项如下:
1)非形参表即实参表,是实际应用参数组成的参数表。形参表是函数中定义的参数,在实际应用时必须用实际参数代入。
2)非形参的函数调用指令中,第一个参数是当前结果存储器存储的结果。因此,在函数调用前,用有关指令将被调用函数的第一参数送当前结果存储器。
3)函数调用与指令的区别是函数可有多个参数。示例中,ADD作为函数调用时,可附多个用逗号分隔的参数,程序简单,描述清晰;ADD作为指令使用时,对上述示例,要用圆括号实现,程序复杂,并且程序所占存储空间大。需注意,函数没有修饰符。
4)函数调用时,可有返回值结果。如果被调用函数没有一个返回值结果,则当前结果是不确定的。
5)RET指令的成功执行或执行到POU的终点,则POU给予的结果作为当前结果。
6)调用带形参的函数时,应将实参代替形参,可用赋值语言对形参赋值。
7)可以添加EN和ENO参数。将函数状态传递到下一个指令。需注意,对ENO参数的输出需用赋值语言。一些软件系统不一定具有EN和ENO的函数调用性能。
2.方法和方法的调用
IEC 61131-3标准第三版增加面向对象的程序语言,因此,在指令表编程语言中增加方法的调用。
与函数的调用类似,方法可被调用。通过设置的功能块实例名,然后跟一个单一的句号“.”和在操作符区域的该方法名来调用方法。
【例2-6】方法调用的示例。
方法调用分格式调用和非格式调用两种。表2-7是方法调用的示例。
表2-7 方法调用的示例
(www.xing528.com)
方法调用时的注意事项如下:
1)非形参表即实参表,是实际应用的参数组成的参数表。形参表是方法中定义的参数,在实际应用时必须用实际参数代入。
2)非形参的方法调用指令中,第一个参数是当前结果存储器存储的结果。因此,在方法调用前,用有关指令将被调用方法的第一参数送当前结果存储器。
3)方法调用时,可有返回值结果。如果被调用方法没有一个返回值结果,则当前结果是不确定的。
4)RET指令的成功执行或执行到POU的终点,则POU给予的结果作为当前结果。
5)调用带形参的方法时,应将实参代替形参,可用赋值语言对形参赋值。
6)可以添加EN和ENO参数。将方法状态传递到下一个指令。需注意,对ENO参数的输出需用赋值语言。一些软件系统不一定具有EN和ENO的方法调用性能。
7)非格式化调用时,方法的第一个参数不需包含在参数中,但当前结果应被用于作为方法的第一参数。如果需要的话,其他参数(开始于第二个参数)应在操作符区域给出,并按它们在声明中的次序用逗号分隔。
3.功能块和功能块的调用
通过在操作符区域的关键字CAL的替换来调用功能块。功能块的实例名在该操作符区域。功能块可用EN操作符实现条件或无条件调用。
指令表编程语言中,功能块调用格式如下:
1)带非形参表的功能块调用。编程语言的格式如下:
CAL 功能块实例名(非形参表)
2)带形参表的功能块调用。编程语言的格式如下:
CAL 功能块实例名(形参表)
3)带参数读/存储的功能块调用。编程语言的格式如下:
CAL 功能块实例名
4)使用功能块输入操作符的功能块调用。编程语言的格式如下:
参数名 功能块实例名
并非所有软件系统能够实现上述四种编程格式。应根据实际PLC系统所提供的编程方法进行编程。表2-8是功能块调用的示例。
表2-8 功能块调用的示例
功能块调用时的注意事项如下:
1)调用功能块时,如果参数不存在,系统自动取初始值或在前面程序中已经设置的最新值。
2)调用操作符与修饰符C结合时表示当前结果存储器内容为真时执行调用。一个条件功能块调用时,所有参数表内的参数在条件为真时,仅在调用时一起执行。调用操作符与修饰符NC结合时表示当前结果存储器内容为假时执行调用。需注意,N、C等修饰符与操作符之间不应有空格。
3)使用功能块输入操作符进行功能块调用时(见表2-8的序号2b),只允许对标准功能块进行。表2-9是指令表编程语言中标准功能块的操作。
表2-9 指令表编程语言中标准功能块的操作
注:LD(load)没有必要作为标准功能块输入的操作符,因为在PV内包含LD功能。
4)如果一个功能块被调用,则当前结果是不确定的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。