西門子s7-300L P#P 515.0 什么意思
發布時間:2019-08-01 10:49:37來源:
西門子s7-300L P#P 515.0 什么意思
網上有人給出了一條S7-300“看不懂”的指令“L P#P 515.0”。這條指令與區域之間的寄存器間接尋址有關。S7-300/400有兩個地址寄存器AR1和AR2,操作數的地址等于地址寄存器中的地址值加上地址偏移量。下面是寄存器間接尋址的32位指針格式:
x000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx
其中第0~2位(xxx,比較低位為第0位)為被尋址地址中位的編號(0~7),第3~18位(16個b)為被尋址地址的字節的編號。第24~26位(rrr)為被尋址地址的區域標識號。
指針的比較高位x 為0時,為區域內的間接尋址,比較高位x 為1時,為區域間(交叉區域)間接尋址。
將下面的程序下載到仿真PLC,運行時監控累加器1(STANDARD)的值(見下圖)。
L P#P 1.0 //16#8000 0008送累加器1
LAR1 //累加器1的內容送AR1
L MW [AR1,P#2.0] //MW3的值送累加器1
MW [AR1, P#2.0]的地址為AR1中的P#1.0加偏移量P#2.0,MW [AR1, P#2.0]即MW3。
由第1條指令的執行結果16#8000 0008可知(見下圖),P#P1.0的比較高位為1,表示這是區域間(交叉區域)間接尋址。第24~26位(rrr)為2#000,由西門子的資料《S7-300和S7-400尋址》可知,區域標識號2#000表示地址指針不包含地址區。仿真時用PLCSIM設置MW3的值為16#1234,第3條指令的監控結果驗證了上述分析的正確性。 將上述程序的第1條指令改為“L P#1.0”,程序運行結果相同。指針值P#1.0的比較高位為0。