IEC 61131-3的大多数重要的结构中, 能促进代码的重复使用的部分是用户定义的功能模块,但是对大多数PLC, 这却需要花费大量的时间。
早先,内部资源有限。由于编程内存,梯形图使用得内存也很低,却能实现相当得功能,但代价是却牺牲编程的透明度,可移植性和可维护性。
随着IEC 61131标准的出现,对PLC编程方法进行统一的需求增多。寻址也不再需要直接链接到供应商的硬件,因此就需要简单的代码重复。
功能模块的重复使用
IEC 61131-3中定义的一个重要的、能重复使用代码的结构是用户定义的功能模块。将控制操作分在各个逻辑的、功能相关的单元中,因此控制代码的模块就具有独立于机器的特性,也就是说能方便的移植。理论上,用户定义的功能模块会包含控制代码,与传统的PLC程序非常相似。 最大的不同之处,是功能模块中所有的数据都已经符号化,不需要直接与硬件和固定的内存链接。功能模块定义的控制代码能在同样的PLC任务中重复使用,在多个任务中共享,也能在其他的PLC中进行拷贝,不需要对内部代码进行任何的改动。
相比于传统的PLC编程,用户定义的功能模块将大大节约时间成本。因为数据传输的需求,更多的高级内存管理技术需要被使用在PLC的内部软件中。这些功能模块的使用需要购买额外的软件,或者需要安装额外的PLC硬件。
MULCE 结构
当使用功能模块时,每个模块的结构只能定义一次。这是类型定义,描述了输入、输出和内部状态参数,以及功能模块算法。这个模块只使用符号变量,以保证可重复使用,而且囊括了梯形图代码(LD),也能使用IEC 61131-3兼容的结构化文本(ST)。梯形图能更好地适用于连续控制和连锁控制,ST大多适用在数据处理,复杂地计算,或分支判断(IF…THEN…ELSE)。在同一个程序中也允许采用LD和ST混合的功能块。
当功能块每次用于某个PLC程序中时就会创建该功能块的一个实例,输入参数传入该实例后,功能块就可执行,之后输出参数将返回给PLC程序,这一过程称为功能块的调用。调用后功能块实例的内部状态将立即存储起来,直到下一次调用该实例。如果一个功能块再PLC程序中具有多个实例,就需要更多的存储器空间和数据管理以确保这些实例在下一个控制循环中的正确调用。在传统的PLC中,每次调用都会明显延迟正常程序的执行
使用预定义的和测试过的功能模块,将智能单元或现成设备与控制系统集成,将大大降低成本。功能模块提供无需编程即可接入的智能设备功能,如在线的自诊断、预防性维护统计、或自调节数据。一个标准的功能模块库 已经可用,支持温度控制器、视觉系统、运动控制器和智能传感器。