我想编写FC:
将DB1中DB1.DBD0----DB1.DBD200共51个浮点数据通过浮点变长整,长整变整数后,在分别对应传送至DB10.DBW0-----DB10.DBW100中.请教如何编写
最佳答案
1、下述程序为信手所写,未加验证。但程序间接寻址的循环控制结构是正确的。
2、长整变整数,在下述程序中只采用了取长整数的低字,即转换为16整数。这一点要注意在实际应用中是否合适。
3、程序:
将DB1中DB1.DBD0----DB1.DBD200共51个浮点数据通过浮点变长整,长整变整数后,在分别对应传送至DB10.DBW0-----DB10.DBW100中:
L P#0.0 //初始读指针
LAR1
L P#0.0 //初始写指针
LAR2
L 51 // 51个双字浮点数的循环计数为初值
M001: T MB 10 //计数值 送入MB 10
OPN DB 1 //打开DB 1
L DBD [AR1,P#0.0] //按读指针指示的地址读数据,双字浮点数。
RND+ //将浮点数(32 位,IEEE FP)转换为整数(32 位),并将结果取整.
T MD20 //暂存长整数
L MW22 //取长整数的低字,即转换为16整数。
OPN DB 10 //打开DB 10
T DBW [AR2,P#0.0] //按写指针指示的地址写数据
+AR1 P#4.0 //读指针指向下一数据地址,双字地址。
+AR2 P#2.0 //写指针指向下一数据地址,字地址。
L MB 10 //取循环计数值
LOOP M001 //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。
提问者对于答案的评价:
您好,谢谢您的回答,我能看懂,我会抽时间验证一下,再次表示感谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc240585.html