淄博西門子代理商
4.1.1 執(zhí)行用戶程序
在掃描周期的執(zhí)行階段,CPU
執(zhí)行主程序,從*條指令開始并繼續(xù)執(zhí)行到后一個指令。
在主程序或中斷例程的執(zhí)行過程中,使用立即 I/O 指令可立即訪問輸入和輸出。
如果在程序中使用子例程,則子例程作為程序的一部分進行存儲。主程序、另一個子例程或中斷例程調(diào)用子例程時,執(zhí)行子例程。
從主程序調(diào)用時子例程的嵌套深度是 8 級,從中斷例程調(diào)用時嵌套深度是 4 級。
如果在程序中使用中斷,則與中斷事件相關的中斷例程將作為程序的一部分進行存儲。 在正常掃描周期中并不一定執(zhí)行中斷例程,而是當發(fā)生中斷事件時才執(zhí)行中斷例程(可以是掃描周期內(nèi)的任何時間)。
為 14 個實體中的每一個保留局部存儲器:
主程序、八個子例程嵌套級別(從主程序啟動時)、一個中斷例程和四個子例程嵌套級別(從中斷程序啟動時)。
局部存儲器有一個局部范圍,局部存儲器僅在相關程序實體內(nèi)可用,其它程序實體無法訪問。 有關局部存儲器的詳細信息,請參見本章中的局部存儲區(qū): L。
下圖描述了一個典型的掃描流程,該流程包括局部存儲器使用和兩個中斷事件(一個事件發(fā)生在程序執(zhí)行階段,另一個事件發(fā)生在掃描周期的通信階段)。
子例程由下一個較高級別調(diào)用,并在調(diào)用時執(zhí)行。
沒有調(diào)用中斷例程;發(fā)生相關中斷事件時才調(diào)用中斷例程。
圖 4-1 典型掃描流程
4.1 訪問數(shù)據(jù)
CPU 將信息存儲在不同存儲單元,每個位置均具有的地址??梢燥@式標識要訪問的存儲器地址。 這樣程序將直接訪問該信息。
要訪問存儲區(qū)中的位,必須地址,該地址包括存儲器標識符、字節(jié)地址和位號(也稱為“字節(jié).位"尋址)。
表格 4- 2 位尋址
位地址元素 | 說明 |
| A | 存儲區(qū)標識符 |
B | 字節(jié)地址: 字節(jié) 3 |
C | 分隔符(“字節(jié).位") |
D | 位在字節(jié)中的位置(位 4,共 8 位,編號 7 到 0 的位) |
E | 存儲區(qū)的字節(jié) |
F | 選定字節(jié)的位 |
在此示例中,存儲區(qū)和字節(jié)地址(“M3")代表 M 存儲器的第 3個字節(jié),用句點(“.")與位地址(位 4)分開。
使用“字節(jié)地址"格式可按字節(jié)、字或雙字訪問多數(shù)存儲區(qū)(V、I、Q、M、S、L 和SM)中的數(shù)據(jù)。
要按字節(jié)、字或雙字訪問存儲器中的數(shù)據(jù),必須采用類似于位地址的方法地址。這包括區(qū)域標識符、數(shù)據(jù)大小標識和字節(jié)、字或雙字值的起始字節(jié)地址,如下圖所示。
下表給出了不同數(shù)據(jù)長度可表示的整數(shù)值范圍
淄博西門子代理商
表格 4- 3 不同數(shù)據(jù)長度表示的十進制和十六進制數(shù)范圍
表示方式 | 字節(jié) (B) | 字 (W) | 雙字 (D) |
無符號整數(shù) | 0 到 255 16#00 到 16#FF | 0 到 65,535 16#0000 到 16#FFFF | 0 到 4,294,967,295 16#00000000 到 16#FFFFFFFF |
有符號整數(shù) | -128 到 +127 | -32,768 到 +32,767 | -2,147,483,648 到 +2,147,483,647 |
| 16#80 到 16#7F | 16#8000 到 16#7FFF | 16#8000 0000 到 16#7FFF FFFF |
實數(shù)(IEEE | 不適用 | 不適用 | +1.175495E-38 到 |
32 |
|
| +3.402823E+38(正數(shù)) |
位浮點數(shù)) |
|
| -1.175495E-38 到 -3.402823E+38(負數(shù)) |
使用包括區(qū)域標識符和設備編號的地址格式來訪問其它 CPU 存儲區(qū)(如 T、C、HC和累加器)中的數(shù)據(jù)。
4.1.1 訪問存儲區(qū)
I(過程映像輸入)
CPU
在每次掃描周期開始時對物理輸入點采樣,然后將采樣值寫入過程映像輸入寄存器。用戶可以按位、字節(jié)、字或雙字來訪問過程映像輸入寄存器:
表格 4- 4 I 存儲器的尋址
位: | I[字節(jié)地址].[位地址] | I0.1 |
字節(jié)、字或雙字: | I[大小][起始字節(jié)地址] | IB4、 IW7、 ID20 |
Q(過程映像輸出)
掃描周期結束時,CPU
將存儲在過程映像輸出寄存器的值復制到物理輸出點。用戶可以按位、字節(jié)、字或雙字來訪問過程映像輸出寄存器:
表格 4- 5 Q 存儲器的尋址
位: | Q[字節(jié)地址].[位地址] | Q1.1 |
字節(jié)、字或雙字: | Q[大小][起始字節(jié)地址] | QB5、QW 14、QD28 |
V(變量存儲器)
可以使用 V 存儲器存儲程序執(zhí)行程序中控制邏輯操作的中間結果。 也可以使用 V
存儲器存儲與過程或任務相關的其它數(shù)據(jù)。 可以按位、字節(jié)、字或雙字訪問 V 存儲器:
表格 4- 6 V 存儲器的尋址
位: | V[字節(jié)地址].[位地址] | V10.2 |
字節(jié)、字或雙字: | V[大小][起始字節(jié)地址] | VB16、 VW100、 VD2136 |
M(標志存儲器)
可以將標志存儲區(qū)(M
存儲器)用作內(nèi)部控制繼電器來存儲操作的中間狀態(tài)或其它控制信息??梢园次?、字節(jié)、字或雙字訪問標志存儲區(qū):
表格 4- 7 M 存儲器的尋址
位: | M[字節(jié)地址].[位地址] | M26.7 |
字節(jié)、字或雙字: | M[大小][起始字節(jié)地址] | MB0、MW 11、MD20 |
T(定時器存儲器)
CPU 提供的定時器能夠以 1 ms、10 ms 或 100 ms
的精度(時基增量)累計時間。定時器有兩個變量:
可以使用定時器地址(T + 定時器編號)訪問這兩個變量。訪問定時器位還是當前值取決于所使用的指令:
帶位操作數(shù)的指令會訪問定時器位,而帶字操作數(shù)的指令則訪問當前值。
如下圖所示,“常開觸點"指令訪問的是定時器位,而“移動字"指令訪問的是定時器的當前值。
表格 4- 8 T 存儲器的尋址
C(計數(shù)器存儲器)
CPU 提供三種類型的計數(shù)器,對計數(shù)器輸入上的每一個由低到高的跳變事件進行計數(shù): 一種類型僅向上計數(shù),一種僅向下計數(shù),還有一種可向上和向下計數(shù)。
有兩個與計數(shù)器相關的變量:
可以使用計數(shù)器地址(C + 計數(shù)器編號)訪問這兩個變量。訪問計數(shù)器位還是當前值取決于所使用的指令:
帶位操作數(shù)的指令會訪問計數(shù)器位,而帶字操作數(shù)的指令則訪問當前值。
如下圖所示,“常開觸點"指令訪問的是計數(shù)器位,而“移動字"指令訪問的是計數(shù)器的當前值。
表格 4- 9 C 存儲器的尋址
圖 4-3 訪問計數(shù)器位或計數(shù)器的當前值
HC(高速計數(shù)器)
高速計數(shù)器獨立于 CPU 的掃描周期對高速事件進行計數(shù)。 高速計數(shù)器有一個有符號 32 位整數(shù)計數(shù)值(或當前值)。 要訪問高速計數(shù)器的計數(shù)值,您需要利用存儲器類型 (HC)和計數(shù)器編號高速計數(shù)器的地址。
高速計數(shù)器的當前值是只讀值,僅可作為雙字(32 位)來尋址。
表格 4- 10 HC 存儲器的尋址
高速計數(shù)器 | HC[高速計數(shù)器編號] | HC1 |
AC(累加器)
累加器是可以像存儲器一樣使用的讀/寫器件。
例如,可以使用累加器向子例程傳遞參數(shù)或從子例程返回參數(shù),并可存儲計算中使用的中間值。 CPU 提供了四個 32 位累加器(AC0、AC1、AC2 和 AC3)。
可以按位、字節(jié)、字或雙字訪問累加器中的數(shù)據(jù)。
被訪問的數(shù)據(jù)大小取決于訪問累加器時所使用的指令。
如下圖所示,當以字節(jié)或字的形式訪問累加器時,使用的是數(shù)值的低 8 位或低 16 位。
當以雙字的形式訪問累加器時,使用全部 32 位。
表格 4- 11 AC 存儲器的尋址
圖 4-4 訪問累加器
SM(特殊存儲器)
SM 位提供了在 CPU 和用戶程序之間傳遞信息的一種方法??梢允褂眠@些位來選擇和控制 CPU 的某些特殊功能,例如:
在*個掃描周期接通的位、以固定速率切換的位或顯示數(shù)學或運算指令狀態(tài)的位??梢园次弧⒆止?jié)、字或雙字訪問 SM 位:
表格 4- 12 SM 存儲器的尋址