万泉河
WX:ZHO6371995,欢迎+
级别: 略有小成
精华主题: 0
发帖数量: 130 个
工控威望: 246 点
下载积分: 831 分
在线时间: 11(小时)
注册时间: 2021-06-11
最后登录: 2024-11-07
查看万泉河的 主题 / 回贴
楼主  发表于: 2023-05-26 08:39
0514 【万泉河】PLC中的M的本质是糖果

糖果什么意思,就是吃起来比较爽,然而吃多了会上瘾,会蛀牙,会导致肥胖,会引发糖尿病。

我写文章宣传PLC中使用M的坏处,劝诫同行在学习PLC编程中要学会避开使用M以及其它的程序全局变量。 这原本在我看来是非常基础的原理,然而非常匪夷所思的6-7年过去了, 这一理念并没有得到普及。反而在一些场合,仍然有不少反对的声音。

比如有人就理直气壮地反驳曰:既然PLC系统中设计了M变量,你凭啥不让用?只要设计了就可以用。你如果有理,去让西门子等厂家在PLC系统中取消M以及全局标签变量,才证明你说的有道理。

这个逻辑看起来很充分的样子,其实完全不值得一驳。大家都知道吃糖果的危害呢,然而超市里面最显眼的地方卖得更多的仍然是糖果,随处随手可得。 要按这种理论,国家是不是应该强行取缔各种糖果生产商,禁止生产糖果,让小孩子们吃不到糖,就自然不会蛀牙了。 成年人老年人接触不到那么多糖类,也就不会肥胖,不会有糖尿病了。

很显然不是这样嘛!

这个世界上太多存在然而禁忌的规则了。比如商场里的防火通道,平常是要紧闭不许人员出入的。假如来个醉汉, 以存在就要用为由,非要强行通过, 那最终必然被保安给架离。

再比如各停车场里的残疾人优先的车位,即便是空闲在那里, 正常车辆也不可以泊车。而如果有人以闲置导致资源浪费为由,要把自己的车停在上面,那其实就不是在关心资源 浪费,而只是其个人素质低下了。

而我们所倡导的程序中不使用全局变量,掌握此技能后,可以避免因为使用M所带来的诸多弊端,程序模块不能复用,调试工作量大等等。我以前多篇文章中都介绍过。所以我更愿意打比方的例子是爬楼梯。

30层的高楼,有电梯但必然也仍然设计有楼梯,掌握了不使用M的技能,就相当于拿到了电梯的钥匙。 如果有电梯可乘坐,却非要吭哧吭哧爬楼梯的, 众人只能嘲笑其鲁笨了。

也有人指责我管得太宽,每个人都有其自身的特长,适合自己的就是最好的,想用便用,不想用便不用,奉劝我手不要深的太长,限制别人的自由。

我要说的是,这种认知的人读题能力有限。 我在讲建议PLC程序不要用M的道理的时候,是有隐含的前提的。前提是要写高质量的PLC的程序。只有能看得懂我讲的道理的人, 能愿意去学习掌握技能,才能够写出高质量的PLC程序,提高工作效率。

而看不懂的人,与我是没有任何关系的。 我才不会关心其工作效率高低,才不会替其担忧其爬30层楼会不会累死呢!

就好比医生劝诫大家少吃糖, 有人非得抬杠每个人体质不同,适合自己的饮食就是最好的。 我的身体体制和你们不一样,我的体制就是适合吃糖, 多吃糖对我的身体就是有好处,我不会蛀牙,不会糖尿病。 医生才不会卡住你的喉咙不许你吃呢!身体健康是每个人自己的事, 你听不进道理,别人干着急有什么用!别人才不会为你的健康操心着急呢!

更有人质问:“用M伤天害理?M做出来不是给人用的?”,我除了用吃糖和爬30层楼的例子给他们讲解之外, 也暗自觉得好笑。 这样的人心态也太不自信了。 把我当法官了还是把我当老师了?

