西门子S7-200 Smart的双线圈问题

2018年12月17日15:16:19 发表评论 191 阅读

近些天在找答案栏目那里看到有这么一个问题是描述,如何判断、界定双线圈,这是一个普遍而又实际的问题。

上述程序很显然,编辑的程序有双线圈的嫌疑,所谓“特征”鲜明(多个条件同时或者单独可以给同一个地址写值)。

那么,下面的程序段是否也算双线圈呢,再附上程序:“特征”仍然鲜明的那种

当然应该也算是的,写到此我开始“糊涂”了,这不是平时经常在用的编程方式?突然间话说双线圈问题,感觉编辑带有双线圈程序显得熟悉而又陌生起来了呢。

双线圈先暂时给它“定”个“义”:即2个或2个以上的条件可以写值给同一个线圈的程序段称之为“双线圈”。

那么,回避编辑双线圈的理由又在哪里?双线圈问题几乎99.99%的编程者都说不允许,道理很显然,容易使程序出错,可我又且且是0.01%的那类,于是,“好奇”地将程序由LAD转换为STL模式,图示:

“特征”鲜明的程序通过这么轻轻一“点”鼠标转换后,似乎有一点“理解”了程序段实际工作原理的头绪,首先抛开关于对“栈”的含义理解不说,编程人都知道,PLC程序的扫描工作机制是自“上”而“下”,自“左”而“右”的工作模式。那么,理解上述2个程序段的“利”与“弊”就变的简单了许多,同时,我似乎理解了为什么不允许使用双线圈的真正意图的所在,是为了“避免”自己都没有考虑周到;或者没有完全考虑周到的程序逻辑关系的极端做法。因为实际的程序几乎不可能仅仅只有这几句程序语句那样容易判断,在错综复杂的程序结构中,自己几乎需要通过几天或者更长时间编辑过程,很难查找到疑似的双线圈问题。这时,耳边好像飘过来一声“交叉引用”不是解决双线圈的“利器”?但是,马上又有另一种声音传来,如果是指针方式编程你也想试试“利器”吗?“编译”更本不能够解决此类逻辑关联问题。

一个看似简单的程序段,怎么牵涉出这么多话题。我在实际回答中仅仅写了“知其理,用其道”,凡是均没有绝对的,“合理”地使用是可以的,如、程序段2的置位、复位指令应用,那怕必要时写程序段1的那种。我一般在编辑此类程序段时,基本上思想都比较谨慎,如果需要用到此类编程方式时,用过置位指令后,基本马上就用复位指令来消除心中的“疑虑”,或者在使用之后,“推、敲”一下指令应用的合理性,都说编程应该是一件快乐而慎密的工作,程序结构所处的网络段不同,其结果会大相径庭了的。经常会看到说这“坑”那“坑”的人,实际上只有掉过坑的人才有对“坑”论的深度理解。纵然知道前面有深坑,也深深记得曾经被摔的遍体鳞伤,没有关系勇敢的跨过去,坑一定会在你身后,将抛弃的很远很远、、、、、、双线圈本无错,如果错,则错在如何理解的程度上。

weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: