技术论坛

 回复:模拟量批量处理三

返回主题列表
作者 主题
question
奇侠

经验值:5626
发帖数:872
精华帖:6
楼主    2017-09-09 11:33:15
主题:模拟量批量处理三 精华帖  精编帖 

感谢Zane版的几点建议.

再次修改程序如下:








下面红色部分是Zane的建议.


首先,模拟量通道的值要逐通道的传送,通道多了还是费力的;


其次,被批处理的所有通道,要求一致的量程,直接的温度通道还行,但通过变送器的温度/压力/流量等信号,要求一致的量程就有些困难了;


第三,程序的可读性变差,原本可定义与工艺/物理相关的的符号名,现在最后得到的值都是数组变量,程序中引用通道变量产生交错后,不易发现已经存在的错误。


第四,博图的系统对于模拟量来说,多多少少都有些诊断功能,楼主的程序没有考虑这一点




第二点解决了. 但也加大了程序的复杂性. 增加两个自定义数据类型.

第三点我想不是问题, 可以在注释里写相关信息.

第四点手头没有手册, 后期我会加上超限和断线报警, 更深一步的诊断可能无能为力的.


这次的程序把接口部分的变量名改短了,接口变少了.另外, 以前只知道NORM_X,却不知道NORM_X_REAL,

关于编程, 我更喜欢强类型. 还有修正了以前程序的一个Bug, 把模拟量通道作为Word, 其实应该是Int类型.

所以这次取消Word_to_Int的转换. error以前是output接口, 这次直接写成函数返回值了.


再次感谢Zane的宝贵建议.


drongh
Zane
版主

经验值:85179
发帖数:21055
精华帖:399
1楼    2017-09-09 16:12:00
精编帖  主题:回复:模拟量批量处理三

 看到楼主契而不舍的精神,忍不住要赞一个,但还要给楼主一个建议,思维要发散,你写的程序如果要给别人用,你就要站在别人的角度去考虑问题,而楼主的第三贴还在那儿绕圈子不是吗?


简单的说第一点:楼主现在的程序如果通道变了,是必须修改程序重新下载的,有没有可能性,有多少个通道,通道地址,每个通道的量程,都是通过用户程序可自由定义的?

Zane 注册自动化系统工程师 Always save before download
宁超
至圣

经验值:11565
发帖数:1009
精华帖:39
4楼    2017-09-09 18:12:21
精编帖  主题:回复:模拟量批量处理三

这跟FC105比没有任何优势,功能来说。

给你开放下思路:

- 4~20mA 过程信号电流可以定义比如3.8< Ia< 21之间也是正常


- 至少提供2种中其中一种发生过程信号无效时的紧急处理:

  * 替代值

  * 最后一次有效值

  其中信号无效时的状态到达和离开最好可以延迟,简单的波动抑制

- 仿真值

  激活仿真功能,可以输出一个仿真的过程值。

- 生命迹象检测

  当输入值在一段时间总是不产生任何变化即可以认定信号可能产生问题,模拟量原本的定义就是连续变化的物理量。每次输入值与上次不一致的时候重置计时。



question
奇侠

经验值:5626
发帖数:872
精华帖:6
5楼    2017-09-09 20:09:47
精编帖  主题:回复:模拟量批量处理三

关于模拟量发生信号无效的紧急处理, 感觉在程序里处理有点力不从心.

我们一年前遇到类似的情况.


有台锅炉, 有10个温度检测点, 但参与PID反馈的温度只用了其中一个, 正好那个温度探头断线, 导致整炉的产品报废, 损失10万多. 后来我们做了如下改进, 一旦探头断线后, plc输出一个数字量信号, 控制一个继电器, 切换其它探头代替断线的探头, 测试下来, 完全满足要求. 另外似乎也可以用硬件中断的办法, 装两个探头.

 

如果用替代值和最后一次有效值的话, 很难满足工艺要求.


谢谢大神建议..

drongh
宁超
至圣

经验值:11565
发帖数:1009
精华帖:39
6楼    2017-09-09 20:49:29
精编帖  主题:回复:模拟量批量处理三

这是另外的一个程序了。每次模拟量通道都得出一个过程值信号后,当然需要择优选出信号有效的值来投入PID的回路。你说的这种工艺上经常可以看到的。这就是为什么多点测量投自控需要每个过程值都带信号质量代码的原因。实际上还不是去检测输入通道的工程值吗?


这跟模拟量线性化功能块的替代值和最后一次有效值功能有冲突吗?

question
奇侠

经验值:5626
发帖数:872
精华帖:6
7楼    2017-09-09 21:01:51
精编帖  主题:回复:模拟量批量处理三

很好的建议.


我更倾向于使用最后一次有效值, 程序简单.

但模拟量批量处理程序我想更通用化, 判断起来感觉有点难度, 毕竟有好多种, 需要根据极性判断一一判断,程序会更多.

drongh
Vcontrol
侠圣

经验值:2405
发帖数:21
精华帖:0
12楼    2017-09-10 23:55:59
精编帖  主题:回复:模拟量批量处理三

版主Zane您好:

        请问如有多个探测点场合时,是否可用MIN和MAX指令,确定这些探测点的最大值和最小值,正常情

况下,这两个值的差应该在一个合理范围,如出现像断线等极端情况,那该差值应该在不合理范围,据此

可产生一个故障信号,去响应该故障的处理。

YiMoon
至圣

经验值:11742
发帖数:1228
精华帖:36
13楼    2017-09-11 10:50:30
精编帖  主题:回复:模拟量批量处理三

多点测量的话,个人认为,先判断每个探测点的值在正常范围,再取多个探测点的平均值

如果有一个点出问题,把这个点剔除,再做平均值。

Keep calm and carry on!!!
Zane
版主

经验值:85179
发帖数:21055
精华帖:399
14楼    2017-09-11 11:07:16
精编帖  主题:回复:模拟量批量处理三

博图下都有较完善的诊断功能,即使BA模块,也有7FFF及8000的故障值,因此在处理前是完全可以把有故障的通道预先剔除出来的。


当然,也会有些故障(比如机械安装的问题)并不导致电气系统诊断,但读数偏离正常值较大,亦会影响控制,也应予以剔除,此时就需要计算误差范围了,一般来说可以设置平均值的正负偏差范围,也可以利用数理统计的一些偏差计算方法来确定具体偏差允许范围。


还有,需要考虑物理量快速变化时,通道之间的差异,导致的偏差值的大小变化,允许偏差值范围过小,会导致虚警率偏高。

Zane 注册自动化系统工程师 Always save before download
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。