{心中有空間,夢想就有可能}
德國制造: 現貨 聯 系 人: 黃勇《黃工》 24小時聯系手機: 13701633515
全新原裝: 參數
質量保證: 保修
價格優勢: 特價
我公司大量現貨供應,價格優勢,品質保證,德國原裝進口

| 定貨號 | 注釋 |
| 電源模塊 | |
| 6ES7 407-0DA02-0AA0 | 電源模塊(4A) |
| 6ES7 407-0KA02-0AA0 | 電源模塊(10A) |
| 6ES7 407-0KR02-0AA0 | 電源模塊(10A)冗余 |
| 6ES7 407-0RA02-0AA0 | 電源模塊(20A) |
| 6ES7 405-0DA02-0AA0 | 電源模塊(4A) |
| 6ES7 405-0KA02-0AA0 | 電源模塊(10A) |
| 6ES7 405-0RA01-0AA0 | 電源模塊(20A) |
| 6ES7 971-0BA00 | 備用電池 |
| CPU | |
| 6ES7 412-3HJ14-0AB0 | CPU 412-3H; 512KB程序內存/256KB數據內存 |
| 6ES7 414-4HM14-0AB0 | CPU 414-4H; 冗余熱備CPU 2.8 MB RAM |
| 6ES7 417-4HT14-0AB0 | CPU 417-4H; 冗余熱備CPU 30 MB RAM |
| 6ES7 400-0HR00-4AB0 | 412H 系統套件包括 2 個CPU、1個H型中央機架、2個電源、2個1M 存儲卡、4個同步模塊、2根同步電纜,以及4個備用電池(PS407 10A) |
| 6ES7 400-0HR50-4AB0 | 412H 系統套件包括 2 個CPU、1個H型中央機架、2個電源、2個1M 存儲卡、4個同步模塊、2根同步電纜,以及4個備用電池(PS405 10A) |
| 6ES7 412-1XJ05-0AB0 | CPU412-1,144KB程序內存/144KB數據內存 |
| 6ES7 412-2XJ05-0AB0 | CPU412-2,256KB程序內存/256KB數據內存 |
| 6ES7 414-2XK05-0AB0 | CPU414-2,512KB程序內存/512KB數據內存 |
| 6ES7 414-3XM05-0AB0 | CPU414-3,1.4M程序內存/1.4M數據內存 1個IF模板插槽 |
| 6ES7 414-3EM05-0AB0 | CPU414-3PN/DP 1.4M程序內存/1.4M數據內存 1個IF模板插槽 |
| 6ES7 416-2XN05-0AB0 | CPU416-2,2.8M程序內存/2.8M數據內存 |
| 6ES7 416-3XR05-0AB0 | CPU416-3,5.6M程序內存/5.6M數據內存 1個IF模板插槽 |
| 6ES7 416-3ER05-0AB0 | CPU416-3PN/DP 5.6M程序內存/5.6M數據內存 1個IF模板插槽 |
| 6ES7 416-2FN05-0AB0 | CPU416F-2,2.8M程序內存/2.8M數據內存 |
| 6ES7 416-3FR05-0AB0 | CPU416F-3PN/DP,5.6M程序內存/5.6M數據內存 |
| 6ES7 417-4XT05-0AB0 | CPU417-4,15M程序內存/15M數據內存 |
SINAMICS DC MASTER 裝置可以通過并聯來增加額定功率。必須滿足一下輔助條件:
在 CUD 上配備傳輸觸發脈沖以及建立更高等級通訊所需的硬件和插頭。
最多可以并聯 6 部設備。多部裝置并聯時,主裝置應該放置在中間,以便信號連接方便。主從裝置之間從總線到總線的最長并聯接口線長度:15 m。
同樣,每部SINAMICS DC MASTER 裝置需要獨立的換相電抗器(uK 最小 2 %),以便平均分配電流。電抗器公差差異決定的電流分配。對于無降級(電流下降)運行,推薦公差 5% 或更好。
只允許具有相同額定直流電流的裝置并聯。
裝置并聯時,允許的輸出電流為(維持輔助條件時):
Imax = n × IN(SINAMICS DC MASTER)
n = SINAMICS DC MASTER 裝置的數量
冗余運行(“(n+m)運行”模式)
SINAMICS DC MASTER 裝置還可以用在冗余配置中,作為特殊的并聯運行模式。在此運行模式下,如果一臺裝置故障(例如電源部分的保險燒斷),其他 SINAMICS DC MASTER 裝置可以維持運行。正確組態好和互聯好之后,電樞電路和勵磁電路都可以冗余運行。
當一個裝置故障時,其他SINAMICS DC MASTER 裝置還可以正常運行、持續工作不會中斷。在組態系統時,需要特別注意在冗余應用中,只須滿足 n 個裝置的額定功率(而不是 n+m 個裝置)。
在發生故障時,主裝置的功能會自動轉移。這樣一來,無論是主裝置的電源部分故障還是從裝置的電源部分故障,系統都會繼續運行。(可以根據要求提供冗余運行時的 MTBF 數據。)
對于 12 脈沖運行的情況,兩部 SINAMICS DC MASTER 轉換器提供 30 度偏移的電壓。該組態會降低諧波。每部 SINAMICS DC MASTER 傳輸總電流的一半。其中一部 SINAMICS DC MASTER 裝置使用閉環速度控制運行,另一部使用閉環電流控制運行。進行了點對點連接,用于從第一部 SINAMICS DC MASTER 向第二部傳輸電流設置值。
用于 12 脈沖運行的直流電路中需要平波電抗器。
計算平波電抗器
計算所需的自感
1. 0.2 × IdN (LD1) 時的電抗器電感
2. Idmax (LD2) 時的電抗器電感
LD1 = 0.296 × 10-3 × Vdi/(0.2 × IdN)
LD2 = 0.296 × 10-3 × Vdi/(0.33 × Idmax)
LD1 = 0.24 × 10-3 × Vdi/(0.2 × IdN)
LD2 = 0.24 × 10-3 × Vdi/(0.33 × Idmax)
L = 電感,[H]
IdN 直流電機的額定直流電流的一半
Idmax 直流電機的最大電流的一半
Vdi = 1.35 × VN
VN 額定電源電壓
詳解西門子間接尋址
【地址的概念】
完整的一條指令,應該包含指令符+操作數(當然不包括那些單指令,比如NOT等)。其中的操作數是指令要執行的目標,也就是指令要進行操作的地址。
我們知道,在PLC中劃有各種用途的存儲區,比如物理輸入輸出區P、映像輸入區I、映像輸出區Q、位存儲區M、定時器T、計數器C、數據區DB和L等,同時我們還知道,每個區域可以用位(BIT)、字節(BYTE)、字(WORD)、雙字(DWORD)來衡量,或者說來指定確切的大小。當然定時器T、計數器C不存在這種衡量體制,它們僅用位來衡量。由此我們可以得到,要描述一個地址,至少應該包含兩個要素:
1、存儲的區域
2、這個區域中具體的位置
比如:A Q2.0
其中的A是指令符,Q2.0是A的操作數,也就是地址。這個地址由兩部分組成:
Q:指的是映像輸出區
2.0:就是這個映像輸出區第二個字節的第0位。
由此,我們得出, 一個確切的地址組成應該是:
〖存儲區符〗〖存儲區尺寸符〗〖尺寸數值〗.〖位數值〗,例如:DBX200.0。
DB X 200 . 0
其中,我們又把〖存儲區符〗〖存儲區尺寸符〗這兩個部分合稱為:地址標識符。這樣,一個確切的地址組成,又可以寫成:
地址標識符 + 確切的數值單元
【間接尋址的概念】
尋址,就是指定指令要進行操作的地址。給定指令操作的地址方法,就是尋址方法。
在談間接尋址之前,我們簡單的了解一下直接尋址。所謂直接尋址,簡單的說,就是直接給出指令的確切操作數,象上面所說的,A Q2.0,就是直接尋址,對于A這個指令來說,Q2.0就是它要進行操作的地址。
這樣看來,間接尋址就是間接的給出指令的確切操作數。對,就是這個概念。
比如:A Q[MD100] ,A T[DBW100]。程序語句中用方刮號 [ ] 標明的內容,間接的指明了指令要進行的地址,這兩個語句中的MD100和DBW100稱為指針Pointer,它指向它們其中包含的數值,才是指令真正要執行的地址區域的確切位置。間接由此得名。
西門子的間接尋址方式計有兩大類型:存儲器間接尋址和寄存器間接尋址。
【存儲器間接尋址】
存儲器間接尋址的地址給定格式是:地址標識符+指針。指針所指示存儲單元中所包含的數值,就是地址的確切數值單元。
存儲器間接尋址具有兩個指針格式:單字和雙字。
單字指針是一個16bit的結構,從0-15bit,指示一個從0-65535的數值,這個數值就是被尋址的存儲區域的編號。
雙字指針是一個32bit的結構,從0-2bit,共三位,按照8進制指示被尋址的位編號,也就是0-7;而從3-18bit,共16位,指示一個從0-65535的數值,這個數值就是被尋址的字節編號。
指針可以存放在M、DI、DB和L區域中,也就是說,可以用這些區域的內容來做指針。
單字指針和雙字指針在使用上有很大區別。下面舉例說明:
L DW#16#35 //將32位16進制數35存入ACC1
T MD2 //這個值再存入MD2,這是個32位的位存儲區域
L +10 //將16位整數10存入ACC1,32位16進制數35自動移動到ACC2
T MW100 //這個值再存入MW100,這是個16位的位存儲區域
OPN DBW[MW100] //打開DBW10。這里的[MW100]就是個單字指針,存放指針的區域是M區,
MW100中的值10,就是指針間接指定的地址,它是個16位的值!
--------
L L#+10 //以32位形式,把10放入ACC1,此時,ACC2中的內容為:16位整數10
T MD104 //這個值再存入MD104,這是個32位的位存儲區域
A I[MD104] //對I1.2進行與邏輯操作!
=DIX[MD2] //賦值背景數據位DIX6.5!
--------
A DB[MW100].DBX[MD2] //讀入DB10.DBX6.5數據位狀態
=Q[MD2] //賦值給Q6.5
--------
A DB[MW100].DBX[MD2] //讀入DB10.DBX6.5數據位狀態
=Q[MW100] //錯誤!沒有Q10這個元件
---------------------------------------------------------------------------------------------------
從上面系列舉例我們至少看出來一點:
單字指針只應用在地址標識符是非位的情況下。的確,單字指針前面描述過,它確定的數值是0-65535,而對于byte.bit這種具體位結構來說,只能用雙字指針。這是它們的第一個區別,單字指針的另外一個限制就是,它只能對T、C、DB、FC和FB進行尋址,通俗地說,單字指針只可以用來指代這些存儲區域的編號。
相對于單字指針,雙字指針就沒有這樣的限制,它不僅可以對位地址進行尋址,還可以對BYTE、WORD、DWORD尋址,并且沒有區域的限制。不過,有得必有失,在對非位的區域進行尋址時,必須確保其0-2bit為全0!
總結一下:
單字指針的存儲器間接尋址只能用在地址標識符是非位的場合;雙字指針由于有位格式存在,所以對地址標識符沒有限制。也正是由于雙字指針是一個具有位的指針,因此,當對字節、字或者雙字存儲區地址進行尋址時,必須確保雙字指針的內容是8或者8的倍數。
現在,我們來分析一下上述例子中的A I[MD104] 為什么最后是對I1.2進行與邏輯操作。
通過L L#+10 ,我們知道存放在MD104中的值應該是:
MD104:0000 0000 0000 0000 0000 0000 0000 1010
當作為雙字指針時,就應該按照3-18bit指定byte,0-2bit指定bit來確定最終指令要操作的地址,因此:
0000 0000 0000 0000 0000 0000 0000 1010 = 1.2
詳解西門子間接尋址<2>
【地址寄存器間接尋址】
在先前所說的存儲器間接尋址中,間接指針用M、DB、DI和L直接指定,就是說,指針指向的存儲區內容就是指令要執行的確切地址數值單元。但在寄存器間接尋址中,指令要執行的確切地址數值單元,并非寄存器指向的存儲區內容,也就是說,寄存器本身也是間接的指向真正的地址數值單元。從寄存器到得出真正的地址數值單元,西門子提供了兩種途徑:
1、區域內寄存器間接尋址
2、區域間寄存器間接尋址
地址寄存器間接尋址的一般格式是:
〖地址標識符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或 M[AR1,P#0.0] 。
〖寄存器,P#byte.bit〗統稱為:寄存器尋址指針,而〖地址標識符〗在上帖中談過,它包含〖存儲區符〗+〖存儲區尺寸符〗。但在這里,情況有所變化。比較一下剛才的例子:
DIX [AR1,P#1.5]
X [AR1,P#1.5]
DIX可以認為是我們通常定義的地址標識符,DI是背景數據塊存儲區域,X是這個存儲區域的尺寸符,指的是背景數據塊中的位。但下面一個示例中的M呢?X只是指定了存儲區域的尺寸符,那么存儲區域符在哪里呢?毫無疑問,在AR1中!
DIX [AR1,P#1.5] 這個例子,要尋址的地址區域事先已經確定,AR1可以改變的只是這個區域內的確切地址數值單元,所以我們稱之為:區域內寄存器間接尋址方式,相應的,這里的[AR1,P#1.5] 就叫做區域內尋址指針。
X [AR1,P#1.5] 這個例子,要尋址的地址區域和確切的地址數值單元,都未事先確定,只是確定了存儲大小,這就是意味著我們可以在不同的區域間的不同地址數值單元以給定的區域大小進行尋址,所以稱之為:區域間寄存器間接尋址方式,相應的,這里的[AR1,P#1.5] 就叫做區域間尋址指針。
既然有著區域內和區域間尋址之分,那么,同樣的AR1中,就存有不同的內容,它們代表著不同的含義。
【AR的格式】
地址寄存器是專門用于尋址的一個特殊指針區域,西門子的地址寄存器共有兩個:AR1和AR2,每個32位。
當使用在區域內寄存器間接尋址中時,我們知道這時的AR中的內容只是指明數值單元,因此,區域內寄存器間接尋址時,寄存器中的內容等同于上帖中提及的存儲器間接尋址中的雙字指針,也就是:
其0-2bit,指定bit位,3-18bit指定byte字節。其第31bit固定為0。
AR:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
這樣規定,就意味著AR的取值只能是:0.0 ——65535.7
例如:當AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),實際上就是等于26.4。
而在區域間寄存器間接尋址中,由于要尋址的區域也要在AR中指定,顯然這時的AR中內容肯定于寄存器區域內間接尋址時,對AR內容的要求,或者說規定不同。
AR:
1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX
比較一下兩種格式的不同,我們發現,這里的第31bit被固定為1,同時,第24、25、26位有了可以取值的范圍。聰明的你,肯定可以聯想到,這是用于指定存儲區域的。對,bit24-26的取值確定了要尋址的區域,它的取值是這樣定義的:
區域標識符
26、25、24位
P(外部輸入輸出)
000
I(輸入映像區)
001
Q(輸出映像區)
010
M(位存儲區)
011
DB(數據塊)
100
DI(背景數據塊)
101
L(暫存數據區,也叫局域數據)
111
如果我們把這樣的AR內容,用HEX表示的話,那么就有:
當是對P區域尋址時,AR=800xxxxx
當是對I區域尋址時,AR=810xxxxx
當是對Q區域尋址時,AR=820xxxxx
當是對M區域尋址時,AR=830xxxxx
當是對DB區域尋址時,AR=840xxxxx
當是對DI區域尋址時,AR=850xxxxx
當是對L區域尋址時,AR=870xxxxx
經過列舉,我們有了初步的結論:如果AR中的內容是8開頭,那么就一定是區域間尋址;如果要在DB區中進行尋址,只需在8后面跟上一個40。84000000-840FFFFF指明了要尋址的范圍是:
DB區的0.0——65535.7。
例如:當AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(b),實際上就是等于DBX26.4。
我們看到,在寄存器尋址指針 [AR1/2,P#byte.bit] 這種結構中,P#byte.bit又是什么呢?
【P#指針】
P#中的P是Pointer,是個32位的直接指針。所謂的直接,是指P#中的#后面所跟的數值或者存儲單元,是P直接給定的。這樣P#XXX這種指針,就可以被用來在指令尋址中,作為一個“常數”來對待,這個“常數”可以包含或不包含存儲區域。例如:
● L P#Q1.0 //把Q1.0這個指針存入ACC1,此時ACC1的內容=82000008(hex)=Q1.0
★ L P#1.0 //把1.0這個指針存入ACC1,此時ACC1的內容=00000008(hex)=1.0
● L P#MB100 //錯誤!必須按照byte.bit結構給定指針。
● L P#M100.0 //把M100.0這個指針存入ACC1,此時ACC1的內容=83000320(hex)=M100.0
● L P#DB100.DBX26.4 //錯誤!DBX已經提供了存儲區域,不能重復指定。
● L P#DBX26.4 //把DBX26.4這個指針存入ACC1,此時ACC1的內容=840000D4(hex)=DBX26.4
我們發現,當對P#只是指定數值時,累加器中的值和區域內尋址指針規定的格式相同(也和存儲器間接尋址雙字指針格式相同);而當對P#指定帶有存儲區域時,累加器中的內容和區域間尋址指針內容完全相同。事實上,把什么樣的值傳給AR,就決定了是以什么樣的方式來進行寄存器間接尋址。在實際應用中,我們正是利用P#的這種特點,根據不同的需要,指定P#指針,然后,再傳遞給AR,以確定最終的尋址方式。
在寄存器尋址中,P#XXX作為寄存器AR指針的偏移量,用來和AR指針進行相加運算,運算的結果,才是指令真正要操作的確切地址數值單元!
無論是區域內還是區域間尋址,地址所在的存儲區域都有了指定,因此,這里的P#XXX只能指定純粹的數值,如上面例子中的★。
【指針偏移運算法則】
在寄存器尋址指針 [AR1/2,P#byte.bit] 這種結構中,P#byte.bit如何參與運算,得出最終的地址呢?
運算的法則是:AR1和P#中的數值,按照BYTE位和BIT位分類相加。BIT位相加按八進制規則運算,而BYTE位相加,則按照十進制規則運算。
例如:寄存器尋址指針是:[AR1,P#2.6],我們分AR1=26.4和DBX26.4兩種情況來分析。
當AR1等于26.4,
AR1:26.2
+ P#: 2.6
---------------------------
= 29.7 這是區域內寄存器間接尋址的最終確切地址數值單元
當AR1等于DBX26.4,
AR1:DBX26.2
+ P#: 2.6
---------------------------
= DBX29.7 這是區域間寄存器間接尋址的最終確切地址數值單元
【AR的地址數據賦值】
通過前面的介紹,我們知道,要正確運用寄存器尋址,最重要的是對寄存器AR的賦值。同樣,區分是區域內還是區域間尋址,也是看AR中的賦值。
對AR的賦值通常有下面的幾個方法:
1、直接賦值法
例如:
L DW#16#83000320
LAR1
可以用16進制、整數或者二進制直接給值,但必須確保是32位數據。經過賦值的AR1中既存儲了地址數值,也指定了存儲區域,因此這時的寄存器尋址方式肯定是區域間尋址。
2、間接賦值法
例如:
L [MD100]
LAR1
可以用存儲器間接尋址指針給定AR1內容。具體內容存儲在MD100中。
3、指針賦值法
例如:
LAR1 P#26.2
使用P#這個32位“常數”指針賦值AR。
總之,無論使用哪種賦值方式,由于AR存儲的數據格式有明確的規定,因此,都要在賦值前,確認所賦的值是否符合尋址規范。
詳解西門子間接尋址<3>
使用間接尋址的主要目的,是使指令的執行結果有動態的變化,簡化程序是第一目的,在某些情況下,這樣的尋址方式是必須的,比如對某存儲區域數據遍歷。此外,間接尋址,還可以使程序更具柔性,換句話說,可以標準化。
下面通過實例應用來分析如何靈活運用這些尋址方式,在實例分析過程中,將對前面帖子中的筆誤、錯誤和遺漏做糾正和補充。
【存儲器間接尋址應用實例】
我們先看一段示例程序:
L 100
T MW 100 // 將16位整數100傳入MW100
L DW#16#8 // 加載雙字16進制數8,當把它用作雙字指針時,按照BYTE.BIT結構,
結果演變過程就是:8H=1000B=1.0
T MD 2 // MD2=8H
OPN DB [MW 100] // OPN DB100
L DBW [MD 2] // L DB100.DBW1
T MW[MD2] // T MW1
A DBX [MD 2] // A DBX1.0
= M [MD 2] // =M1.0
在這個例子中,我們中心思想其實就是:將DB100.DBW1中的內容傳送到MW1中。這里我們使用了存儲器間接尋址的兩個指針——單字指針MW100用于指定DB塊的編號,雙字指針MD2用于指定DBW和MW存儲區字地址。
-------------------------------------------------------------------------------------------------------------------------------------------------
對于壇友提出的 DB[MW100].DBW[MD2] 這樣的尋址是錯誤的提法,這里做個解釋:
DB[MW100].DBW[MD2] 這樣的尋址結構就尋址原理來說,是可以理解的,但從SIEMENS程序執行機理來看,是非法的。在實際程序中,對于這樣的尋址,程序語句應該寫成:
OPN DBW[WM100], L DBW[MD2]-------------------------------------------------------------------------------------------------------------------------------------------------
事實上,從這個例子的中心思想來看,根本沒有必要如此復雜。但為什么要用間接尋址呢?
要澄清使用間接尋址的優勢,就讓我們從比較中,找答案吧。
例子告訴我們,它最終執行的是把DB的某個具體字的數據傳送到位存儲區某個具體字中。這是針對數據塊100的1數據字傳送到位存儲區第1字中的具體操作。如果我們現在需要對同樣的數據塊的多個字(連續或者不連續)進行傳送呢?直接的方法,就是一句一句的寫這樣的具體操作。有多少個字的傳送,就寫多少這樣的語句。毫無疑問,即使不知道間接尋址的道理,也應該明白,這樣的編程方法是不合理的。而如果使用間接尋址的方法,語句就簡單多了。
【示例程序的結構分析】
我將示例程序從結構上做個區分,重新輸入如下:
=========================== 輸入1:指定數據塊編號的變量
|| L 100
|| T MW 100
===========================輸入2:指定字地址的變量
|| L DW#16#8
|| T MD 2
===========================操作主體程序
OPN DB [MW 100]
L DBW [MD 2]
T MW[MD2]
顯然,我們根本不需要對主體程序(紅色部分)進行簡單而重復的復寫,而只需改變MW100和MD2的賦值(綠色部分),就可以完成應用要求。
結論:通過對間接尋址指針內容的修改,就完成了主體程序執行的結果變更,這種修改是可以是動態的和靜態的。
正是由于對真正的目標程序(主體程序)不做任何變動,而尋址指針是這個程序中唯一要修改的地方,可以認為,尋址指針是主體程序的入口參數,就好比功能塊的輸入參數。因而可使得程序標準化,具有移植性、通用性。
那么又如何動態改寫指針的賦值呢?不會是另一種簡單而重復的復寫吧。
讓我們以一個具體應用,來完善這段示例程序吧:
將DB100中的1-11數據字,傳送到MW1-11中
在設計完成這個任務的程序之前,我們先了解一些背景知識。
【數據對象尺寸的劃分規則】
數據對象的尺寸分為:位(BOOL)、字節(BYTE)、字(WORD)、雙字(DWORD)。這似乎是個簡單的概念,但如果,MW10=MB10+MB11,那么是不是說,MW11=MB12+MB13?如果你的回答是肯定的,我建議你繼續看下去,不要跳過,因為這里的疏忽,會導致最終的程序的錯誤。
按位和字節來劃分數據對象大小時,是以數據對象的bit來偏移。這句話就是說,0bit后就是1bit,1bit后肯定是2bit,以此類推直到7bit,完成一個字節大小的指定,再有一個bit的偏移,就進入下一個字節的0bit。
而按字和雙字來劃分數據對象大小時,是以數據對象的BYTE來偏移!這就是說,MW10=MB10+MB11,并不是說,MW11=MB12+MB13,正確的是MW11=MB11+MB12,然后才是MW12=MB12+MB13!
這個概念的重要性在于,如果你在程序中使用了MW10,那么,就不能對MW11進行任何的操作,因為,MB11是MW10和MW11的交集。
也就是說,對于“將DB100中的1-11數據字,傳送到MW1-11中”這個具體任務而言,我們只需要對DBW1、DBW3、DBW5、DBW7、DBW9、DBW11這6個字進行6次傳送操作即可。這就是單獨分出一節,說明數據對象尺寸劃分規則這個看似簡單的概念的目的所在。
【循環的結構】
要“將DB100中的1-11數據字,傳送到MW1-11中”,我們需要將指針內容按照順序逐一指向相應的數據字,這種對指針內容的動態修改,其實就是遍歷。對于遍歷,最簡單的莫過于循環。
一個循環包括以下幾個要素:
1、初始循環指針
2、循環指針自加減
2、繼續或者退出循環體的條件判斷
被循環的程序主體必須位于初始循環指針之后,和循環指針自加減之前。
比如:
初始循環指針:X=0
循環開始點M
被循環的程序主體:-------
循環指針自加減:X+1=X
循環條件判斷:X≤10 ,False:GO TO M;True:GO TO N
循環退出點N
如果把X作為間接尋址指針的內容,對循環指針的操作,就等于對尋址指針內容的動態而循環的修改了。
【將DB100中的1-11數據字,傳送到MW1-11中】
L L#1 //初始化循環指針。這里循環指針就是我們要修改的尋址指針
T MD 102
M2: L MD 102
T #COUNTER_D
OPN DB100
L DBW [MD 102]
T MW [MD 102]
L #COUNTER_D
L L#2 // +2,是因為數據字的偏移基準是字節。
+D
T MD 102 //自加減循環指針,這是動態修改了尋址指針的關鍵
L L#11 //循環次數=n-1。n=6。這是因為,首次進入循環是無條件的,
但已事實上執行了一次操作。
<=D
JC M2
有關于T MD102 ,L L#11, <=D的詳細分析,請按照前面的內容推導。
【將DB1-10中的1-11數據字,傳送到MW1-11中】
這里增加了對DB數據塊的尋址,使用單字指針MW100存儲尋址地址,同樣使用了循環,嵌套在數據字傳送循環外,這樣,要完成“將DB1-10中的1-11數據字,傳送到MW1-11中”這個任務 ,共需要M1循環10次 × M2循環6次 =60次。
L 1
T MW 100
L L#1
T MD 102
M1: L MW 100
T #COUNTER_W
M2: 對數據字循環傳送程序,同上例
L #COUNTER_W
L 1 //這里不是數據字的偏移,只是編號的簡單遞增,因此+1
+I
T MW 100
L 9 //循環次數=n-1,n=10
<=I
JC M1
通過示例分析,程序是讓尋址指針在對要操作的數據對象范圍內進行遍歷來編程,完成這個任務。我們看到,這種對存儲器間接尋址指針的遍歷是基于字節和字的,如何對位進行遍歷呢?
這就是下一個帖子要分析的寄存器間接尋址的實例的內容了。
詳解西門子間接尋址<4>
L [MD100]
LAR1
與
L MD100
LAR1
有什么區別?
當將MD100以這種 [MD100] 形式表示時,你既要在對MD100賦值時考慮到所賦的值是否符合存儲器間接尋址雙字指針的規范,又要在使用這個尋址格式作為語句一部分時,是否符合語法的規范。
在你給出第一個例程的第一句:L [MD100]上,我們看出它犯了后一個錯誤。
存儲器間接尋址指針,是作為指定的存儲區域的確切數值單元來運用的。也就是說,指針不包含區域標識,它只是指明了一個數值。因此,要在 [MD100]前加上區域標識如: M、DB、I、Q、L等,還要加上存儲區尺寸大小如:X、B、W、D等。在加存儲區域和大小標識時,要考慮累加器加載指令L不能對位地址操作,因此,只能指定非位的地址。
為了對比下面的寄存器尋址方式,我們這里,修改為:L MD[MD100]。并假定MD100=8Hex,同時我們也假定MD1=85000018Hex。
當把MD100這個雙字作為一個雙字指針運用時,其存儲值的0-18bit將會按照雙字指針的結構Byte.bit來重新“翻譯”,“翻譯”的結果才是指針指向的地址,因而MD100中的8Hex=1000B=1.0,所以下面的語句:
L MD[MD100]
LAR1
經過“翻譯”就是:
L MD1
LAR1
前面我們已經假定了MD1=85000018,同樣道理,MD1作為指針使用時,對0-18bit應該經過Byte.bit結構的“翻譯”,由于是傳送給AR地址寄存器,還要對24-31bit進行區域尋址“翻譯”。這樣,我們得出LAR1中最終的值=DIX3.0。就是說,我們在地址寄存器AR1中存儲了一個指針,它指向DIX3.0。
-----------------------------
L MD100
LAR1
這段語句,是直接把MD100的值傳送給AR,當然也要經過“翻譯”,結果AR1=1.0。就是說,我們在地址寄存器AR1中存儲了一個指針,它指向1.0,這是由MD100直接賦值的。
似乎,兩段語句,只是賦值給AR1的結果不同而已,其實不然。我們事先假定的值是考慮到對比的關系,特意指定的。如果MD100=CHex的呢?
對于前一段,由于CHex=1100,其0-3bit為非0,程序將立即出錯,無法執行。(因為沒有MD1.4這種地址。。
后一段AR1的值經過翻譯以后,等于1.4,程序能正常執行。
SMIATIC S7-300 是模塊化微型PLC,滿足中、小規模的性能要求
模塊化與無風扇設計,易于實現分布式結構以及用戶友好的操作,使得 SIMATIC S7-300 成為中、小規模應用中各種不同控制任務的經濟、方便的解決方案。
SIMATIC S7-300 的應用領域包括:
一系列具有不同功率范圍的CPU,以及具有很多用戶友好功能的一系列擴展模塊,可以使用戶根據不同的應用情況選擇相應的模塊。 如果控制任務需要擴展,可以隨時使用附加模塊對控制系統進行擴展。
SIMATIC S7-300 是一個通用的控制器。
S7-300采用模塊化結構設計。含有多種模塊,可進行單獨組合。
一個系統包含下列組件:
根據客戶需要,還可以使用以下設備:
簡單的結構使得S7-300使用靈活且易于維護:
如果用戶的自動化任務需要 8 個以上的 SM、FM 或 CP 模塊插槽時,則 S7-300(除 CPU 312 和 CPU 312C 外)可以擴展:
S7-300 具有不同的通訊接口:
SIMATIC S7-300 通過通訊處理器或通過內置的 PROFIBUS DP 接口CPU連接到 PROFIBUS DP 總線系統。帶 PROFIBUS DP 主/從接口的 CPU 可以進行分布式自動化結構,可以高速通訊并且易于使用。
從用戶的角度來看,PROFIBUS DP上的分布式I/O處理與集中式I/O處理沒有區別(相同的組態,編址及編程)。
以下設備可作為主站連接:
由于性能原因,每條鏈路上主站的數量限制為2個。
以下設備可作為從站連接:
盡管配有 STEP 7 的編程設備/PC 或 OP 在總線上可作為主站使用,但是通過 PROFIBUS DP 也可以部分運行 MPI 功能。
SIMATIC S7-300 通過通訊處理器或通過配備集成 PROFINET 接口的 CPU 連接到 PROFINET IO 總線系統。配備 PROFINET 接口的 CPU 可實現高速、易于使用的分布式自動化組態。
從用戶的角度來看,通過 PROFINET IO 進行通訊的分布式 I/O 可作為中央 I/O(相同的組態、尋址和編程)。
可將下列設備作為 IO 控制器進行連接:
可將下列設備作為 IO 設備進行連接:
對于 S7-300,通訊處理器(CP 342-2)適用于AS-Interface總線,可用來連接到現場設備(AS-Interface從站)。
更多信息,請參見通訊處理器說明.
點到點連接是用來建立經濟有效的數據通訊方式,通過 CP 340/CP 341 通訊處理器或集成在CPU 313C-2 PtP 或 CPU 314C-2 PtP的內置接口進行數據通訊。有三種傳輸接口支持不同的通訊協議:
可以連接以下設備:
通訊功能塊隨手冊一起提供。
MPI(多點接口)是集成在 SIMATIC S7-300 CPU 上的通訊接口。它能用于簡單的網絡任務。
SIMATIC S7-300 通過 CP 342 和 CP 343 通訊處理器可以連接到 PROFIBUS 和工業以太網總線網絡。
可以連接以下設備:

概述
S7-300是模塊化小型PlC系統,能滿足中等性能要求的應用。其模塊化結構設計使得各種單獨的模塊之間可進行廣泛組合以用于擴展。
系統組成
中央處理單元(CPU):各種CPU有不同的性能,例如,有的CPU上集成有PROFIBUS—DP通訊接口等。
信號模塊(SM):用于數字量和模擬量輸入/輸出。
通訊處理器(CP):用于連接網絡和點對點連接。
功能模塊(FM):用于高速計數,定位操作(開環或閉環定位)和閉環控制。
負載電源模塊(PS):用于將SIMATICS7—300連接到120/230V交流電源,或24/48/60/110V直流電源。
接口模塊(1M):用于多機架配置時連接主機架(CR)和擴展機架(ER)。S7—300通過分布式的主機架(CR)和3個擴展機架(ER),可以操作多達32個模塊。運行時無需風扇。
SIMATICS7—300適用于通用領域:高電磁兼容性和強抗振動,沖擊性,使其具有最高的工業環境適應性。
功能
SIMATICS7—300的大量功能能夠支持和幫助用戶進行編程、啟動和維護,其主要功能如下:
高速的指令處理:0.1—0.6u s的指令處理時間在中等到較低的性能要求范圍內開辟了全新的應用領域。
浮點數運算:用此功能可以有效地實現更為復雜的算術運算。
方便用戶的參數賦值:一個帶標準用戶接口的軟件工具給所有模塊進行參數賦值。
人機界面(HMl):方便的人機界面服務已經集成在S7—300操作系統內、因此人機對話的編程要求大大減少。
SIMATIC人機界面(HMl)從S7—300中取得數據,S7-300按用戶指定的刷新速度傳送這些數據。S7-300操作系統自動地處理數據的傳送。
診斷功能:CPU的智能化的診斷系統連續監控系統的功能是否正常、記錄錯誤和特殊系統事件(例如:超時、模塊更換等)。
口令保護:多級口令保護可以使用戶高度、有效地保護其技術機密,防止未經允許的復制和修改,操作方式選擇開關:操作方式選擇開關像鑰匙一樣可以拔出,當鑰匙拔出時,就不能改變操作方式。這樣就防止非法刪除或改寫用戶程序。
通訊
這是一個經濟而有效的解決方案;方便用戶的STEP7的用戶界面提供了通訊組態功能,這使得組態非常容易、簡單。
SIMATICS7—300具有多種不同的通訊接口:多種通訊處理器用來連接AS—I接口和工業以太網總線系統;串行通訊處理器用來連接點到點的通訊系統;多點接口(MPl)集成在CPU中,用于同時連接編程
器、PC機、人機界面系統及其他SIMATICS7/M7/C7等自動化控制系統。CPU支持下列通訊類型:
過程通訊:通過總線(AS—I或Pronbus)對I/O模塊周期尋址(過程映象交換)。
數據通訊:在自動控制系統之間、人機界面(HMl)和幾個自動化功能塊間相互調用。
S7—300新模塊
S1MATIC S7—300產品系列又推出了幾種新的模塊,這些模塊擴大了用戶的選擇范圍,為更多的應用帶來了便利和可能。新推出的模塊有以下幾種:
▲PS305電源模塊:24—110V DC輸入、24VDC/2A輸出,環境條件擴展型。
▲CPU3141FM中央處理單元新增一種可外插存儲器卡的模塊、該模塊需STEP7V5.OSP3以上版本支持。
▲SM321數字量輸入模塊:48—125VDC,環境條件擴展型。
▲SM322數字量輸出模塊:48—125VDC/1.5A、環境條件擴展型。
▲SM331熱電阻/電阻輸入模塊,分辨率24位。
▲SM331熱點偶輸入模塊,分辨率24位。
▲SM3354人/4出模擬輸入/輸出模塊,背板總線隔離,診斷與中斷功能。
▲SM338超聲波位置解碼器,可連4個超聲波位置傳感器,最多8個測量點。
▲CM35計數器模塊,8通道計數,最大10KHz,
▲CP343—lIT通訊模塊,10/100Mbps工業以太網,Web服務器,WWW網頁,E—mail發送功能。