我既没有权力制定规则,也没有权力判定对错。 我有的只是讲道理,讲给听得懂道理的人听,万千读者中,哪怕只有一个人能看懂其中的道理,能有所感悟,有收获,应用到工作中,能有获得利益, 那对我来说也算是善事一件。 我断没有要求所有人一个步调,按我的道理做事的目的。

除此之外,我还发现有一些人对恪守言行一致的格言认知上有一些偏差。当然他们自己可能还没有发现。我们的文化传统中有一项优良传统是教育人要言行一致,即所言如所行。

然而言行一致并不意味着倒过来。 有的人自己暂时做不到程序中不用M,就要竭力辩解,不肯承认用M的危害,以及学会不用M的技能对工作效率带来的提升。

就好比我们现在倡导文明社会,不要随地大小便。 然而如果你身处戈壁滩深处,方圆500KM都没有公共厕所而你又内急的时候,就只能随地解决了。 然而也断然不会有任何人有什么非议。 你自己当然也不需要觉得羞愧。 然而如果因为自己曾经在特定的情况下没有做到规则,反而试图要否定规则,修改规则以使自己真正符合言行一致的原则的话, 这种操作反而就不太值得赞赏了。

有人举反例说系统有提供了脉冲信号,可以直接使用而减少不少编程工作量。 在SMART 200中是SM0.5, 在S7-1500中如果指定了MB0则M0.5代表了1HZ的脉冲,这用起来确实方便。 然而我们讲用和不用M的时候,是指使用M作为中间状态的缓存工具。 某个位置产生的状态值保存到全局变量中,然后换一个地方又拿出来使用。

像SM0.5和M0.5这种,我们更应该称之为常量,而不是变量。 从而也更不是全局变量了。 就好比SMART 200的程序中每一行开头都要有SM0.0,以及其它品牌会有SM800作为常ON的信号,这些都不必过虑,都不在讨论的范围内。

对于S7-1500中需要在硬件设置中设置MB区,如果不小心未设置,导致功能块功能不能实现,这是个硬伤。有人会觉得不伤大雅,自己早就习惯了每个CPU都会去设置,这完全可以。但如果你的工作只是顶层设计,具体项目是别人在做,多一个漏洞就多一个失败可能性,从我自己来说已经很多年不用这个M了,做项目的工程师是否设置了硬件我从来都不需要关心。 在自己的FB的小宇宙里把功能实现完整,尽量减少对外界的依赖,这才是真正的宇宙观。 我上一篇关于宇宙观的文章,其实就想表达这一点。

当然,这对整个的不使用全局变量M的技术能力来说,关系很小。 这一点确实每个人可以有自己的喜好。 你可以保留这一点喜好,在整体系统学会不用M。 我也坚信,如果你做到了不用M,就会逐渐上瘾,就会体验到每一个模块独立完整性的妙处,会逐渐改变自己的认知和习惯。

也有人对我的理论得不到广泛认可而替我担忧,问我怎么想。 我说,这完全不需要担忧,反而对更多的烟台方法的学员意味着机会。

就好比哈利波特里面魔法学校的老师和学员们所掌握的魔法,面对众多丝毫不懂魔法的麻瓜, 他们需要担忧吗?

如果仅仅掌握不用M和T,掌握五连鞭,都可以当作魔法,都可以称雄工控武林,这个武林世界的门槛是不是太低了点?所以你们知道为啥有些人对我不爽了吧!


糖果吃得爽,吃多了长蛀牙;M用得爽,用多了一辈子出差。


我的新微信号:ZHO6371995
所有同行可以加我。
我们有自动化俱乐部和群侠会纯技术的微信群,每个人可以根据自己的需求,要求加入不同的群组。

本帖最近评分记录:
  • 下载积分:+1(析木lintoa)
    雪山飞狐
    级别: 网络英雄
    精华主题: 0
    发帖数量: 12412 个
    工控威望: 15097 点
    下载积分: 38895 分
    在线时间: 942(小时)
    注册时间: 2019-06-05
    最后登录: 2024-12-22
    查看雪山飞狐的 主题 / 回贴
    1楼  发表于: 2023-08-31 18:42
    越简单越好。简单就少用脑。烧脑的事儿就会少,工控朋友们就好搞。