淄博西門子代理商
4.1.1 執(zhí)行用戶程序
在掃描周期的執(zhí)行階段,CPU
執(zhí)行主程序,從*條指令開始并繼續(xù)執(zhí)行到后一個(gè)指令。
在主程序或中斷例程的執(zhí)行過程中,使用立即 I/O 指令可立即訪問輸入和輸出。
如果在程序中使用子例程,則子例程作為程序的一部分進(jìn)行存儲(chǔ)。主程序、另一個(gè)子例程或中斷例程調(diào)用子例程時(shí),執(zhí)行子例程。
從主程序調(diào)用時(shí)子例程的嵌套深度是 8 級,從中斷例程調(diào)用時(shí)嵌套深度是 4 級。
如果在程序中使用中斷,則與中斷事件相關(guān)的中斷例程將作為程序的一部分進(jìn)行存儲(chǔ)。 在正常掃描周期中并不一定執(zhí)行中斷例程,而是當(dāng)發(fā)生中斷事件時(shí)才執(zhí)行中斷例程(可以是掃描周期內(nèi)的任何時(shí)間)。
為 14 個(gè)實(shí)體中的每一個(gè)保留局部存儲(chǔ)器:
主程序、八個(gè)子例程嵌套級別(從主程序啟動(dòng)時(shí))、一個(gè)中斷例程和四個(gè)子例程嵌套級別(從中斷程序啟動(dòng)時(shí))。
局部存儲(chǔ)器有一個(gè)局部范圍,局部存儲(chǔ)器僅在相關(guān)程序?qū)嶓w內(nèi)可用,其它程序?qū)嶓w無法訪問。 有關(guān)局部存儲(chǔ)器的詳細(xì)信息,請參見本章中的局部存儲(chǔ)區(qū): L。
下圖描述了一個(gè)典型的掃描流程,該流程包括局部存儲(chǔ)器使用和兩個(gè)中斷事件(一個(gè)事件發(fā)生在程序執(zhí)行階段,另一個(gè)事件發(fā)生在掃描周期的通信階段)。
子例程由下一個(gè)較高級別調(diào)用,并在調(diào)用時(shí)執(zhí)行。
沒有調(diào)用中斷例程;發(fā)生相關(guān)中斷事件時(shí)才調(diào)用中斷例程。

