技术论坛

300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数

作者 主题
侠圣

经验值: 4577
发帖数: 399
精华帖: 0
主题:【求助】300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 楼主 2021-09-28 07:41:34

现在300的系统,想完成设备运行周期次数的统计,设备运行周期信号是I1.2,要求每月21号计数自动清零,计数分为本月计数和上月计数,请问用梯形图怎么实现?计数器串联什么意思?c2是完成一次计数999吗?


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1717684&b_id=4&s_id=0&num=7

奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 1楼 2021-09-28 08:16:56

你的需求没看明白,999是什么意思?


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
至圣

经验值: 69050
发帖数: 12265
精华帖: 59
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 2楼 2021-09-28 09:20:50

用IEC的计数器,或者上升沿直接用ADD,双整数的话,能加到2的32次方


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 16421
发帖数: 2400
精华帖: 0
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 3楼 2021-09-28 12:41:52

天天学习不断进步


开心每一天,懂得包容、感恩!
以下网友喜欢您的帖子:

  
侠圣

经验值: 4577
发帖数: 399
精华帖: 0
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 楼主 4楼 2021-09-28 13:21:13

用ADD_I进行计数累计,现在还有一个问题请教一下,300要从200系统通过DP通信读取设备的地址,这个设备DP地址是11,第一个字的11位是卸料信号,第一个字是PIW600,请问这个用常开点怎么写地址?PIW600.11吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 5楼 2021-09-28 14:59:06

用IEC的计数器


邮箱 yongquancun@126.com
以下网友喜欢您的帖子:

  
侠圣

经验值: 2790
发帖数: 390
精华帖: 5
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 6楼 2021-09-29 12:03:06

现在300的系统,想完成设备运行周期次数的统计,设备运行周期信号是I1.2,要求每月21号计数自动清零,计数分为本月计数和上月计数,请问用梯形图怎么实现?计数器串联什么意思?c2是完成一次计数999吗?

那么问题的解决分为要分开解决。

第一 I1.2 为运行周期,那么 I1.2 为周期性的脉冲信号,当I1.2 接通或断开的 上升沿 计数器增加一个。

第二,需要制作系统时间去比较21日这个节点。

我是否可以这样理解 例如   8月21日 00:00:00  清零后开始统计   

数据1 为 8月21日 00:00:00 ---31日 23:59:59 之间的计数值。 会有大小月区分。

数据2 为 9月1日  00:00:00-----9月20日 23:59:59 之间的计数值

这样从8月21日 统计到9月20 为一个月,数据为8月和9月  对应你所谓的本月计数和上月计数。


这个程序块 可以读取并写入 PLC 系统时间。

年 ,月 日 

然后分别比较。



FUNCTION_BLOCK FB10

TITLE = 'Block Title'

//

// 写入系统时间

//

VERSION: '1.0'

AUTHOR: baikai

NAME: Sys_time

FAMILY: baikai




VAR_INPUT

//enable_store_time:BOOL:=false;          //存储系统时间  可以记录设备故障时间

//enable_write_time:BOOL:=false;          //写入系统时间

END_VAR

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;

copy_status2:INT;

write_status:INT;

read_time:DT;

act_time:ARRAY[0..8] OF BYTE;

write_time:DT;

TS:WORD;

week_no:INT;

END_VAR

read_status:= READ_CLK(CDT := read_time 

         ); // 读取系统时间

copy_status1:= BLKMOV(SRCBLK := read_time  

       ,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;

(*

 IF enable_store_time THEN     // 存储时间

    copy_status2:= BLKMOV(SRCBLK := act_time 

           ,DSTBLK := write_time 

           ); // 当需要写入,先把最后一次的运行时间存储。

        END_IF;

 IF  enable_write_time THEN    // 写入时间   

    write_status:=  SET_CLK(PDT :=  write_time // 

             ); //写入最后一次时存储的时间。 

   END_IF;

      


*)

END_FUNCTION_BLOCK



大家同行,you ok ? me !
以下网友喜欢您的帖子:

  
奇侠

经验值: 8295
发帖数: 641
精华帖: 0
回复:300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数


只看楼主 7楼 2021-10-05 13:53:45

这样的程序应该很简单的啊!!!


努力向上
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
300系统,需要实现计数大于999,并且每月21号固定清零,计数分为本月计数和上月计数
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。