我只知道这段代码的大致意思是“把绝对值浮点数转换成标准的十进制数”,但是不知道具体是如何转换的,又无法转换成梯形图。所以请老师们尽可能的详细解释,谢谢。
SET
SAVE
= L 4.1
L #IN1
L 0
==I
JCN M001
T #RET_VAL
A L 4.1
SAVE
BEU
M001: L #IN0
L 1.638400e+004
*R
L #IN1
ITD
DTR
/R
T #TEMP2
L -3.276800e+004
<R
JCN M002
L -32768
T #RET_VAL
A L 4.1
SAVE
BEU
JU M003
M002: L #TEMP2
L 3.276700e+004
>R
JCN M004
L 32767
T #RET_VAL
A L 4.1
SAVE
BEU
JU M003
M004: L #TEMP2
RND
T #RET_VAL
M003: CLR
A L 4.1
SAVE
BE
最佳答案
SET
SAVE
= L 4.1
L #IN1
L 0
==I
JCN M001
T #RET_VAL
A L 4.1
SAVE
BEU //以上程序判断#IN1变量是否为0,为0退出该子程序,不为
//0,则跳转到M001处
M001: L #IN0
L 1.638400e+004
*R //#IN0输入的实数,可以直接乘以16384.0,结果存入累加器1
L #IN1 //累加器1的数值传到累加器2,#IN1读入累加器1
ITD
DTR //累加器1中#IN1整数变双整数后再变为实数
/R //累加器2中的#IN0*16384.0的乘积除以累加器1中的#IN1(实数)
T #TEMP2 //相除后的商存到#TEMP2
L -3.276800e+004
<R
JCN M002 //#TEMP2中的结果和-32767.0比较,不小于跳转到M002
L -32768 //小于32767.0的话,输出-32767.0并跳转到末尾的M003,结束
T #RET_VAL
A L 4.1
SAVE
BEU
JU M003
M002: L #TEMP2
L 3.276700e+004
>R
JCN M004
L 32767 //#TEMP2中结果和32767.0比较,小于32767.0跳转到M004
T #RET_VAL //#TEMP2中结果和32767.0比较,大于32767.0跳到M003结束
A L 4.1
SAVE
BEU
JU M003
M004: L #TEMP2
RND //将#TEMP2中数据四舍五入,后送到返回参数中,接着执行
T #RET_VAL //M003,结束
M003: CLR
A L 4.1
SAVE
BE
提问者对于答案的评价:
谢谢大师
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc230043.html