有一个特别需要注意的问题:FC的调用条件变为0后,FC中的M、Q会保持原状态。

下面的程序非常简单,看似正确,但存在着安全隐患。

程序原目的:

  • 在OB1中当M0.0为1的时候,调用FC13
  • 在OB1中当M0.0为0的时候,不调用FC13
  • FC13中包含简单逻辑及定时器应用

图1 普通FC程序内容结构

故障现象:

假设某一时刻,M0.0、M0.1、M2.0都为1,并且维持数值1的时间超过了10秒(T0)的设定时间,那 么M2.1与Q0.0也都会变为1。

假设此时M0.0变为0,FC13不再被调用,结果如图:

图 2 普通FC程序执行结果

对于初学者来说,容易忽视的问题为:M0.0变为0后,FC13中的Q、M会保持原来的状态,T、C会继续工作,如果M0.0再次变为1,并且此时M2.0也为1,由于定时器保持着计时到达的状态,M2.1会即刻变为1,这种情况会导致某些在FC被调用后必须延时执行的逻辑立刻执行。在实际应用中,如此逻辑为某一设备的启动信号,那么这个设备会跳过延时或保护逻辑而马上运行!

为避免异常的出现,应使用下面的程序来复位:

图 3

results matching ""

    No results matching ""