在?TwinCAT(Beckhoff PLC 編程環境)中,%MX
、%MD
?等符號是?IEC 61131-3 標準的地址表示法,用于直接訪問?PLC 的物理 I/O 或內存區域。這些符號通常用于?變量聲明?或?直接尋址,特別是在?TwinCAT 2?和?傳統 PLC 編程?中較為常見。
1. 基本語法格式
TwinCAT 的地址表示法遵循?IEC 61131-3 標準,格式如下:
%<存儲區><數據長度><地址>
其中:
-
%
:固定前綴,表示直接地址訪問。 -
<存儲區>
:指定內存區域(如?I
、Q
、M
?等)。 -
<數據長度>
:指定數據類型大小(如?X
=位,B
=字節,W
=字,D
=雙字)。 -
<地址>
:具體地址編號(如?0
、1
、100
?等)。
2. 常見存儲區(Memory Areas)
存儲區 | 說明 | 示例 |
---|---|---|
I | 輸入區(Input) | %IX0.0 (輸入位) |
Q | 輸出區(Output) | %QW4 (輸出字) |
M | 內存區(Memory,全局變量) | %MD100 (雙字) |
C | 計數器(Counter) | %C1 (計數器1) |
T | 定時器(Timer) | %T2 (定時器2) |
3. 數據長度(Data Length)
符號 | 數據類型 | 大小(位) | 示例 |
---|---|---|---|
X | 位(Bit) | 1 | %MX0.0 (內存位) |
B | 字節(Byte) | 8 | %MB10 (內存字節) |
W | 字(Word) | 16 | %MW20 (內存字) |
D | 雙字(DWord) | 32 | %MD100 (內存雙字) |
L | 長字(LWord) | 64 | %ML200 (內存長字) |
4. 常見地址示例
(1) 位訪問(Bit Addressing)
-
%IX0.0
:輸入位 0.0(第 0 字節的第 0 位)。 -
%QX1.5
:輸出位 1.5(第 1 字節的第 5 位)。 -
%MX100.7
:內存位 100.7(全局存儲區)。
(2) 字節/字/雙字訪問
-
%IB0
:輸入字節 0(8 位)。 -
%QW4
:輸出字 4(16 位,地址 4~5)。 -
%MD100
:內存雙字 100(32 位,地址 100~103)。
5. TwinCAT 2 vs TwinCAT 3
(1) TwinCAT 2
-
廣泛使用?
%MX
、%MD
?等直接地址訪問。 -
常用于?傳統 PLC 編程?或?硬件 I/O 映射。
(2) TwinCAT 3
-
推薦使用?符號化變量(Symbolic Variables)代替直接地址。
-
仍然支持?
%
?尋址,但更推薦?綁定到 I/O 設備(如?EL1809
?輸入模塊)。
6. 實際應用示例
(1) 直接控制輸出位
st
// TwinCAT 2 風格(直接地址)
%QX0.0 := TRUE; // 強制輸出位 0.0 為 ON
(2) 讀取輸入字
st
// TwinCAT 3 風格(推薦符號化變量)
VARnInputValue: INT;
END_VARnInputValue := %IW0; // 讀取輸入字 0
(3) 內存區操作
// 使用 %MD 訪問全局內存
%MD100 := 123456; // 寫入雙字
diResult := %MD100 + 1000; // 讀取并計算
7. 注意事項
-
避免硬編碼地址:在 TwinCAT 3 中,建議使用?符號化變量?或?I/O 映射,而不是直接?
%MD
。 -
地址沖突:確保?
%MX
、%MD
?等地址不與其他變量重疊。 -
數據類型匹配:
%MW
?是 16 位,%MD
?是 32 位,賦值時需確保類型一致。
總結
符號 | 含義 | 示例 |
---|---|---|
%IX0.0 | 輸入位 0.0 | %IX0.0 := TRUE; |
%QW4 | 輸出字 4(16 位) | %QW4 := 16#ABCD; |
%MD100 | 內存雙字 100(32 位) | %MD100 := 1234; |
在 TwinCAT 編程中,%
?地址表示法提供了一種底層訪問方式,但在現代工程中更推薦使用?符號化變量?和?I/O 映射,以提高代碼可讀性和可維護性。