工控编程吧

标题: 流量显示问题 [打印本页]

作者: baikhgmv    时间: 2016-9-22 12:36
标题: 流量显示问题
流量显示问题现在程序里有个瞬时流量和一个总流量 现在顾客要求画面不仅要有总流量显示 还要有7:58-19:58 和19:58到眀7:58的2个时间段的数据显示(只显示时间段内流量和) 现在我的想法是每秒采集一次,12小时求次和 请问怎么才能在7:58 和19:58这2个时间段触发呢 本人新手


-------总累积还是正常累计
你可以用sfc0和sfc1读写cpu的系统时间,然后判断时间第一次大于7:58或者19:58则用一个变量保存当前累计值,然后当前累计值减去保存的值就是从那个时刻到当前时间的累计值。
或者用ob35等中断来做,如果ob35的周期是100ms那么10个周期就是1s,你再ob35中用一个双整数自加1,然后判断累加的结果,如果大于设定值1或者设定值2则处理结果和前面说的一样就行了。双整数自加你可以手动清零也可以自动清零(自动清零就是每12小时清零)


------总累计已经有了,这个类似于分段累计。
可不可以在OB1里用LB15(时),LB16(分)做转换比较触发上升沿,通过上升沿进行减法计算就能得到当前时间的累计值,然后WINCC变量记录里组态这个值以及相应触发的上升沿,通过非周期的时间控制(事件变量)记录保存并在画面上显示

--------这个和OB1没关系, 直接在上位机做就可以。
附代码:
全局脚本1S周期,systeminformation建立好hour, minute, second变量
float flow = GetTagFlaot("flow"); //瞬时流量;
static float total = 0.0;

total += flow / 3600;

if(GetTagWord("hour") == 7 && GetTagWord("minute") == 58 && GetTagWrod("second") == 0)
{
//写入 7:58的变量
total = 0.0;
}
else if(GetTagWord("hour") == 19 && GetTagWord("minute") == 58 && GetTagWrod("second") == 0)
{
//写入19:58变量
total = 0.0;
}








欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4