这是一段选自2000年版s7-200可编程控制器系统手册的一段例程,例程为模拟量处理:
SBR 1
LDB= SMB8, 16#19
NOT
S Q1.0, 1
LDB= SMB9, 16#00
NOT
AB= SMB9, 16#04
S Q1.1 1
RET
以上子程序按书中所说,为检查模拟量处理扩展模块是否存在及电源是否存在故障,问题如下:
1. 在特殊寄存器中,表示模块是否存在是它的第8位,即smb8的m位,0表示存在,1表示不存在,那么比较指令应该是判断m位是否等于0,可为什么是16进制数的19那。同样,smb9判断的是第1位和第2位即t位和f位,是否为0或1,可为什么是16进制数的00和04。
2. 在这段程序里不应该有RET指令,因为这个指令都是有条件返回指令,可这段程序是无条件返回,程序会自动执行的。而且如果把这段程序用软件写下来,在编译时这条语句会发生错误。
3. smb9判断的第1位和第2位即t位和f位,出现错误时都是1,可第1位加了取反指令,第2位也应该加呀,为什么未加,另外,两种错误信号,应该是或的关系呀。
因为是西门子的官方手册,请各位朋友帮忙判断一下,是我错了,还是手册错啦!