首页 理论教育 STL指令处理优化技巧

STL指令处理优化技巧

时间:2023-06-17 理论教育 版权反馈
【摘要】:在上面的示例程序中,根据状态字可以判断每个信号的状态,M1.1=0;M1.2=1;M1.3=0;输出结果为0,赋值指令复位/FC位,由于M1.1的RLO位为0,即使M1.2的STA位为1,与上面指令的逻辑结果RLO仍然为0,如果M1.1为1,三条“与”指令的逻辑结果RLO为1,赋值指令根据RLO输出。在调试阶段,可以根据状态位的状态调试程序,如使用STA、RLO位的信号可以判断操作地址的状态和指令处理结果,状态字是调试STL程序不可缺少的工具。

STL指令处理优化技巧

1.状态字的使用

与LAD指令相比,STL使用指令直接对地址区进行操作,例如位处理的“与”指令:

978-7-111-28718-6-Chapter06-4.jpg

操作指令在前地址区在后,通过指令直接对地址操作,STL指令的监控通过CPU内部寄存器中的状态字实现,状态字中的前9位分别表示地址当前状态、逻辑处理结果、数据溢出等操作状态,状态字的结构如图6-4所示。

978-7-111-28718-6-Chapter06-5.jpg

图6-4 CPU寄存器中的状态字

状态字中每一个位的作用及含义如下:

(1)/FC

首次检测位,控制逻辑操作的开始。每一个逻辑操作都需要查询/FC位的状态和被操作的逻辑地址状态,如果/FC位为1,与检测逻辑地址状态相结合,并将结果存储于RLO位;如果/FC位为0,开始新的逻辑操作,例如赋值指令(S,R,=)或基于RLO的跳转指令,都会结束逻辑的操作,并将/FC位复位。

(2)RLO

存储逻辑操作或比较指令的结果,RLO在程序调试中很重要,赋值指令根据RLO的状态判断线圈是否输出。

(3)STA

存储一个位地址的值。

978-7-111-28718-6-Chapter06-6.jpg

图6-5 状态位/FC、RLO、STA的关系

状态位/FC、RLO、STA的关系可以参考图6-5的示例程序。

在上面的示例程序中,根据状态字可以判断每个信号的状态,M1.1=0;M1.2=1;M1.3=0;输出结果为0,赋值指令复位/FC位,由于M1.1的RLO位为0,即使M1.2的STA位为1,与上面指令的逻辑结果RLO仍然为0,如果M1.1为1,三条“与”指令的逻辑结果RLO为1,赋值指令根据RLO输出。

(4)OR

使用“0”指令结合“AND”指令,如图6-6所示,将M1.1、M1.2相“与”的结果再与M1.3“或”,如果“0”指令前M1.1、M1.2相“与”的逻辑结果为1,OR位为1。(www.xing528.com)

(5)OS

如果浮点运算出现问题,触发OV位并置位OS位,故障消除,OS位保持,所以OS位可以记录OV位是否出过故障。JOS(OS为1跳转)、块调用、块结束指令自动复位OS位。

978-7-111-28718-6-Chapter06-7.jpg

图6-6 状态位OR

(6)OV

溢出位,浮点运算故障(溢出、非法操作、无序比较),OV位置位,故障消除,OV位复位。

(7)CC1,CC0

条件代码,指示位逻辑操作、比较指令、算数指令、移位指令等操作状态,也表示累加器1、2的关系,例如累加器2中的值大于累加器1中的值,通过CC0、CC1的状态可以触发程序跳转指令等。

(8)BR

二进制结果位,解释字逻辑的结果,例如两个字相“与”的结果。另一方面,在编写函数或函数块时,如果没有将RLO位存储到BR,使用LAD调用时,不能激活函数输出“ENO”(不导通状态),程序如图6-7所示,调用用户编写的函数FC1时,函数执行,但是ENO没有输出,能流没有导通。在函数的结尾,简单使用SAVE指令可以显示ENO的状态。

978-7-111-28718-6-Chapter06-8.jpg

图6-7 状态位BR

状态字中的位信号,可以在程序中使用指令进行操作,如调用SET、CLR指令直接对RLO位进行操作。在调试阶段,可以根据状态位的状态调试程序,如使用STA、RLO位的信号可以判断操作地址的状态和指令处理结果,状态字是调试STL程序不可缺少的工具。

2.累加器的使用

对于运算指令,STL使用累加器作为数据的缓存区,累加器属于CPU内部寄存器,S7-300 CPU中有两个累加器(ACCU1和ACCU2),S7-400CPU中有4个累加器(ACCU1、ACCU2、ACCU3、ACCU4),每个累加器占用32位地址空间,可以将4个字节的变量放置在累加器中进行运算,累加器的使用参考下面的示例程序:

978-7-111-28718-6-Chapter06-9.jpg

累加器1和2中的数据通过“L”指令自动堆栈。累加器的使用可以节省大量中间计算数据的存储空间,LAD没有累加器的概念,中间计算数据必须占用数据区进行转存。

两个累加器往往不能满足复杂的运算,S7-400系列PLC提供4个累加器作为数据的缓存区可以满足复杂计算的要求,累加器ACCU3和ACCU4必须使用特殊指令进行操作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