作为工控技术人员,我们都知道编程是一件非常严谨的事情,思维要缜密,逻辑性要强。而严谨的逻辑更是程序正确性的基本保证。 分享本人亲历的一个案例: 棒材启停式飞剪系统采用FM350高速计数模块产生飞剪剪切指令控制飞剪输出剪切动作,指令时序为: 1、先执行计数值软件清零; 3、再将比较值写入FM350比较值缓存BD1.DBD18中; 3、最后执行比较器1的比较值写入指令,将BD1.DBD18中的值写入FM350内部的地址中。 以上时序在系统运行过程中,偶尔会发生“不剪切”的情况发生。 经过分析,认为这种情况的发生与plc控制器程序执行过程的特点有关,因为程序在循环执行的过程中,当有中断事件发生时,系统会中断当前执行的程序去处理优先级高的中断事件,返回时,现场实际工况已经发生变化,尽管这种变化很微小,但是对于时序控制要求比较高,响应时间要求高,速度变化快的飞剪系统来说,就容易发生异常情况。 因此,将原时序进行改进: 1、先将比较值写入FM350比较值缓存BD1.DBD18中; 2、再执行比较器1的比较值写入指令,将BD1.DBD18中的值写入FM350内部的地址中; 3、最后执行计数值软件清零。 来源:西门子工业技术论坛 |