CS3000如何参照系统时间? 点击:3378 | 回复:14



Ys

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 60回
  • 年度积分:0
  • 历史总积分:316
  • 注册:2005年12月11日
发表于:2005-12-29 16:42:00
楼主
    我想做累计流量的定期自动清零,但不知CS3000组态时如何参照系统时间. 如果是每天或每周固定时刻清零,还可以用定时器,但每月清零定时器就无能为力了(因为每月天数不同).横河一工程师曾告诉我系统时间不能参照,电子资料中我也没有发现什么线索.   
    我想到用计划表,计划表(scheduler)具有时间性,是特定时刻执行特定功能的, 但其中未包含Instrument command operation的功能.
    希望大家能给点建议, 另请教计划表中Function一栏在用其8个主要用途中分别的填写格式. 谢谢!



jackbsz

  • 精华:3帖
  • 求助:0帖
  • 帖子:17帖 | 157回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2004年8月13日
发表于:2005-12-31 09:40:00
1楼
每天或每周固定时刻清零,你是怎样做的,我也想做,向你请教一下.
主要是清零,现在我还是手动一个一个清零的.

jackbsz

  • 精华:3帖
  • 求助:0帖
  • 帖子:17帖 | 157回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2004年8月13日
发表于:2006-01-01 13:07:00
2楼
怎么不回答?

Ys

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 60回
  • 年度积分:0
  • 历史总积分:316
  • 注册:2005年12月11日
发表于:2006-01-04 20:16:00
3楼
自己顶一下,免得沉底了.
不好意思,上面的朋友,我好几天没进坛子了.普通的PVI PID等模块都有自动累计的功能,当然还有YS系列的STLD模块就是专门用来直接在仪表上显示累积量的(STLD只能和I/O通道进行数据连接,不能和其他模块进行端子连接),它们都可以实现自动清零.  我试过,用一个计时器(TM)一个顺控表(ST16)一个计算模块(CALCU),再加上两个内部开关就可以实现对一个PVI表的SUM值进行周期性自动清零.今天没时间,下次有机会我详细说一下.
我还是很想知道系统时间到底能不能参照? CS3000没有实时时钟模块真是个遗憾,我曾看过有个小系统都有这功能.

jackbsz

  • 精华:3帖
  • 求助:0帖
  • 帖子:17帖 | 157回
  • 年度积分:0
  • 历史总积分:364
  • 注册:2004年8月13日
发表于:2006-01-05 13:24:00
4楼
我期待你的回答.PVI表的SUM值进行周期性自动清零?

Ys

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 60回
  • 年度积分:0
  • 历史总积分:316
  • 注册:2005年12月11日
发表于:2006-01-05 18:17:00
5楼
其实很简单. 假设有一个已经具有累积功能的PVI,名为FI101(注:因要用到CALCU,所以位号最好不要写成FI-101,不然系统会把"-"当成"减号",保存时会出错). 首先,建立 1个计TM 1个ST16 1个CALCU ,位号就分别叫 TM101 ST101 CAL101 吧.然后再建立两个内部开关SW100和SW101,前者用来启动这个小程序,后者只是程序中的触发开关. 然后,把计时器该成以分钟为单位的(TM默认是秒), 见图
之后,填写顺控表ST101, 见图
再后,编写CAL101的语句, 见图
OK,Download(在线状态) 或 Save(测试状态). 调出TM101把它的设定值改成2 , 调出ST101把其状态改为"AUT".调出SW100并把它置"ON"并保持这状态,计时开始,如果FI101的SUM原来是有值的,请等2分钟再看看结果吧. 如果成功了,就吧TM101的设定值改成1440(一天1440分钟),并在你选择的时候把SW100置"ON"吧,第二天的这个时候它会自动清零.

Ys

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 60回
  • 年度积分:0
  • 历史总积分:316
  • 注册:2005年12月11日
发表于:2006-01-05 18:49:00
6楼
用CALCU模块最多可以有12个赋值输出,所以上面在CALCU语句里多填几行就可以同时对12个PVI的累积值进行清零. 有时候清零前的数据如果很重要,需要人工记录,如果当天你没来及记录,它却给清了,可能会给你造成麻烦.不过这也是可以解决的,让系统在清零前一刻把累计量给寄存起来. 这就要再建一个BDSET-1L模块.比如位号就叫BD101.见图
把CAL101的程序语句改一下,见图
再按上面说的方法调出来看看,同时也调出BD101的tining画面,你会看到清零前它会自动把这时刻的累计值保存在BD101的DT01里面. 你还可以把BD101.DT01在流程画面里用一个"process data"来显示,提示你这是前一天的累积量. 1个BDSET-1L总共可以寄存16个数据(DT01--DT16),默认上限是10000,如果你的累计量比较大,你得把这个上限值往高里设. 由于CAL101这里用到了两个赋值输出,所以这就最多可以同时给6个PVI表进行累积量清零. 当然,把累积量做个趋势,最简单. 那上面这个就纯属"好玩"了

黑蛋小时候黑得很

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 21回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2005年12月05日
发表于:2006-01-05 19:25:00
7楼
可以参考系统时间的.用sfc里面的sebol模块,里面有个自带的函数.
getdate(year,month,day)这个函数可获得当前的年月日.
gettime(hour,minute,second)这个函数可以获得当前的系统时间.
你可以找电子资料看一下的.

黑蛋小时候黑得很

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 21回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2005年12月05日
发表于:2006-01-05 19:39:00
8楼
不知道我说的对吗, 大家不要笑话我哦,

operaton

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 58回
  • 年度积分:0
  • 历史总积分:206
  • 注册:2004年3月17日
发表于:2006-01-09 21:23:00
9楼
谢谢 刚读两年书 的耐心讲解!

Ys

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 60回
  • 年度积分:0
  • 历史总积分:316
  • 注册:2005年12月11日
发表于:2006-01-11 14:42:00
10楼
谢谢  随  朋友的提示!
SFC常用来做大型顺序控制程序的,标准型控制站也就10个SFC块,虽然工艺上复杂到要用SFC来做程序的情况不多,但浪费一个用来实现这点小功能还是有点"高射炮打蚊子"的味道.SFC我只是了解一点,还未用过它来编程,希望有机会向你请教,还有SEBOL语言.

漠然

  • 精华:0帖
  • 求助:2帖
  • 帖子:25帖 | 89回
  • 年度积分:0
  • 历史总积分:283
  • 注册:2003年3月22日
发表于:2006-05-24 14:54:00
11楼
读取系统时间,然后就很好做了!

Ys

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 60回
  • 年度积分:0
  • 历史总积分:316
  • 注册:2005年12月11日
发表于:2006-05-24 16:54:00
12楼
关键是如何读取系统时间。

张天军

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 478回
  • 年度积分:0
  • 历史总积分:609
  • 注册:2006年4月17日
发表于:2006-06-05 15:40:00
13楼
最最最简单的办法就是OPC写数据进去 就一个小程序 运行在SERVER上基本稳定

领域新秀

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 54回
  • 年度积分:0
  • 历史总积分:235
  • 注册:2005年8月05日
发表于:2009-06-15 16:44:15
14楼

7楼说的问题,是西门子系统功能块!!


热门招聘
相关主题

官方公众号

智造工程师