又见脚本奇怪问题!

已锁定

锋言锋语

西门子1847工业学习平台

  • 帖子

    3953
  • 精华

    54
  • 被关注

    131

论坛等级:至圣

注册时间:2011-07-31

钻石 钻石 如何晋级?

又见脚本奇怪问题!

1260

16

2011-08-11 10:13:05

我做的计算当班和当日平均值的脚本,思路是:
1.在整点归档时计算过程量的累加值;
2.在7点和18点完成当班的平均值计算;
3.7点完成当班平均值时,把当班的平均值保存到上班平均值中;
4.18点完成班的均值计算以后,计算当日均值: (当班+上班)/2;
问题来了,我发现7点得时候没有结转本班的均值,反而是18点得结转了。这样就造成当日平均值=上个白班+上个夜班)/2, 而不是我要的(上个夜班+当班白班)/2。我反复看了程序,无奈找不出问题所在。请指点。
注:各班的班均值归档都可以正常完成。

#include "apdefap.h"

int gscAction( void )
{

if (GetTagBit("tmp_bit_21")) //HOUR归档完成
{
if (GetTagBit("tmp_bit_18")) //过程值的归档,7点和18点
{
if (!GetTagBit("tmp_bit_29"))
{
if (!GetTagWord("minute") && (GetTagWord("hour")==18) ) //18点计算本本班平均
{ //计算班均值
SetTagFloat("kiln_head_T_av_now",(GetTagFloat("kilnhead_t_tmp")/11));//
//此处若干行计算平均值的语句

}
if (GetTagWord("minute")==0 & (GetTagWord("hour")==7) ) //07点计算本本班平均
{
SetTagFloat("kiln_head_T_av_now",(GetTagFloat("kilnhead_t_tmp")/13));
//此处若干行计算平均值的语句
SetTagFloat("kiln_head_T_av_last",(GetTagFloat("kiln_head_T_av_now")));
//此处若干行结转的语句

}
SetTagFloat("kilnhead_t_tmp",0); //Return-Type: BOOL
//此处若干行累计值清零的语句;

SetTagSDWord("av_shift_id",-1);
SetTagSDWord("av_shift_job",6);
SetTagBit("tmp_bit_29",1); //shift归档中.......... //班均值归档操作
}

if (GetTagSDWord("av_shift_job") !=6)
{
if (GetTagBit("tmp_bit_34")) //18:00标志
{
if (!GetTagBit("tmp_bit_30"))
{
//日均值计算
SetTagFloat("kilnhead_tav_day",(GetTagFloat("kiln_head_T_av_last")+GetTagFloat("kiln_head_T_av_now"))/2);
//此处若干行计算日均值的语句;

SetTagSDWord("av_day_id",-1); //触发归档
SetTagSDWord("av_day_job",6); //日均值归档操作
SetTagBit("tmp_bit_30",1);
}
if (GetTagSDWord("av_day_job") !=6) //日均值完成归档
{
SetTagBit("tmp_bit_34",0);
SetTagBit("tmp_bit_30",0);

}
}
SetTagBit("tmp_bit_21",0);
SetTagBit("tmp_bit_29",0);
SetTagBit("tmp_bit_18",0);
printf("av_archive is OK!");
printf("\n");
}
}
//对应过程值平均值归档

}

又见脚本奇怪问题! 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32659条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。