QQ登录

只需一步,快速开始

流量显示问题

[ 复制链接 ]
流量显示问题现在程序里有个瞬时流量和一个总流量 现在顾客要求画面不仅要有总流量显示 还要有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;
}



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索