SFC程序里用上<PLSY>指令,分别在FX1s、FX2n系列PLC上运行有不同的表现,造成这个‘差别’的“原理”既不是№2楼<陈华工控>说的“PLC的硬件数字逻辑信号寻址控制方式”,也不是№52楼<newchp >说的“1ms定时器动作时序不同”!
而是:FX1s和FX2n两种不同PLC系统编译程序对<PLSY>指令之“再启动”的处理方式上有不同,再加上SFC程序运行时,未被选通的STL片断中的所有指令都不做运算处理。当含有<PLSY>指令的STL片断“S0”在首次被选通时,<PLSY>指令在FX1s上运行是完全没有问题的,当“S0”工序任务结束,转移至下一个工序任务的“S20”时,“S0”自动关断,其STL片断中的所有指令都被“程序扫描”给跳过不运算。即,其中的<PLSY>指令不可能在“S0”片断被关断期间进行OFF运算。
恰好FX1s的“再次启动”必须有“至少经OFF运算过1个周期”的前提条件。当第2轮次应该执行“S0”工序任务时,没有“再启动”必需的前提条件,<PLSY>指令就无法“再次启动”也就无法正常输出脉冲!而FX2n的“再启动”不需要这个“前提条件”,所以,<PLSY>指令在FX2n上不存在“隔轮有效”的问题!
引用<PistoN >的内容:
“没看出来这50分到底给谁了 ”
回复:
就是嘛,这《工控网》怎么不把楼主自主决定的“奖分”之分配情况给显示出来呢?!
我给№23帖分配了20分的奖分,因为这个帖子指出了:“如果是普通S0触点而不是STL触点,应该就不存在隔轮输出的问题”!这个答案是与题目要求的答案有点沾边了,比起那些回答“是逻辑信号寻址控制方式,逐一扫描和间隔扫描,”以及回答“每一种PLC有自己不同的扫描时间,不能做比较的”这类与主题所指的“原理”毫不相干的回复来说要好很多!也比那个回答“是PLC内核编译程序不同所致。两种不同的PLC,相同的定时精度(如都是1MS),同样的启动条件,随着时间的推移,会出现不同的动作时序。”要具体,准确些!
另外30分的“奖分”分配给了№32帖,这个帖子虽然没有回答主题所指的“原理”,但是<danny604> 网友有正确的“是非观”,能够旗帜鲜明的支持“以学术态度对待科学技术”的好帖。所以我给他的奖分比例要高一点!
这两个获得奖分的帖子都不是理想的回答出主题所指“原理”的帖子,但是,迄今没有一个(非楼主的)“跟贴”符合要求。根据《工控网》的规则在期限之内必须“结帖”,否则将由《工控网》代你作主,不分青红皂白的把“奖分”奖给第1个(非楼主的)“跟帖”。我如果再不把这个奖分给处理掉,那《工控网》岂不要把这50分“奖给”№2楼的那个与主题所指“原理”毫不相干的错误答案?!所以,我不得不退而求其次!
我们在这里讨论的例程中的<PLSY>指令是这样的:“ PLSY K5 K0 Y0 ”。
请网友们注意:该<PLSY>指令的第2源操作数“ K0 ”表达的是对输出脉冲没有数量的指定。既然没有指定它要输出多少个脉冲,哪来什么指标去衡量它执行的任务是否“完成”?又哪来什么“结束标志”的动作?!
在该例程中的<PLSY>指令在程序运行过程中根本就不可能让M8029动作。如果在转移条件上加一个M8029,意图去触发下一步,则STL程序的“转移链”必定被这个加进来的M8029给切断!整个STL程序将死在<PLSY指令>所在的一个STL片断上,不可能让“工序”继续往下传递。
我用这个“悬赏题”来讨论<PLSY> “隔轮有效”的问题是<luw816>网友在实践中遇到的问题。
在他的求助贴《帮忙找下问题》主题帖中提出的问题原本是这样的:
请大家帮忙看一下以下这段程序中的问题啊,不合理的地方帮忙找出来,告诉小弟!不胜感激!!!
0 ld x000
1 or y05
2 Ani X1
3 OUT Y5
4 LD M8002
5 SET S0
7 STL S0
8 LD Y5
9 SET S20
11 STL S20
12 RST Y2
13 RST Y3
14 RST Y4
15 LD X3
16 AND X5
17 AND X7
18 SET S21
20 STL S21
21 OUT T0 K10
24 MPS
25 AND TO
26 RST Y1
27 MRD
28 ANI X11
29 AND Y5
30 PLSY K100 K0 Y0
37 MPP
38 ANI Y01
39 ANDP X11
41 MPS
42 ANI X12
43 SET S22
45 MPP
46 AND X12
47 SET S24
49 STL S22
50 OUT Y7
51 OUT T1 K10
54 LD T1
55 SET S23
57 STL S23
58 OUT T2 K1O
61 SET Y2
62 SET Y3
63 SET Y4
64 SET Y1
65 LD T2
66 OUT S0
68 STL S24
69 OUT Y7
70 OUT T3 K10
73 LD T3
74 SET S25
76 STL S25
77 SET Y2
78 SET Y3
79 SET Y4
80 OUT T4 K3
83 LD T4
84 SET S26
86 STL S26
87 OUT T5 K20
90 RST Y2
91 RST Y3
92 RST Y4
93 LD X10
94 AND X13
95 SET Y1
96 AND T5
97 AND Y5
98 OUT S21
100 RET
101 END
我把他遇到的这个实际问题抽象出来,让问题的主要内容凸显出来,使问题更具有代表性。把非主流的枝节去掉以便大家把讨论的注意力集中到问题的核心上。
尽管这样,有的人也要偏离问题的实质,去扯什么“逻辑信号寻址”、“软件一周,硬件一周”……
为了使讨论不偏离方向,我还给大家提示:这个“隔轮有效”问题的原理蕴涵在《FX1s、FX1n、FX2n、FX2NC编程手册》的第4章-《步进梯形图指令说明》及第6章-《应用指令说明》之“脉冲输出注意事项”(编程手册第229页)中。 只要认真的领会这两章的相关内容,要正确的回答这个<PLSY>指令在两种PLC上有无“隔轮有效”问题的“差异”的“原理”是完全没有困难的!但是接下来的回复帖子仍然没有从我提示的两个方面的内容去寻找线索。
№52楼的回答用了一个很宽泛解释“是PLC内核编译程序不同所致”,如果仅仅用这一句来解释那还真不能说这个回答说错了,FX1s(或FX1n)系列与FX2n系列PLC的“内核编译程序”确实对<PLSY>指令的“运算处理”是有些“不同”的!但是,紧接在这一句宽泛解释后面用“定时器精度”及“动作时序”来对“隔轮有效”问题进行稍具体一些的解释,这就彻底的显现出№52楼的回答偏离了正确方向!
<938>的“支持编译不同会造成差异”,我认为<938>的这个“支持”肯定是冲“定时器时序差异”来的,而不是冲着<PLSY>指令在两种PLC上有无“隔轮有效”问题的“差异”来的!因为我相信以<938>网友的知识水平还不至于看不懂我的提示:“隔轮有效”问题是FX1s(或FX1n)上<PLSY>的“再启动”必须在<PLSY>的“OFF运算”之后才会“有效”!以及STL程序在“关断”期间不进行“扫描运算”的特点共同来决定的!