回复:三取中程序实现,谢谢各位了

宁超

  • 帖子

    1009
  • 精华

    39
  • 被关注

    374

论坛等级:至圣

注册时间:2012-12-11

普通 普通 如何晋级?

发布于 2016-01-27 12:46:29

1楼

你得主动学习下,求程序还要求编程语言符合你的习惯呢?

首先要评估信号状态:

1.创建一个UDT或者STRUCT,如温度CT002

CT002:STRUCT

    Value:REAL; //温度过程值

    ST:Byte;    //信号状态

END_STRUCT;


2.做一个1s的脉冲(1Hz)每次上升沿检测去当前的温度跟上一次有效温度进行比较

  CT002_Old,注意这个值必须为有效值,假设CT002.ST:=16#80代表有效值,:=00代表坏值

那么CT002_Old的过程值一定是在:=80的时候存下来的。

A Pulse1Hz

FP FP_Pulse  

= PulsePosEd

A PulsePosEd //1秒脉冲上升沿执行1周期

JCN a0b0

L CT002.value //采集到的当前值

L CT002Old.value //上一次的有效值

-R

L 10.0

>R  //与10比较

JCN a0b1

L B#16#00 //差值大于10,ST=16#0,信号质量差

T CT002.ST

JU a0b2

a0b1:NOP 0

L B#16#80 //差值在允许范围,ST=16#80

T CT002.ST

L CT002.Value

T CT002Old.Value //差值在允许范围,更新上一次有效值

a0b2:NOP 0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

上面的程序与CT002,CT003~5都要做一次,你要是会使用循环就更好了。


3.计算坏值信号的个数

 即要在这个1s上升沿的周期内检测出CT002~5有几个坏点。因为有以下情况可能发生

 假设有1个坏点。任可以去掉最低,剩下的值除以/2

 有2个坏点...

 有3个坏点的情况,去掉最小就没有温度可以除了!

4.坏点个数错误次数累计,连续采集比较都没有有效值,就必须报警了。另外最好能手动修改上一次的有效值。

5.排序温度值,冒泡程序,找到最小值,剩下的有效值除以个数(注意要减去坏点的个数哦)。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54789条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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