quote:以下是引用coco321在2013-10-09 14:17:09的发言:quote:以下是引用老学童在2013-10-08 18:21:12的发言:
楼主,从提供的程序大致可以分析并得出以下信息:
1. 此程序用于判断并输出某项功能相应的几个报警信息;
2. 既然要输出报警信息,那么就要确定哪个故障首先发生,因为,往往一个故障发生后会引起一连串的连锁反应并导致其它故障提示,这样,使用者就分不清到底哪个是故障的元凶;
3. Network 1用于初始化,将所有与故障报警相关的变量复位,当然包括#M_DEF;
4. 而后面的Network 2,3,4用于针对各种故障条件分别进行判断,并用#M_DEF来控制报警输出,例如: 如果MESSAGE_21 = 1,则将#M_DEF也同时置位(S #M_DEF),这样其它受此故障牵连引起的后续报警就不允许再输出了。
5. 程序是意大利或西班牙人写的(哈哈...题外话),跟某种水阀控制有关!
结论:
#M_DEF是该功能块用于“互锁”几个报警信息输出的一个临时变量,并且
M表示Message(信息,提示或报警)
DEF表示DEFine (确定,下定义)
但愿我的推断符合你的程序逻辑!
十分感谢!!
还有2个问题:
1、问下,在network2\3\4中,可以看到:为什么要串入#M_DEF的常闭点,并且紧接着置位#M_DEF呢?
2、您提到的“例如: 如果MESSAGE_21 = 1,则将#M_DEF也同时置位(S #M_DEF),这样其它受此故障牵连引起的后续报警就不允许再输出了。” 为什么就吧允许再输出了,能举例子是如何实现的吗?我对这段程序还是不很理解。
3、确实,这段程序是法国人写的,我好奇你是怎么看出来的 呵呵。。真是牛人啊。。。。
楼主,
1. “为什么要串入#M_DEF的常闭点”就是“互锁”,例如: 在MESSAGE_21 = 1之前,能流可以通过前面的#M_DEF常闭点,当然此时其它报警前面的#M_DEF常闭点也是可以通过的,这样,当
A(
O "STP662"
O "STP663"
ON "TMST"
)
其中一个条件成立,就会输出报警“MESSAGE_21 ”,并且将#M_DEF置位(=1),这样所有其它报警条件后面的#M_DEF常闭点就断开了,因此,即使由于“MESSAGE_21 ”的连锁反应产生了其它报警条件成立,也都被#M_DEF“阻挡”而不能输出(因为此时#M_DEF常闭点已经断开了);
2. 与问题1相同;
3. 因为程序中有很多拉丁语的缩写:
EV = Electro Valvola (电磁阀)
ACQ = ACQua (水)
ALARME = ALARM (报警)等等
祝工作快乐!