配置了一套S7-400H冗余系统,下面挂了两个一模一样ET200M站,准备用作IO冗余.
在做IO冗余实验之前,已经证实CPU冗余功能正常.
按照"S7-400容错系统手册"的教程,在硬件里设置好IO冗余,并在各相关OB块里插入初始化、诊断和读输入输出模块,并断掉PLC的电源。先启动主PLC(Rack 0),一切正常(还没有测试io冗余),然后启动从PLC,发现主PLC在建立冗余连接(REDF灯亮了一下)后Stop,从PLC也没有启动起来。再次启动任意一个PLC,都能正常启动。也即是,只要不建立冗余连接,就能正常启动。
后来,发现是OB72(CPU冗余故障块)里面调用的FB452(RED-DIAG)功能块调用有问题,只要屏蔽该功能块,CPU的冗余切换功能就很正常。于是,拿掉该功能块,继续做IO冗余,做DO冗余测试时,一切正常,做AO测试时,正常情况下两个模块输出期望电流的一半值,但是在我断掉一块模块的外接电源时,电流输出还是保持原样,没有恢复到期望电流值。
我不知道为什么OB72里面调用FB452会导致CPU冗余切换出现问题,也不知道AO冗余输出出现问题与我拿掉OB72里面的FB452是否有关。
另,AIAO模块的地址我全配置在CPU的过程映像区范围内,程序中使用的是IW、QW而不是PIW和PQW,不知道这个有没有错?