您现在所在的是:

DCS论坛

回帖:5个,阅读:605 [上一页] [1] [下一页]
50
swpQT2C
文章数:10
年度积分:50
历史总积分:50
注册时间:2023/4/7
发站内信
发表于:2023/9/28 10:33:56
#0楼
大佬们,请教一下,如何使用浙大中控DCS的功能块实现:30s内检测到3次故障脉冲信号触发报警?
20分悬赏
19249
pqsh 版主
文章数:7422
年度积分:1079
历史总积分:19249
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2023/9/28 11:03:49
#1楼
这个问题还没解决吗?
看你另外一条帖子好像很多人告诉你方法了.
为了你这个问题, 我特意用动画仿真了. 当然为了快速我用的语言不是功能块或者梯形图.
语句大概如下,你可以按照这样转换到功能块, 或者等我装了软件再给你试功能块:
 ps[psp]=frameCount/10.0;  //注释: 定义一个记录时间的数组ps[3]有3个元素, 在事件到来时记录其时间戳,比如你可以是一个一直累加
                              的0.1s或者s, 在于你计时的精度要求, 此处我是frameCount你可以忽略..
 if(ps[psp]==0) ps[psp]=1;   //注释: 这个是为了避免0值比较, 初始化比较不合理
 if(psp==2){
   if( (ps[psp]-ps[psp-2])<10 ) ph=100;    //注释: 如果3次的最后一次记录和最前的在10s内, 那么报警, 此处报警是ph=100忽略
 }
 else {

   if( ((ps[psp]-ps[psp+1])<10 )&&(frameCount>100) ) ph=100;    //避免初始报警, 0-3三个记录翻转, 视觉你可以用移动避免翻转
 }
 psp++;
 psp%=3;    //注释: 只判断最后3次, 一直有一直报, 10秒后没有报警取消, 在另外语句.

完整代码或功能图再议, 我只是给思路.以下是报警示意图.
附件 微信截图_20230928110327.jpg
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
50
swpQT2C
文章数:10
年度积分:50
历史总积分:50
注册时间:2023/4/7
发站内信
发表于:2023/9/28 11:30:32
#2楼
回复 #1楼 pqsh
谢谢大佬。问题还未解决。貌似没有直接定义数组的功能块。
19249
pqsh 版主
文章数:7422
年度积分:1079
历史总积分:19249
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2023/9/28 14:33:03
#3楼
浙江中控ecs-700吗? 我这没它软件. 我看看其它的软件功能块.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/9/30 17:14:57
#4楼
知道逻辑就OK。

现成的没有,搞不定就请外援呗
1619
jlshnlhj
文章数:14
年度积分:285
历史总积分:1619
注册时间:2010/1/28
发站内信
发表于:2023/10/8 16:38:24
#5楼
检测“故障脉冲信号”事件,得到bool on,随系统不同而变化。
30s内检测到3次bool信号,触发报警,可以解决。
这个问题解决了吗?有个思路。事件发生,30秒计时开始...:计数器+1,>=3,报警,计数器清零,30秒计时清零;或30秒到,计数器清零,30秒计时清零。
仔细考虑了一下,此法不严谨,有漏报警。但还是可以解决。需要2套计数器,计时器。
[此贴子已经被作者于2023/10/11 7:50:35编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004