发布于 2012-07-03 22:49:41
7楼
看到楼主比较纠结此事,刚好今晚闲暇无事,写了点代码给楼主参考一下,在PLCSIM测试过了,编译一下就能用了!见参考代码:
FUNCTION "Dint->int" : VOID
TITLE =将一个长整数转换成整数
//如果一个长整数在-32768~32767之内,是可以转换成成整数,如果不在这个数值范围之内
//就没法转了。
VERSION : 0.1
VAR_INPUT
Long_int : DINT ; //需要转换的变量
END_VAR
VAR_OUTPUT
Short_int : INT ; //转换好的整数数值存储在这个变量里面,如果不能转换,这个变量值为0
Return_bool : BOOL ; //转换错误Return_bool的状态为0,转换正确Return_bool的状态为1
END_VAR
BEGIN
NETWORK
TITLE =
L #Long_int;
L L#32767;
>D ;
JC EROR; //如果这个长整数大于32767,就跳转到EROR
L #Long_int;
L L#-32768;
<D ; //把中文字符的<换成英文字符小于
JC EROR; //如果这个长整数小于-32768,就跳转到EROR
L L#0;
L #Long_int;
>D ;
JC NEGA; //如果<0,跳转到Nega(Negative)
JU POSI; //如果≥0,跳转到Posi(Positive)
NEGA: -D ; //<0时的处理
T LD 20;
L LW 22;
L 0;
TAK ;
-I ;
JU NEXT;
POSI: T LD 20; //如果是大于等于0
L LW 22;
NEXT: T #Short_int;
SET ;
= #Return_bool;
JU END;
EROR: L 0;
T #Short_int;
CLR ;
= #Return_bool;
END: SAVE ;
BE ;
END_FUNCTION
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”