恭喜,你发布的帖子
发布于 2021-05-15 23:09:10
4楼
按照你的说明
要求在自定义时间的某刻 取触发一个信号,你想用小时比较。好吧,
VAR_OUTPUT
year:INT;
month:INT;
day:INT;
hour:INT;
mins:INT;
second:INT;
week:INT;
END_VAR
VAR
read_status:INT;
copy_status1:INT;
read_time:DT;
act_time:ARRAY[0..8] OF BYTE;
TS:WORD;
week_no:INT;
END_VAR
//读取前 先将PLC时间与PG 时间同步 300PLC 没有用TIA
read_status:= READ_CLK(CDT := read_time //SFC1
); // 读取系统时间
copy_status1:= BLKMOV(SRCBLK := read_time //SFC20
,DSTBLK := act_time
); //转化当前时间,并显示时间。
year:=BCD_TO_INT(act_time[0])+2000;
month:=BCD_TO_INT(act_time[1]);
day:=BCD_TO_INT(act_time[2]);
hour:=BCD_TO_INT(act_time[3]);
mins:=BCD_TO_INT(act_time[4]);
second:=BCD_TO_INT(act_time[5]);
TS:=BYTE_TO_WORD(act_time[7]);
week_no:=WORD_TO_INT(ts AND W#16#F) -1;
IF week_no = 0 THEN
week:= 7;
ELSE
week:=week_no;
END_IF;
可以根据你的要求取比较。
因为我不喜欢用TIA 一直时PCS7 + 300 这样用。
请填写推广理由:
分享
只看
楼主