找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
我打算做时间锁,需要设计10个月以上的日期停机,我用T_ADD相加时长超过了DINT类型的最大值,请问应该怎么实现?有没有简单点做法?实现这么长的时间加法
//////////////////////
方案1 读取系统时间,然后比较年 月 日, SFC0
TEMP10:= D_TOD_DT(IN1 := D#2026-1-1 // IN: DATE 设定停机时间 年月日
,IN2 :=TOD#23:59:0.000 // IN: TIME_OF_DAY 设定定时停机 时,分,秒
); // DATE_AND_TIME
//以上为设定时间
//以下为CPU时间 SFC1
TEMP11:=READ_CLK(CDT := TEMP12 // OUT: DATE_AND_TIME 读取CPU当前时间
); // INT
//时间比较,时间到停机
IF TEMP12>=TEMP10 THEN //当CPU当前时间大于等于 设定时间 则CPU系统停机,调用SFC 46
stop:=true;
STP();
END_IF;
方案2 制作系统运行 时间
IF PLC_run THEN
store1:= sys_clock ;
IF store1 <> store2 AND NOT P1 THEN // 累计实际 秒
second:= second +1 ;
P1:=TRUE;
ELSE
P1:=FALSE;
END_IF;
store2:= store1;
IF second >= 60 AND NOT P2 THEN // 累计实际 分
second:= 0;
mins:= mins + 1;
P2:=true;
ELSE
P2:=FALSE;
END_IF;
IF mins >= 60 AND NOT P3 THEN // 累计实际 时
mins:= 0;
hour := hour + 1;
P3:=true;
ELSE
P3:=FALSE;
END_IF;
IF hour >= 24 AND NOT P4 THEN // 累计实际 时
hour:= 0;
day := day + 1;
P4:=true;
ELSE
P4:=FALSE;
END_IF;
// 需要一年 比较 day>=365 需要半年 比较day>= 183
但这样做有啥实际意义。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城