同步错误是与执行用户程序有关的错误,程序中如果有不正确的地址区、错误的编号或错误的地址,都会出现同步错误,操作系统将调用同步错误OB。同步错误可分为编程错误和访问错误,编程错误指在程序中调用一个CPU中并不存在的块,访问错误指访问的一个模块有故障或访问不存在的模块。OB121用于处理编程错误,OB122用于处理模块访问错误。 同步错误OB的优先级与检测到出错误的块的优先级一致。因此,OB121和OB122可以访问中断发生时累加器和其他寄存器中的内容,用户程序可以用它们来处理错误。例如,出现对某个模拟量输入模块的访问错误时,可以在OB122中用SFC44定义一个替代值。 同步错误可以用SFC36“MASK-FLT”来屏蔽,以使某些同步错误不触发同步错误OB的调用,但是CPU在错误寄存器中会记录发生的被屏蔽的错误。用错误过滤器中的一位来表示某种同步错误是否被屏蔽。错误过滤器分为程序错误过滤器和访问错误过滤器,分别占一个双字。 表4-7中的变量PRGFLT_SET-MASK和ACCFLT-SET-MASK分别用来设置程序错误过滤器和访问错误过滤器,某位为1表示该位对应的错误被屏蔽。屏蔽后的错误过滤器可以用变量PRGFLT-MASKED和ACCFLT-MASKED读出。错误信息返回值RET-VAL为0时表示没有错误被屏蔽,为1时表示至少有一个错误被屏蔽。 调用SFC37“MDSK-FLT”并且在当前优先级被执行完后,将解除屏蔽的错误,并且消除当前优先级的事件状态寄存器中相应的位。 可以用SFC38“READ-ERR”读出已经发生的被屏蔽的错误。 |