两个STL程序,求分析

请参照图片程序,给出详细解释,谢谢

图片说明:

两个STL程序,求分析    两个STL程序,求分析   

最佳答案

NETWORK1

SET  //置位RLO(逻辑运算结果位)
=    #OK //赋值给ok,OK=true
CLR  //清除RLO
AN #PRESENT //取PRESENT变量的状态,并取反,此时RLO的状态和PRESENT取反后的状态一致;
JC FEND  //若RLO为true,则跳转到FEND处,没猜错的话FEND在本FC(或FB)的结尾处;

L #CH_1  //装载CH_1的值(到ACCU1)
T LW6  //传递(ACCU1的值)到LW6,LW6是本地堆栈区的第3个字,即LB6和LB7两个字节;

L B#16#0 //装载字节型的16进制常数0;  
T #BYTE_00 //传递给BYTE_00

L #PAW  //装载PAW的值;
T #PAW_ADDR //传递给PAW_ADDR

A #BECKHOFF //取BECKHOFF变量的状态,此时RLO的状态和BECKHOFF变量的状态一致;
JC BKF  //若RLO的值为TRUE则跳转到BKF处;BKF应是本FC(或FB)的另一个network;

Network 2:Write Siemens PR

L #PAW_ADDR //装载PAW_ADDR变量的值(到ACCU1中);
ITD  //将ACCU1的值转换成双整数;
L  L#8  //装载长整型实数8(到ACCU1中,ACCU1里面的数据被装载到ACCU2中),
*D  //将ACCU2中的数据和ACCU1中的数据相乘,结果放在ACCU1中;
LAR1  //将ACCU1中的内容装载到AR1中(AR1是地址寄存器1),此时AR1的值是PAW_ADDR*8之后的结果,根据这个程序的功能,*8相当于左移3位;
L  LW 6  //装载本地堆栈区第3个字的内容到ACCU1,结合前面的赋值,LW6保存了CH_1变量中的值;
T PQW[AR1,P#0.0]//将ACCU1的值传递到PQW(输出过程通道)AR1+P#0.0偏移后的地方,AR1如上所述,+P#0.0是在AR1现有地址内容的基础上加0个字节和0个位,即不偏移,至于为什么这样用后面给你解释;
L 0  //装载常数0;
T #ERROR //传递给变量ERROR;
SET   //置位RLO;
= #OK  //赋值给OK;

这应该是写某一外围设备的程序吧?PAW应该是该外围设备的地址。

不知道你什么地方比较难懂,我就根据自己学习过程中比较困难的地方给你说吧。
JC:条件跳转指令,当RLO结果为TRUE(也可以说是为1)时,程序跳转到制定的地方,本程序中是跳转到FEND处,从跳转指令到跳转目的地之间的程序在该扫描周期内不再执行。
AR1:地址寄存器AR1,是一个32位的存储空间,它的每几个位的组合是有不同意义的,不想ACCU1那样代表一些数值,比如说AR1的最后三位代表的是位地址信息,一个字节有8个位,位0-位7,那么用3个二进制位就可以搞定了,000-111。
晕1000字以上了,给你图片吧!

图片说明:

两个STL程序,求分析  

提问者对于答案的评价:
专业

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc244699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午11:29
下一篇 2018年12月1日 下午11:30

相关推荐