故事作者:万泉河

最近创作

看看TA的故事

【万泉河】Input管脚的纠结

已锁定

万泉河

  • 帖子

    10885
  • 精华

    132
  • 被关注

    892

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

【万泉河】Input管脚的纠结

4251

13

2020-10-23 10:47:24

【万泉河】Input管脚的纠结

 

各位同行读者慢慢会发现,我所关注的技术点竟然逐渐退步到关心一些最基本的基础知识上了。我以前写过文章探讨过TEMP, 也征集观点与大家讨论过静态变量STATIC,这回,瞄准了INPUT了。

 

或许有人会很自信,这种简单问题有什么好探讨的,别急,越是小问题里面越有大文章。

 

首先看字面的含义。

 

INPUT即输入管脚, 输入数据类型可以有多种。但都是为了给一个程序块FB/FC输送数值,即实参,用于程序内部计算时使用的。

 

但问题是,它到底是数值还是参数呢?

 

不可能同时都是。只能居其一。

 

比方说,一个模拟量的规范处理函数,有来自模拟量卡件的AD转换后的数值,也有用于规范处理的物理量上限和下限值。这两者就不一样,前者是数值,后者是参数。




数值么,简单,只需要把相应的变量绑定到管脚上就可以了。

 

而问题就出在后者,参数。

 

对于一个模拟量信号来说,其规范上限值和下限值,会是一个固定的数值,所以它实质上是个参数。比方说温度的4-20mA对应的下限上限分别为0-100的时候,就可以在下限的管脚输入0.0,而在上限的地方放上100.0的固定值。

 

而如果在运行中,或者调试中发现这个上限下限数值不对,需要修改,比如因为传感器维修更换了型号,下限需要由0改为-50,怎么办?最简单的方法当然是改程序。

 

但如果设备已经交工了,系统已经在运行中了。因为这样一个小的改变,就要找个工程师拎着编程器到现场来改所谓的程序,是不是就有点显得太LOW了。

 

像支持HART协议的仪表,都可以在维护过程中随时校准,而到了PLC反而不能了,PLC作为一个智能设备,到头来连仪表都不如了?是不是有些丢人了。

 

有解决办法,是把参数部分作为变量,传到WINCC或者其它的上位机以及HMI上面。就可以在运行中随时更改了。

 

但是,有一个问题,要求这个管脚上不能绑数值。如果绑定了数值,程序运行中就不支持上位来改了,因为你不管改到多少,都会被随时刷新给刷回到绑定的固定值。

 

好吧,那不绑定固定值。怎么样?


那模拟量模块在开始运行的时候,参数值都以FB中所定义的默认的初始参数值运行。而一个AI处理的FB块,将来需要面对的物理量有几十种种,上下限自然也多种多样,有0-1, 0-100,0-1000,0-10000的等等。 在设计FB的时候只能选其中一个。而且不可能针对每一个类型的仪表都专门设计一个FB块。

 

所以,尴尬就来了。

 

当程序下载后,开始调试的时候,工程师需要再翻阅变量表,每个模拟量逐个标定。即便你事先准确知道这个正确的上限下限值都不能省。

 

在信号数量多的情况下,这会是一个比较大的工作量。这是追求标准化工作效率的我们,所不喜欢的。

 

所以你是不是又要纠结到底是该翘空INPUT管脚还是该挂固定值了。

 

反正我纠结了很久。

 

解决方法,当然有。我曾经分享过西门子官方的例程BAT EXAMPLE,在我的《WINCC从入门到精通》书中也有专门的章节简单介绍过这个例子。但此方面的细节没有顾及。

 

这次借机讲解一下。

 



大家可以注意到BST例子程序中的许多函数的左下角,都有一个默认初始值为TRUE的叫做RESTART的管脚。

 

这个RESTART管脚,就是解决我上面提出的问题的。其功能是,在PLC程序首次被下载到PLC并运行时,把设定的参数值送给内部的开头是OP_XXX的变量参数,只送一次。而内部的开头是OP_XXX的参数,其实是送到上位机可以被访问修改的。




 

问题得到完美解决了吗?

 

其实没有。

 

仍然还有纠结。

 

我自己不止一次次的遇到有学员问我,怎么要改个模拟量的上下限,报警限制值等那么难,我明明在PLC的INPUT管脚中都修改了,但不管用,还是老的设定值起作用。

 

我说,那把程序重新下载。

 

但没用。在S7-300的时候背景数据块重新下载数值就改了。但在博图里面,它认为你对DB块并没有修改,所以你即便点下载,也不给你更新。 你需要更复杂的操作。。。。

 

我曾经想过在某些场合,就固定RESART输入TRUE,而不是任由其为默认的TRUE。虽然看起来都是一样的TRUE,但其中其实是有区别的。默认的TRUE,程序中会给复位。而强制输入TRUE以后,就复位不了了,就会强制每个周期都会把INPUT 管脚来的参数值传送给OP值,并采纳。

 

这种情形,只适用于没有上位机,或者上位不需要修改参数的情况下。

 

而大部分情况下,还是不行。

 

下面,高能时刻来了!

 

我最新的处理方式是,通过数据判断,程序逻辑中判断INPUT管脚上数值有改变的时候,则采用一次INPUT管脚的数值到OP参数,而其余时刻,则采用OP设定值。

 

这样就完美实现了既可以随时在程序调试中修改管脚参数值,也可以在上位随时调整修改参数值的需求。

 

逻辑其实很简单,无非是增加一个记录前值的保存值。对于BOOL量来说,本质上就是个上升沿的判断。但为了简化调用,做了一个通用各种数据类型的LINK_VAR块,趁机练习了一把Variant变量的使用。

 

使用中是这样滴:


 


PLC标准化编程 发起了一个读者讨论各位同行是否认可我的做法,是否觉得我这样做是多此一举呢?

 

此处把做的LINK_Var块分享给大家。得到方法是, 关注本公众号《PLC标准化编程》,后台回复LINK,得到程序链接。


本文转自公众号文章, 相关图片因为操作原因,未一一复制。可以从原文中浏览

https://mp.weixin.qq.com/s/0UWvTtmLsXKDTPuP9jPpCg



【万泉河】Input管脚的纠结 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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