產品詳情
西門子6ES7214-1AD23-0XB8
西門子PLC S7-200的數據類型
1、基本數據類型
基本數據類型由以下幾種:
1.1、位(bit)
定義為BOOL(布爾型),只有兩個值:0 或 1。如:I0.0,Q0.1,M0.0,V0.1 等。
1.2、字節(Byte)
定義一個字節(Byte)等于8 位(Bit),其中0位為低位,7 位為高位。
如:IB0(包括 I0.0~I0.7 位),QB0(包括Q0.0~Q0.7 位),MB0,VB0 等。
用十六進制表示的范圍為:00~FF,用十進制表示的范圍為 0~255。
1.3、字(Word)
定義相鄰的兩字節(Byte)組成一個字(Word),表示一個無符號整數,所以一個字為16位。
如:IW0 由 IB0 和 IB1 組成的,其中I是輸入映象寄存器,W表示字,0是字的起始字節。特別注意的是:起始字節必須是偶數。
字的范圍為十六進制的 0000~FFFF,十進制的 0~65536。
在編程時,如果已經使用 IW0,如果想再用 IB0或 IB1,就要特別慎重,避免重復定義。
1.4、雙字(DoubleWord)
相鄰的兩個字(Word)組成一個雙字,來表示一個無符號數。因此,雙字為 32 位。
如:MD100 是由 MW100 和 MW102 組成的,其中M是位存儲區,D表示雙字,100是雙字的起始字節。特別注意的是:雙字的起始字節也必須是偶數。
雙字的范圍為十六進制的 0000~FFFFFFFF(即十進制的 0~4294967295)。
在編程時如果已經使用了MD100,如果再用 MW100或MW102,就要特別慎重,避免重復定義。
特別注意:以上的字節、字和雙字數據類型均為無符號數,即只有正數,沒有負數。
1.5、16位整數(INT,Integer)
整數為有符號數,高位為符號位,1表示負數,0表示正數。范圍為-32768~32767。
1.6、32 位整數(DINT,DoubleInteger)
32 位整數和16位整數一樣,為有符號數,高位為符號位,1表示負數,0表示正數。范圍為-2147483648~2147483647。
1.7、浮點數(R,Real)
浮點數為 32 位,可以用來表示小數。浮點數可以為:1.m×2e。
2、復合數據類型
用戶通過復合基本數據類型而生成就是復合數據類型。
復合數據類型包括以下幾種:
2.1、數組(ARRAY)
將一組同一類型的數據組合在一起組成一個單位就是數組。
2.2、結構(STRUCT)
將一組同不同類型的數據組合在一起組成一個單位就是結構。
2.3、字符串(STRING)
字符串是由多 254 個字符組成的一維數組。
2.4、日期和時間(DATE-AND-TIME)
用于存儲年、月、日、時、分、秒、毫秒和星期的數據。占用 8 個字節,BCD 編碼。
星期天代碼為1,星期一~星期六代碼分別是 2~7。
如:DT#2004_07_15_12:30:15.200 為 2004 年 7 月 15 日 12 時 30 分 15.2 秒。
2.5、用戶定義的數據類型(UDT,User-DefinedDataType)
由用戶將基本數據類型和復合數據類型組合在一起形成的數據類型。
可以在數據塊DB和變量聲明表中定義復合數據類型。
3、數據類型匯總表格
4、舉例說明
對于有符號的整數來說,高位用作符號位,余下的位才是數值部分。
下面以有符號整數INT來舉例說明其數值范圍為什么是-32768-32767?
高位是符號位,0為“+”、1為“-,去掉一個符號位后,余下的數據只有15位。
15位二進制1對應的整數大正整數為2^15-1=32767,大值為+32767,對應二進制:0111 1111 1111 1111。即十進制范圍:0~32767;
15位二進制1對應的整數大負整數為-2^15=-32768,大值為-32768,對應二進制:1111 1111 1111 1111。即十進制范圍:-32768~-1
如何用 S7-200 實現 Modbus 通信?
說明:
用下面的例程你可以在 S7-200 CPU 之間建立一個簡單的 Modbus 主-從通訊。
這個例子是關于 Modbus 功能碼 6 的(寫從站保持寄存器), 也可以作為其他所支持的功能碼的基本參數設置步驟:1, 2, 3, 4, 5, 15 和16 。
要求:
要使用 Modbus 協議必須先獲得并在 STEP 7 Micro/Win 中安裝指令庫 (條目 17470979)。
Modbus 主站協議只被 STEP 7 Micro/Win V4.0 SP5 及其以上版本支持。
- 1. 硬件設置
- 2. 參數匹配
- 3. 指令庫的存儲地址
- 4. 保持寄存器變量傳輸
1. 硬件設置
例程中的 Modbus 通訊是在兩個 S7-200 CPU 的 0 號通訊口間進行的(每個 CPU 都有兩個通訊口)。在主站側也可以用相應庫文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通過1號通訊口通信。通訊口 1 用 Micro/WIN 與 PG 或 PC 建立連接,兩個 CPU 的通訊口 0 通過 Profibus 纜進行連接(電纜的針腳 連接為3,3,8,8 -> 見圖 01)。 另外,需要確定邏輯地M相連 。
圖. 01
2. 參數匹配
對于 MODBUS 通訊,主站側需要程序庫 "MBUS_CTRL" 和 "MBUS_MSG",從站側需要程序庫 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要為主站和從站新建一個項目,程序與參數設置見圖.02。
必須要保證主站與從站的“Baud”和 “Parity” 的參數設置要*,并且程序塊 "MBUS_MSG" 中的 "Slave" 地址要與程序塊 "MBUS_INIT" 中的 "Addr" 所設置的* (見圖. 02)。
在 Micro/WIN“系統塊”中設置的通訊口 0 的波特率與 MODBUS 協議無關 ("Mode" = "1")。
圖. 02
下面的表格列出了程序塊各個參數選項及其含義。
主站
MBUS_CTRL
| 參數 | 意義 | 選項 |
| EN | 使能 | |
| Mode | 協議選擇 | 0=PPI, 1=MODBUS |
| Baud | 傳輸速率 kbps | 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 |
| Parity | 校驗選擇 | 0=無校驗, 1=奇校驗, 2=偶校驗 |
| Timeout | 從站的最長響應時間 ms | |
| Done | “完成”標志位 | |
| Error | 錯誤代碼 | 1) |
表 01
1) 參看 STEP 7 Micro/WIN 幫助:"MODBUS 主站執行 MBUS_MSG 時的錯誤代碼" 。
MBUS_MSG
| 參數 | 意義 | 選項 |
| EN | 使能 | |
| First | 讀寫請求位 | |
| Slave | 從站地址 | |
| RW | "讀" 或 "寫" | 0=讀, 1=寫 |
| Addr | 讀寫從站的數據地址 |
0 .. 128 = 數字量輸出 Q0.0 .. Q15.7 1001 .. 10128 = 數字量輸入 I0.0 .. I15.7 30001 .. 30092 = 模擬量輸入 AIW0 .. AIW62 40001 .. 49999 = 保持寄存器 2 |
| Count | 位或字的個數 (0xxxx, 1xxxx) / words (3xxxx, 4xxxx) | |
| DataPtr | V存儲區起始地址指針 | |
| Done | '完成' 標志位 | |
| Error | 錯誤代碼 | 1) |
表 02
1)參看 STEP 7 Micro/WIN 幫助:"MODBUS 主站執行 MBUS_MSG 時的錯誤代碼" 。
從站
MBUS_INIT
| 參數 | 意義 | 選項 |
| EN | 使能 | |
| Mode | 協議選擇 | 0=PPI, 1=MODBUS |
| Addr | 從站地址 | |
| Baud | 傳輸速率 kbps | 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 |
| Parity | 奇偶校驗 | 0=無校驗, 1=奇校驗, 2=偶校驗 |
| Delay | 延時時間 ms | |
| MaxIQ | 大數字輸入輸出點數 | 2) |
| MaxAI | 大模擬量輸入點數 | 2) |
| MaxHold | ZUI大保持寄存器字數量 | 2) |
| HoldStart | 保持寄存器區起始地址(40001) | |
| Done | 完成標志位 | |
| Error | 錯誤代碼 | 3) |
表 03
2) 大的地址取決于所用 CPU的 類型及其大值。
3)參看 STEP 7 Micro/WIN 幫助:“MODBUS從站協議的錯誤代碼”。
MBUS_SLAVE
| 參數 | 意義 | 選項 |
| EN | 使能 | |
| Done | 完成標志位 | |
| Error | 錯誤代碼 | 3) |
表 04
3)參看 STEP 7 Micro/WIN 幫助: “MODBUS從站協議的錯誤代碼” 。
3. 庫的存儲地址
項目完成后必須要在 Micro/WIN 中定義庫的存儲地址,當定義完存儲區后, 要保證在任何情況下不能再被其它程序所使用 (主站側: "DataPtr" + "Count" 從站側: "HoldStart" + "MaxHold")。
圖. 03
4. 保持寄存器值的傳輸
將程序下載到相應的 CPU 后,可以在狀態表中給主站側的 V 存儲區賦值,然后從站側監視數值的變化。
當主站的 I0.0 使能后,VW2 中的內容就被發送到從站并寫入從站的 VW2 。
保持寄存器值的傳輸見圖. 04。
指針 "DataPtr" 代表了被讀的 V 區起始地址。
參數 "Count" 了被寫入地址 "Addr" = "4xxxx" (保持寄存器)字的個數。
相應 V 存儲區的變量將被寫到保持寄存器啟始地址 "Addr" = "40002" ("RW" = "1")中。
保持寄存器是以字為單位傳輸的,它與從站的 V 區地址對應。
指針 "HoldStart" 了與保持寄存器起始地址 40001 相對應的V存儲區的初始地址。
可以按下面公式計算從站的V區目標指針:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
另外,要保證主站側所要寫入的數據區包含在 "MaxHold" 定義的數據區內 :
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
|
◆ 集成8 輸入/6 輸出共14 個數字量I/O 點。 |
|
|
| 6ES7 212-1BB23-0XB8型CPU:CPU 222 CN AC/DC/繼電器,8輸入/6輸出 | |
|
|

