我在编程的过程中,也觉得很多程序用M是有优势的
“ddkk4477 ”网友只简单的说“用M是有优势的” ,但就是举不出事实依据来!
事实上,有些情况下不用M还能使程序比较简练!在这种情况下,应当说“不用M才是有优势的”!其优势就在于:当没有必要用M的时候,不去笨拙的、生硬的加进一些M,从而使程序写得简练!
下面就摘引几个帖子内容来对比说明,在没有必要使用M时,不用M所显出的优势:
“laolan”先生提出“理论”:“在高强电火化和电场所使用可能会出现误操作。……如果加上一个辅助继电器利用其扫描一个周期的时间和共模作用。相信效果会好点。”
可能是在这个“理论”的影响下“mast”网友也用一个“辅助继电器(M0)”来作“ALT命令”的“操作数”。希望以此能“可靠”地满足[摁一下按钮,“输出位(Y0)”只改变一次状态]。其向我们展示的程序是:
LD X00
ALT M0
LD M0
OUT Y00
END
但是,“mast”的这个程序也不会因为使用了“辅助继电器(M0)”,而使得程序运行的结果能够“可靠”地满足[摁一下按钮,“输出位(Y0)”只改变一次状态]这一“目的”要求。
这是为什么呢?,这是因为“mast”网友用错了“交替命令”的执行型式!这与PLC“硬件”的“共模抑制”概念扯不上关系!“ALT”命令是“连续执行型”命令,在“执行条件”为“ON”的期间内,程序的每一扫描周期都会执行一次“ALT”命令。 当我们操作“X00”时,我们根本不可能保证把摁下按钮的时值正好控制在程序的“一个扫描周期”内,也不可能刚好控制成“(2n+1)个周期”。所以,当我们放开按钮时,无法保证“操作数(M0)”翻转的次数刚好是“奇数”!故,这个程序不能保证实现操作者的愿望。并且在操作者摁下按钮使“执行条件”为“ON”的期间内“输出位(Y0)”会发生“高速振动”,这就是我们所不希望出现的现象。
如果“mast”网友改用“脉冲型执行型”的交替命令“ALTP”,则,不用“辅助继电器(M0)”作交替命令的“操作数”而改用“输出继电器(Y0)”直接替换之,也能“非常可靠”地保证实现[摁一下按钮,“输出位(Y0)”只改变一次状态]这一“目的”的愿望。这是因为由PLC软件定义的“ALTP”命令的“执行方式”是:只在“执行条件”从“OFF”跳变到“ON”这一“前沿”执行。即:在“执行条件”为“ON”的期间内,交替命令仅只“执行一次”!至于“交替命令”的“执行”的“可靠性”,则完全与该命令的操作对象是否为“辅助继电器(M)”无关,而只与PLC实体的“制造技术”相关!
“laolan”先生还提到“电场和其他干扰源都是us级的”。 但是,事实上PLC对于“微秒”级的“输入信号”一般是不会做出反应的。这是为了防止输入接点抖动或输入线混入“噪音”PLC硬件的输入回路中设置有RC滤波网络 ,FX系列PLC的“X00”至“X07”中内置有“数字滤波器”,可通过“特殊数据寄存器(D8020)”设置“输入响应”时间。怎么可能象“laolan”先生预言的那样出现“高次周波振铃现象”?即使“干扰信号”能够作用于PLC对程序命令的“执行”,也不能说明“ALTP”的“目标元件”使用“辅助继电器”就比使用“输出继电器”要“可靠点”。“输出继电器”除了有“实体的元件”可作为PLC的“对外接口电路”之外,它在程序中的角色也是一个“虚拟元件”,它和“辅助继电器”一样也是PLC内存中的一个“bit”。所以,PLC在执行“ALTP M0”与“ALTP Y0”这两条命令的“可靠性”上是不分优劣的!