圖 4-1 典型掃描流程
4.1 訪問數(shù)據(jù)
CPU 將信息存儲(chǔ)在不同存儲(chǔ)單元,每個(gè)位置均具有的地址??梢燥@式標(biāo)識要訪問的存儲(chǔ)器地址。 這樣程序?qū)⒅苯釉L問該信息。
要訪問存儲(chǔ)區(qū)中的位,必須地址,該地址包括存儲(chǔ)器標(biāo)識符、字節(jié)地址和位號(也稱為“字節(jié).位"尋址)。
表格 4- 2 位尋址
位地址元素 | 說明 |

| A | 存儲(chǔ)區(qū)標(biāo)識符 |
B | 字節(jié)地址: 字節(jié) 3 |
C | 分隔符(“字節(jié).位") |
D | 位在字節(jié)中的位置(位 4,共 8 位,編號 7 到 0 的位) |
E | 存儲(chǔ)區(qū)的字節(jié) |
F | 選定字節(jié)的位 |
在此示例中,存儲(chǔ)區(qū)和字節(jié)地址(“M3")代表 M 存儲(chǔ)器的第 3個(gè)字節(jié),用句點(diǎn)(“.")與位地址(位 4)分開。
使用“字節(jié)地址"格式可按字節(jié)、字或雙字訪問多數(shù)存儲(chǔ)區(qū)(V、I、Q、M、S、L 和SM)中的數(shù)據(jù)。
要按字節(jié)、字或雙字訪問存儲(chǔ)器中的數(shù)據(jù),必須采用類似于位地址的方法地址。這包括區(qū)域標(biāo)識符、數(shù)據(jù)大小標(biāo)識和字節(jié)、字或雙字值的起始字節(jié)地址,如下圖所示。

下表給出了不同數(shù)據(jù)長度可表示的整數(shù)值范圍
淄博西門子代理商
表格 4- 3 不同數(shù)據(jù)長度表示的十進(jìn)制和十六進(jìn)制數(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í)數(shù)(IEEE | 不適用 | 不適用 | +1.175495E-38 到 |
32 |
|
| +3.402823E+38(正數(shù)) |
位浮點(diǎn)數(shù)) |
|
| -1.175495E-38 到 -3.402823E+38(負(fù)數(shù)) |
使用包括區(qū)域標(biāo)識符和設(shè)備編號的地址格式來訪問其它 CPU 存儲(chǔ)區(qū)(如 T、C、HC和累加器)中的數(shù)據(jù)。
4.1.1 訪問存儲(chǔ)區(qū)
I(過程映像輸入)
CPU
在每次掃描周期開始時(shí)對物理輸入點(diǎn)采樣,然后將采樣值寫入過程映像輸入寄存器。用戶可以按位、字節(jié)、字或雙字來訪問過程映像輸入寄存器:
表格 4- 4 I 存儲(chǔ)器的尋址
位: | I[字節(jié)地址].[位地址] | I0.1 |
字節(jié)、字或雙字: | I[大小][起始字節(jié)地址] | IB4、 IW7、 ID20 |
Q(過程映像輸出)
掃描周期結(jié)束時(shí),CPU
將存儲(chǔ)在過程映像輸出寄存器的值復(fù)制到物理輸出點(diǎn)。用戶可以按位、字節(jié)、字或雙字來訪問過程映像輸出寄存器:
表格 4- 5 Q 存儲(chǔ)器的尋址
位: | Q[字節(jié)地址].[位地址] | Q1.1 |
字節(jié)、字或雙字: | Q[大小][起始字節(jié)地址] | QB5、QW 14、QD28 |
V(變量存儲(chǔ)器)
可以使用 V 存儲(chǔ)器存儲(chǔ)程序執(zhí)行程序中控制邏輯操作的中間結(jié)果。 也可以使用 V
存儲(chǔ)器存儲(chǔ)與過程或任務(wù)相關(guān)的其它數(shù)據(jù)。 可以按位、字節(jié)、字或雙字訪問 V 存儲(chǔ)器:
表格 4- 6 V 存儲(chǔ)器的尋址
位: | V[字節(jié)地址].[位地址] | V10.2 |
字節(jié)、字或雙字: | V[大小][起始字節(jié)地址] | VB16、 VW100、 VD2136 |
M(標(biāo)志存儲(chǔ)器)
可以將標(biāo)志存儲(chǔ)區(qū)(M
存儲(chǔ)器)用作內(nèi)部控制繼電器來存儲(chǔ)操作的中間狀態(tài)或其它控制信息??梢园次?、字節(jié)、字或雙字訪問標(biāo)志存儲(chǔ)區(qū):
表格 4- 7 M 存儲(chǔ)器的尋址
位: | M[字節(jié)地址].[位地址] | M26.7 |
字節(jié)、字或雙字: | M[大小][起始字節(jié)地址] | MB0、MW 11、MD20 |
T(定時(shí)器存儲(chǔ)器)
CPU 提供的定時(shí)器能夠以 1 ms、10 ms 或 100 ms
的精度(時(shí)基增量)累計(jì)時(shí)間。定時(shí)器有兩個(gè)變量:
可以使用定時(shí)器地址(T + 定時(shí)器編號)訪問這兩個(gè)變量。訪問定時(shí)器位還是當(dāng)前值取決于所使用的指令:
帶位操作數(shù)的指令會(huì)訪問定時(shí)器位,而帶字操作數(shù)的指令則訪問當(dāng)前值。
如下圖所示,“常開觸點(diǎn)"指令訪問的是定時(shí)器位,而“移動(dòng)字"指令訪問的是定時(shí)器的當(dāng)前值。
定時(shí)器: | T[定時(shí)器編號] | T24 |

表格 4- 8 T 存儲(chǔ)器的尋址
C(計(jì)數(shù)器存儲(chǔ)器)
CPU 提供三種類型的計(jì)數(shù)器,對計(jì)數(shù)器輸入上的每一個(gè)由低到高的跳變事件進(jìn)行計(jì)數(shù): 一種類型僅向上計(jì)數(shù),一種僅向下計(jì)數(shù),還有一種可向上和向下計(jì)數(shù)。
有兩個(gè)與計(jì)數(shù)器相關(guān)的變量:
可以使用計(jì)數(shù)器地址(C + 計(jì)數(shù)器編號)訪問這兩個(gè)變量。訪問計(jì)數(shù)器位還是當(dāng)前值取決于所使用的指令:
帶位操作數(shù)的指令會(huì)訪問計(jì)數(shù)器位,而帶字操作數(shù)的指令則訪問當(dāng)前值。
如下圖所示,“常開觸點(diǎn)"指令訪問的是計(jì)數(shù)器位,而“移動(dòng)字"指令訪問的是計(jì)數(shù)器的當(dāng)前值。
計(jì)數(shù)器 | C[計(jì)數(shù)器編號] | C24 |
表格 4- 9 C 存儲(chǔ)器的尋址

圖 4-3 訪問計(jì)數(shù)器位或計(jì)數(shù)器的當(dāng)前值
HC(高速計(jì)數(shù)器)
高速計(jì)數(shù)器獨(dú)立于 CPU 的掃描周期對高速事件進(jìn)行計(jì)數(shù)。 高速計(jì)數(shù)器有一個(gè)有符號 32 位整數(shù)計(jì)數(shù)值(或當(dāng)前值)。 要訪問高速計(jì)數(shù)器的計(jì)數(shù)值,您需要利用存儲(chǔ)器類型 (HC)和計(jì)數(shù)器編號高速計(jì)數(shù)器的地址。
高速計(jì)數(shù)器的當(dāng)前值是只讀值,僅可作為雙字(32 位)來尋址。
表格 4- 10 HC 存儲(chǔ)器的尋址
高速計(jì)數(shù)器 | HC[高速計(jì)數(shù)器編號] | HC1 |
AC(累加器)
累加器是可以像存儲(chǔ)器一樣使用的讀/寫器件。
例如,可以使用累加器向子例程傳遞參數(shù)或從子例程返回參數(shù),并可存儲(chǔ)計(jì)算中使用的中間值。 CPU 提供了四個(gè) 32 位累加器(AC0、AC1、AC2 和 AC3)。
可以按位、字節(jié)、字或雙字訪問累加器中的數(shù)據(jù)。
被訪問的數(shù)據(jù)大小取決于訪問累加器時(shí)所使用的指令。
如下圖所示,當(dāng)以字節(jié)或字的形式訪問累加器時(shí),使用的是數(shù)值的低 8 位或低 16 位。
當(dāng)以雙字的形式訪問累加器時(shí),使用全部 32 位。
表格 4- 11 AC 存儲(chǔ)器的尋址

圖 4-4 訪問累加器
SM(特殊存儲(chǔ)器)
SM 位提供了在 CPU 和用戶程序之間傳遞信息的一種方法??梢允褂眠@些位來選擇和控制 CPU 的某些特殊功能,例如:
在*個(gè)掃描周期接通的位、以固定速率切換的位或顯示數(shù)學(xué)或運(yùn)算指令狀態(tài)的位??梢园次弧⒆止?jié)、字或雙字訪問 SM 位:
表格 4- 12 SM 存儲(chǔ)器的尋址