作者 | 主题 |
---|---|
zunzhi 侠圣 经验值:2714 发帖数:118 精华帖:5 |
楼主 2020-01-30 13:04:06
主题:一段模拟量读取程序,那位师傅帮我解释一下? 我就搞不懂了,一个公式前面整这么复杂是什么意思?作用是什么?看了一上午也没有看明白,麻烦大神指点一下,谢谢! //模拟量读取 TAR1 #TEMP11 L P##IN0 LAR1 L B [AR1,P#1.0] T #TEMP7 L W [AR1,P#4.0] T #TEMP8 OPN DB [#TEMP8] A( L #TEMP7 L 2 ==I ) JCN M001 L D [AR1,P#6.0] LAR1 L B [AR1,P#0.0] ITD DTR JU M002 M001: NOP 0 O( L #TEMP7 L 4 ==I ) O( L #TEMP7 L 5 ==I ) JCN M003 L D [AR1,P#6.0] LAR1 L W [AR1,P#0.0] ITD DTR JU M002 M003: NOP 0 O( L #TEMP7 L 6 ==I ) O( L #TEMP7 L 7 ==I ) JCN M004 L D [AR1,P#6.0] LAR1 L D [AR1,P#0.0] DTR JU M002 M004: NOP 0 A( L #TEMP7 L 8 ==I ) JCN M005 L D [AR1,P#6.0] LAR1 L D [AR1,P#0.0] JU M002 M005: L 0.000000e+000 M002: T #TEMP9 L #IN1 L #IN2 -R T #TEMP10 L #TEMP9 L #IN2 -R L #TEMP10 /R T #TEMP10 L #IN3 L #IN4 -R L #TEMP10 *R L #IN4 +R T #OUT5 RND T #OUT6 LAR1 #TEMP11 //这是调用的程序 CALL "ANALOG_VALUE_READ" IN0 :="=32+ET12-2M1_PIW" IN1 :=2.764800e+004 IN2 :=5.530000e+003 IN3 :=1.000000e+002 IN4 :=0.000000e+000 OUT5:="ACTUAL_VAL".DRY.DRY1._014.ACT OUT6:=#Output_INT NOP 0
努力工作,好好学习!
|
zunzhi 侠圣 经验值:2714 发帖数:118 精华帖:5 |
2楼 2020-01-31 00:11:01
主题:回复:一段模拟量读取程序,那位师傅帮我解释一下? 终于搞明白了,整整一天,模拟量输入类型竟然为ANY,以前没有碰到过,思维进入了死循环!这段程序的意思是判断这个指针对应的数据是字节的,还是一个字或整型,还是双字或双整型,然后做相应的转换成实数,如果是其他类型的就写入0, 最后做数据的转换,和FC105的功能类似,变成百分比,一个实数,一个整数,输出, 感谢艾星落尘的帮助,我整理了一下,发给大家! //模拟量读取 TAR1 #TEMP11 L P##IN0 //模拟量输入地址 数据类型ANY LAR1 L B [AR1,P#1.0] //判断ANY中存放的数据类型 T #TEMP7 L W [AR1,P#4.0] //装入ANY中存放的数据块 T #TEMP8 OPN DB [#TEMP8]//打开数据块 A( L #TEMP7 L 2 //数据类型为字节 ==I ) JCN M001 //Jump if RLO = 0 L D [AR1,P#6.0] //装入ANY中数据地址 LAR1 L B [AR1,P#0.0]//装入数据 ITD DTR //转换为实数 JU M002 M001: NOP 0 O( L #TEMP7 L 4 //数据类型为字 ==I ) O( L #TEMP7 L 5 //数据类型为整数 ==I ) JCN M003 L D [AR1,P#6.0]//装入ANY中数据地址 LAR1 L W [AR1,P#0.0]//装入数据 ITD DTR JU M002 M003: NOP 0 O( L #TEMP7 L 6 //数据类型为双字 ==I ) O( L #TEMP7 L 7 //数据类型为双整数 ==I ) JCN M004 L D [AR1,P#6.0] LAR1 L D [AR1,P#0.0] DTR JU M002 M004: NOP 0 A( L #TEMP7 L 8 //数据类型为实数 ==I ) JCN M005 L D [AR1,P#6.0] LAR1 L D [AR1,P#0.0] JU M002 M005: L 0.000000e+000 M002: T #TEMP9 L #IN1 //模拟量最大值 L #IN2 //模拟量最小值 -R T #TEMP10 L #TEMP9 L #IN2 -R L #TEMP10 /R T #TEMP10 L #IN3 //工程量量最大值 L #IN4 //模拟量最小值 -R L #TEMP10 *R L #IN4 +R T #OUT5 RND T #OUT6 LAR1 #TEMP11 //这是调用的程序 CALL "ANALOG_VALUE_READ" IN0 :="=32+ET12-2M1_PIW" IN1 :=2.764800e+004 IN2 :=5.530000e+003 IN3 :=1.000000e+002 IN4 :=0.000000e+000 OUT5:="ACTUAL_VAL".DRY.DRY1._014.ACT OUT6:=#Output_INT NOP 0
努力工作,好好学习!
|