各位老师:
你们好!
关于S7-400PLC指令执行时间,有几个问题请教大家。
我在使用FOR双重循环时,第一重循环和第二重循环分别使用立即数寻址和间接寻址,指令执行时间有些奇怪,请大家帮忙看看是什么原因呢。谢谢!
测试程序段:
FOR I:=1 TO 10000 BY 1 DO
FOR J:=1 TO 500 BY 1 DO
;
END_FOR;
END_FOR;
说明:测试用的CPU为 CPU 417-H,使用PC Adapter,利用串口MPI协议通信。
WORD_TO_INT(DB1.DBW0)=10000,WORD_TO_INT(DB1.DBW2)=500;
DB1.M=10000,DB1.N=500。
(1)将10000改为WORD_TO_INT(DB1.DBW0),500改为WORD_TO_INT(DB1.DBW2),指令执行时间(从模块信息——扫描循环时间测出)为什么不变,测试出的时间为1287ms?
(2)将10000改为DB1.M(INT),500改为DB1.N(INT),指令执行时间增大(1287——>1317),但是仅将10000改为DB1.M(INT),指令执行时间减小(1287——>1194);仅将500改为DB1.N(INT),指令执行时间增大(1287——>1409)?为什么?
(3)为什么使用DB1.M(INT)格式的寻址,比用WORD_TO_INT(DB1.DBW0)格式的寻址,指令执行速度更慢呢?(前者变量是INT格式,后者是WORD转成INT格式)
(4)使用10000和500的时候,指令执行时间为1287ms,将500改为WORD_TO_INT(DB1.DBW2),指令执行时间减小(1287——>1194)?为什么?
(5)当I,J定义为DINT格式时,使用10000和500,指令执行时间比I,J定义为INT格式时小;而使用DB1.M和500时,指令执行时间比I,J定义为INT格式时大,为什么?
(6)使用FOR循环的时候,I/J是每执行一次指令都要和10000/500进行比较吗?