如何使用梯形逻辑减少扫描时间的5个技巧-第2部分
在关于如何使用梯形逻辑减少扫描的第2部分中,我们将研究关于如何使用梯形逻辑编程最小化PLC扫描周期时间的五个通用技巧中的其余三个。我们将提供每种情况的例子,就像我们在第一部分这个博客。这最后三个技巧通常被认为对扫描周期时间有最大的影响。
回顾一下,在第1部分中,我们确定了以下5个减少扫描时间的技巧,并开始研究每个技巧的例子:
1.将最有可能错误的说明/条件放在梯级的开头。
2.在创建梯形逻辑程序时,尽可能避免重复唯一的标记/指令组合。
在第2部分中,我们将回顾最后三个技巧的一个简单示例:
3.程序流控制是显著减少扫描时间的关键。使用JMP和LBL指令来减少正在运行的程序的活动段。
4.划分任务(制定模块化流程)并对其进行组织会对扫描时间产生重大影响。传递变量可以允许程序段(子例程)在多个实例中使用。
5.避免浮点运算,尽可能使用整数。如果您需要比整数更好的精度,可以考虑将所有的浮点数乘以10、100或1000来得到整数。
剩余扫描周期时间减少提示示例:
3.使用JMP和LBL指令来减少每个扫描周期中执行的程序代码量。
程序流程是一个可以显著减少扫描时间的领域。
在下面的示例中,当梯级1上的“Enable_Jump”触点闭合时,电机2和电机3梯级被跳过。此时,遇到JMP指令,程序执行跳转到梯级4上的“标签_ 1”LBL指令位置,跳过梯级2和3。这个概念可以用来跳过在生产周期中任何给定时间都不会用到的程序的大部分。这有可能极大地减少被扫描的横档的数量,并且随后可以显著地减少应用扫描周期时间。
跳过梯级的能力并不是利用JMP和LBL指令减少扫描周期时间的唯一方式。假设您正在监视一系列输入的特定状态变化,并且这些状态变化的性质将决定随后会发生什么样的一系列动作。在这种情况下,创建一个程序循环来仅执行监控输入所需的梯级,将确保扫描周期时间不会妨碍对任何输入状态变化提供快速响应。
这通常是通过创建一个由JMP和LBL指令在程序中的位置定义的“区域”来实现的。从上到下扫描该区域,然后程序执行再次循环回到已定义区域的起点。这将一直持续到退出条件允许程序在循环之外继续执行。很明显,这些技术会对扫描周期产生重大影响,并且使用JMP和LBL指令的程序流管理可以是一个强大的工具,提供对扫描周期时间的一定程度的控制。
4.使用子程序划分任务,允许程序段在多个实例中使用。
根据扫描较少梯级将减少总扫描周期时间的概念,JSR、SBR和RET程序流指令的使用及其对扫描周期时间的影响始终值得考虑。为在一个过程中不同时间重复的函数创建可重用的原子程序段,允许这些程序段仅在需要时被调用,并且将显著减少被扫描的梯级的数量,因为这避免了不必要的重复。作为一个简单的例子,考虑一个例程,该例程需要在几次计算中取两个值的平均值。创建一个可以在多种情况下调用的子例程可以避免重复任何求平均值所需的指令。值被传递到例程中,结果被传递出来,如下所示:
JMP和LBL的指令允许你专注于一个片段或跳过片段。JSR和RET子例程指令允许程序段被多次使用,而不是创建它们的多个实例。程序流指令是管理扫描周期时间的重要工具。
5.避免浮点运算,尽可能使用整数。
这种常规做法缩短了扫描周期时间,因为与INT数据类型变量相比,使用REAL数据类型的指令占用更多的内存,使用更多的资源来运行,并且需要更多的周期。例如,假设我们有一个范围为0至10伏的模拟输入信号,传感器提供2位小数的精度。例如,8.34 V就是进入模拟输入通道的输入类型。将该值乘以100将删除该值的小数部分,并创建一个可用于INT数据类型的整数。可以说,一般来说,通过在流程的输出点的输入处缩放值来进行数学运算时,使用INT或DINT数据类型是有益的。模拟输出控制信号应使用INT或DINT数据类型产生,并在输出范围内转换为实数值,然后尽可能发送出去.
该程序段采用0.00到10.00之间的模拟输入值,并将其转换为范围从0到100的整数值。此时,可以使用DINT数据类型变量对这个缩放值进行操作。在发送到输出模块位置之前,该值将被缩小到0到10的范围。
扫描周期时间是一个应用参数,它对一个过程具有不同的意义。在扫描时间至关重要的情况下,知道如何减少对应用程序的影响会非常有帮助。遵循这5个关于减少扫描周期时间的提示,它们将帮助您在该参数对正常操作至关重要的情况下管理该参数。