登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:【话题】(以解决并贴上程序)怎样计算实时时钟的时间差(20230201)

点击:709 回复:19

有一种染色助剂调配好后的有效期是72个钟,超过72小时需要提示报警做报废处理。
操作就是人工调配好后,在触摸屏上按下开始,然后PLC或者触摸屏自动计算。
考虑到放假时停电关机,所以用计时器累计行不通,只能用实时时钟做减法,这样就算中途停电也不影响。
大概思路时,工人调配好后,按一个键记录下当前的实际时钟,然后隔一段时间调出最新时间与前面的时间相减即可。
我想用威纶通触摸屏的宏指令做,上网搜了一下,没看到有专门的函数,只能自己写程序判断
这就麻烦了,要判断闰年(2月是28天还是29天)、月大(31天)、月小(30天)
最后修改:2023/2/3 14:01:35
23-01-31 20:01
简单点外部加个定时器,时间到了给PLC一个信号;
23-01-31 21:26
买个超长时间的机械定时器,时间到接通报警
23-01-31 21:40
你的问题有点问题
【考虑到放假时停电关机】~如果放假超过72个钟(是小时?)啥方法都难实现,除非有值班的~那就用一个用电池的独立定时器。
抛开放假停机可能产生的问题
可以这样~交给PLC来做
触摸屏启动按键开始记录,同时修正PLC时钟(PLC时钟误差太大)
PLC里就简单了~就怕所用PLC没有时钟或没有时钟运算指令
23-01-31 22:16

引用 知道一点 在 2023/1/31 22:16:31 发言【内容省略】

就算放假时长超过72小时,那么来上班通电时也会马上报警提醒,工人报废处理不用就可以了。
我这个PLC是信捷XC3的,带有时钟功能,问题是也很麻烦,月大、月小这些也都要考虑。
23-02-01 07:32
西门子官方论坛有一个是计算天数的
附件 微信截图_20230201073651.jpg
附件 微信截图_20230201073719.jpg
//计算两个年份之间的天数。只计算完整一年这部分。
//基本好像可以。。。。。
if year1+1>=year2 then    //没有完整的一年,不参与计算
else
for i=year1+1 to year2-1
 if i%4==0 then
  sum=sum+366    //闰年算366日
 else
  sum=sum+365    //平年算365日
 end if
next i
end if
//计算两个月份之间的天数
if (year1==year2)&(month1+1>=month2) then   //年相同,月之间没有完整月,就不需要计算什么。
else     //否则就出现后面两种情况……
if year1==year2 then   //这是第一种情况,年相等,直接计算。
 if year1%4==0 then   //闰年了
  mon[1]=29
 else
  mon[1]=28
 end if
 for i=month1 to month2-2 //从当前月的下一个月起,累加,到结束之前的一个月。
 sum=sum+mon[i]
 next i
else       //这是第二种情况,年不相等,分两段计算月。
 //1 2 3 4 5 6 7 8 9 10 11 12
 //1 2 3 4 5 6 7 8 9 10 11 12
 if month1<>12 then   //计算前段不足一年的月数的天数。
  if year1%4==0 then   //闰年了
   mon[1]=29
  else
   mon[1]=28
  end if
  for i=month1 to 11
   sum=sum+mon[i]
  next i
 end if
 if month2<>1 then   //计算后段不足一年的月数的天数。
  if year2%4==0 then   //闰年了
   mon[1]=29
  else
   mon[1]=28
  end if
  for i=0 to month2-2
   sum=sum+mon[i]
  next i
 end if
end if
end if
//计算两个日期之间的天数
if (year1==year2)&(month1==month2) then
sum=day2-day1
else
if year1%4==0 then
 mon[1]=29
else
 mon[1]=28
end if
i=month1-1
sum=mon[i]-day1+day2+sum
end if
你不需要看代码,只需要看文字解释就可以大概地了解这个计算日子的过程。就要这么多的过程。
23-02-01 07:38
可以用分钟来计数,比如按下按钮时读取当时是38分,再通过比较指令到下个38分计数一次就是小时数,比较这个数值输出报警。
可以单独搞一套设备,过年或者放假不停电,再说也用不了多少电费,相对于质量来说这都不算事。
最后修改:2023/2/1 7:46:47
23-02-01 07:42
我建议是把时间转化为时间戳,然后比较两个时间戳之间的差值就行
23-02-01 08:09
停电保持计时器(寄存器)不行?
你说的实时时钟,大概也是要精度要求(比如1分钟),而大部分的实时时钟做减法,在plc和触屏里,没有万年历,是不行的.这个在pc里,是完全没问题的.
23-02-01 08:55
其实这个思路很简单就可以搞定,停电的时候记录好时间保存,再上电的时候,用当前时间和停电时间作比较,超过72小时,物料报废
23-02-01 09:32

上一页下一页

工控新闻

更多新闻资讯