SCL中,如何对DATE_AND_TIME类型赋值

SCL中,如何对DATE AND TIME类型数据进行赋值。
DATE AND TIME 8个字节 0-7,意思我都知道。
现在是SCL中如何赋值?
LAD中我可以用实现,定义一个TEMP变量,类型是DATE AND TINME,地址12.0
我就可以利用 :
年(INT型上位机设)-进行I_BCD再MOVE给 LB12
月(INT型上位机设)-进行I_BCD再MOVE给 LB13
日(INT型上位机设)-进行I_BCD再MOVE给 LB12
然后我利用FC6 DT_TIME可以得出 设定日期距离1990-1-1的天数。
现在问题,我在SCL中如何赋值,设置时间?
我利用AT指令为何没效果?
VAR
sp_time:DATE AND TIME;
TIME AT sp_time:ARRAY[0..7] OF BYTE
END_VAR

TIME[0]:= INT_TO_BYTE(sp_year);//sp_year,sp_month,sp_day为上位机设
TIME[1]:= INT_TO_BYTE(sp_month);//的年月日,以INT类型输入进来
TIME[2]:= INT_TO_BYTE(sp_day);
 current_time_cal:=DT_DATE(IN :=current_time
         );  // IN: DATE_AND_TIME
          // DATE
 sp_time_cal:=DT_DATE(IN :=sp_time  // IN: DATE_AND_TIME
         ); // DATE
 days_left:=DINT_TO_INT(DATE_TO_DINT(sp_time_cal))-DINT_TO_INT(DATE_TO_DINT(current_time_cal));//设置日期距离当前日期还剩多少天

求指点,哪里有问题?算出来的值永远不对, 
监控发现 sp_time_cal 和sp_time_cal一直 相等。。。同一天老是,郁闷,。

最佳答案

SCL中也有整数转为BCD码的指令,见附件。因为你用指令INT_TO_BYTE不对,DT存储的格式是BCD码。

图片说明:

SCL中,如何对DATE_AND_TIME类型赋值  

提问者对于答案的评价:
谢谢。已经解决了。
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=1113901&s_id=23&num=6#anch

专家置评

鼓励大家学习使用SCL语言,给出部分链接作为参考:
S7-SCL编程
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=2757&loginID=&srno=&sendtime=
在 S7-SCL 中如何进行 SFC14 和 SFC15 ANY 参数的编程?
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=4472&loginID=&srno=&sendtime=
STEP 7 Professional V11 使用SCL对S7-300/400间接寻址的变量表达式
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=7243&loginID=&srno=&sendtime=

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

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

相关推荐