抖音粉丝群1
『7x24小时有问必答』

看了一篇公众号文章:
PLC大众安全功能块:FB 949 F_FBBACK接触器反馈
链接:
其实我评论转发的本意,并不是对他这个功能块的功能感兴趣,而只是看到它的调用图,有些感慨。
直接把图转发在这里:
1.png
【万泉河工控评论】
这种调用FB的做法,当然,也是长久以来所有人从入行开始,就被培训老师,前辈师傅,或者官方教程给培养的习惯,FB的管脚就是要你挂实参的。 那么你就必须本本分分,老老实实,每一个管脚都给挂上实参变量。 如果没有的变量,就提前给准备好,这时候给挂上。  
通常是建立一个全局数据块/标签,把需要的数据按照数据结构建立好,当然,如果FB管脚原本就是UDT,则在DB中建立UDT的实例,正好送给FB的管脚上作为实参。  
所以,最终的结果是,FB的管脚上,每一个都不落下,洋洋洒洒,都要挂上实参,如图一般。而我选的这个图,还不够彻底,还漏了一个OUT_2的管脚翘空着,不够满分。  
这像什么,活脱脱就像是插满了糖葫芦的稻草人,在许多所谓的行业标准的程序中经常见到。 通常如果要减少糖葫芦的数量,也顶多是用UDT替代普通数据,把一串糖葫芦挂上几十个山楂,然后稻草人上看起来山楂串的数量少了几个。  
按照翘空之美理论的标准来看这种现象,完全是颠倒过来了了,恐怕应该称作稻草人之丑。
关于翘空之美理论,除了以前的公众号文章中有发表,现在也收纳到新书《PLC通用编程理论》中,是其中的一项重要理论贡献。  
2.jpeg
另外,我今天还突然想起来一件事,我曾经有发文章做过调查,问FB的背景数据块IDB(西门子之外的其它品牌没有数据块编号,名义上叫做TAG,但其实也还是一样的IDB,只是编号隐藏了),IDB中的数据算不算全局变量。  
我的观点是它们虽然可以被全局访问,但不是全局变量。但很多人跟我争论了很久。 具体观点不讨论,也在书中有讲述。
我现在想到的一点是,许多反对我的人,认为能被全局访问,就是全局变量,那这些FB的INPUT , OUTPUT的管脚的数据,原本就是可以被全局访问的,整个PLC程序甚至HMI, SCADA, 上位机,都随时可以访问它们,性能与全局变量无异,那么你们为什么还非要另外再建立一套全局数据来跟它们对接呢?重复的两套全局数据又不在乎浪费资源了?难不成只为了脱裤子放屁多一套手续?
OUTPUT还好说, 那些INPUT管脚,你给绑定了实参之后,比如示例图中的ON管脚,原本任何逻辑中,以及上位机中,只要遥控给IDB.ON这个数据置位,逻辑就跑起来了,而绑了全局变量的实参之后,这个管脚还被这个实参给彻底绑死了。要驱动这个设备,还得全程序扒拉找到这个全局变量。  
这样的程序 ,除非是自己写的。 可以记得数据放在什么地方。 而如果是读别人的程序,光找这个数据出处,又得累死,又得调用交叉索引大法。
所以,以后记得,这种现象叫做稻草人之丑。  
  
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码