詳細參數(shù) | |||
---|---|---|---|
品牌 | 西門子 | 型號 | 6ES7431-1KF00-0AB0 |
結(jié)構(gòu)形式 | 模塊式 | 安裝方式 | 控制室安裝 |
LD指令處理器 | 其他 | 加工定制 | 否 |
西門子模塊6ES7431-1KF00-0AB0太原西門子專業(yè)授權(quán)代理商
“EnablePeripheralOutputs”功能取消對外設(shè)的輸出禁止,這樣,就可以在CPU處于STOP模式下時修改外設(shè)輸出。在STOP模式下修改輸出界面如圖3-22所示??砂凑障旅娴牟襟E設(shè)置允許外設(shè)輸出:
圖3-22 STOP模式下修改輸出界面
①選擇菜單命令Table→Open,打開需要進行外設(shè)輸出修改的變量表(VAT)或打開相關(guān)變量表的窗口。
②選擇菜單命令PLC→Connecttot,建立與所需CPU的連接,這樣就可以修改變量表中的外設(shè)輸出。
③選擇菜單命令PLC→OperatingMode,打開操作模式對話框,并把CPU切換到STOP模式。
④在“ModifyValue”列中為需要修改的外設(shè)輸出設(shè)置合適的值。
例如,PQB7修改值:
2#0001000011
PQW2W#16#0027
PQD4DW#16#0001
⑤選擇菜單命令Variable→EnablePeripheralOutputs,切換“Enable PeripheralOutputs”為有效。
⑥選擇菜單命令Variable→ActivateModifyValues,可以修改外設(shè)輸出?!癊nablePeripheralOutputs”保持激活直到用菜單命令Variable→Enable PeripheralOutputs取消該功能。
⑦再從第④步開始設(shè)置新值。如果CPU改變操作模式,比如從STOP到RUN或STAR-TUP,就會彈出一個信息。如果CPU在RUN模式選擇“EnablePeripheralOutputs”功能,也會彈出一個信息。
S7-300/400采用STEP7進行編程及組態(tài),在STEP7中有3種數(shù)據(jù)類型:
1)基本數(shù)據(jù)類型。
2)通過基本數(shù)據(jù)類型組合成的復合數(shù)據(jù)類型。
3)用來傳送子程序參數(shù)的參數(shù)類型。
STEP7的基本數(shù)據(jù)類型有以下幾種:
1.位( bit)
位數(shù)據(jù)的數(shù)據(jù)類型為BOOL型,在編程軟件中BOOL變量的值“0”和“1”常用FALSE(假)和TURE(真)來表示。
位存儲單元的地址由位地址和字節(jié)地址組成,例如I3.2中區(qū)域標識符“I”表示該地址為輸入映像寄存器地址( Input),字節(jié)地址為3,位地址為2。這種尋址方式稱為“字節(jié).位”尋址方式。輸入字節(jié)IB3由I3.0~I3.7這8位組成。
2.字節(jié)( Byte)
8位二進制數(shù)構(gòu)成一個字節(jié)( Byte),其中第0位為位(LSB),第7位為高位( MSB)。
3.字( Word)
相臨的兩個字節(jié)組成一個字,字用來表示無符號數(shù)。MW100是由MB100和MB101兩個字節(jié)組成的,MB100為高位字節(jié)。在MW100中,M為區(qū)域標識符,W表示按字尋址,100為起始字節(jié)MB100的地址。
4.雙字( Double Word)
一個雙字由兩個字組成,雙字用來表示無符號數(shù)。MD100是由MB100、MB101、MB102和MB103 4個字節(jié)組成的一個雙字,MB100為高位字節(jié),D表示雙字,100為起始字節(jié)的地址。
5.整數(shù)( INT,Integer)
整數(shù)為有符號數(shù),其高位為符號位,16位整數(shù)的取值范圍為-32768~+32767,32位整數(shù)的取值范圍為-2147483648~+2147483647。在PLC中,整數(shù)用補碼來表示。
6.32位浮點數(shù)
浮點數(shù)又稱為實數(shù)( REAL),在計算機中浮點數(shù)用科學記數(shù)法表示為1.m/2E,例如123.4可以表示為1.234×102。符合ANSI/IEEE標準754_4985的基本格式的浮點數(shù)可以表示為1.m×2e,其中指數(shù)e=E+127(1≤e≤254),為8位整數(shù)。
ANSI/IEEE標準浮點數(shù)的格式如圖6-1所示,總共占據(jù)一個雙字(32位)。高位為符號位;8位指數(shù)位于23~30位;因為規(guī)定尾數(shù)的整數(shù)部分總是1,只保留了尾數(shù)的小數(shù)部分m(0~22位)。浮點數(shù)的表示范圍為±1.75495×10-38~±3.402823×1038。
圖6-1 浮點數(shù)格式
浮點數(shù)的特點是可以用很小的存儲空間(4B)表示非常大和非常小的數(shù)。PLC輸入和輸出的數(shù)值大多數(shù)是整數(shù)(包括模擬量),用浮點數(shù)來處理這些數(shù)據(jù)需要進行數(shù)據(jù)類型的轉(zhuǎn)換。
7.常數(shù)的表示方法
常數(shù)值可以是字節(jié)、字或雙字,CPU以二進制方式存儲常數(shù),常數(shù)也可以用十進制、十六進制ASCII碼或浮點數(shù)的形式來表示。常數(shù)的表示如表6-1所示。
表6-1 常數(shù)的表示
符 號 |
說 明 |
B#16# W#16# DW#16# |
十六進制字節(jié)、字和雙字常數(shù) |
D# |
IEC日期常數(shù) |
L# |
32位整數(shù)常數(shù) |
P# |
地址指針常數(shù) |
S5T# |
S5時間常數(shù)(16位) |
T# |
IEC時間常數(shù) |
TOD# |
實時時間常數(shù)(32位) |
C# |
計數(shù)器常數(shù)(BCD編碼) |
2# |
二進制常數(shù) |
B#16#,W#16#,DW#16#分別用來表示十六進制的字節(jié)、字和雙字常數(shù)。2#用來表示二進制常數(shù),如2#1011_0011。
L#為32位整數(shù)常數(shù),例如1# +5。
P#為地址指針常數(shù),例如P#M2.3表示M2.3的地址。
S5T#是16位的S5時間常數(shù),格式為S5T#aD_bH_cM_dS_eMS。其中a、b、c、d、e分別是日、小時、分鐘、秒鐘和毫秒的數(shù)值。在實際使用時可以省略下劃線,例如S5T#3M40S=3分40秒。
S5時間常數(shù)的取值范圍為S5T#0H0M0S0MS~S5T#2H46M30S0MS,時間增量為10ms。
T#為帶符號的32位IEC時間常數(shù),例如T#1D_12H_30M_0S_250MS,時間增量為1ms。其取值范圍為T#0D_OH_0M_0S_0MS~T#24D_20H_31M_23S_648MS。
DATE是IEC日期常數(shù),取值范圍為D#1990-1-1~D#2168-12-31。
TOD#是32位實時時間常數(shù),時間增量為1ms,例如TOD#23:50:45. 300。
C#為計數(shù)器常數(shù),用BCD碼表示,例如C#250。
8位ASCII碼字符用單引號表示,例如“ABC”
使用 Modbus RTU 主站指令庫,可以讀寫 Modbus RTU 從站的數(shù)字量、模擬量 I/O 以及保持寄存器。
要使用 Modbus RTU 主站指令庫,須遵循下列步驟:
1. 調(diào)用 Modbus RTU 主站初始化和控制子程序
使用 SM0.0 調(diào)用 MBUS_CTRL 完成主站的初始化,并啟動其功能控制:
圖 2. 用 SM0.0 調(diào)用 Modbus RTU 主站初始化與控制子程序
各參數(shù)意義如下:西門子6ES7952-1KP00-0AA0
a. | EN | 使能: | 必須保證每一掃描周期都被使能(使用 SM0.0) |
---|---|---|---|
b. | Mode | 模式: | 為 1 時,使能 Modbus 協(xié)議功能;為 0 時恢復為系統(tǒng) PPI 協(xié)議 |
c. | Baud | 波特率: | 支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。 |
d. | Parity | 校驗: | 校驗方式選擇 |
0=無校驗 | |||
1=奇較驗 | |||
2=偶較驗 | |||
e. | Timeout | 超時: | 主站等待從站響應的時間,以毫秒為單位,典型的設(shè)置值為 1000 毫秒(1 秒),允許設(shè)置的范圍為 1 - 32767。 |
![]() |
|||
f. | Done | 完成位: | 初始化完成,此位會自動置1。可以用該位啟動 MBUS_MSG 讀寫操作(見例程) |
g. | Error | 初始化錯誤代碼(只有在 Done 位為1時有效): | |
0= 無錯誤 | |||
1= 校驗選擇非法 | |||
2= 波特率選擇非法 | |||
3= 模式選擇非法 |
2. 調(diào)用 Modbus RTU 主站讀寫子程序MBUS_MSG,發(fā)送一個Modbus 請求;
圖 3. 調(diào)用Modbus RTU 主站讀寫子程序
各參數(shù)意義如下:西門子6ES7952-1KP00-0AA0
a. | EN | 使能: | 同一時刻只能有一個讀寫功能(即 MBUS_MSG)使能 |
---|---|---|---|
![]() |
|||
b. | First | 讀寫請求位: | 每一個新的讀寫請求必須使用脈沖觸發(fā) |
c. | Slave | 從站地址: | 可選擇的范圍 1 - 247 |
d. | RW | 從站地址: | 0 = 讀, 1 = 寫 |
![]() |
|||
1. 開關(guān)量輸出和保持寄存器支持讀和寫功能 | |||
2. 開關(guān)量輸入和模擬量輸入只支持讀功能 | |||
e. | Addr | 讀寫從站的數(shù)據(jù)地址: | |
選擇讀寫的數(shù)據(jù)類型 | |||
00001 至 0xxxx - 開關(guān)量輸出 | |||
10001 至 1xxxx - 開關(guān)量輸入 | |||
30001 至 3xxxx - 模擬量輸入 | |||
40001 至 4xxxx - 保持寄存器 | |||
f. | Count | 數(shù)據(jù)個數(shù) | 通訊的數(shù)據(jù)個數(shù)(位或字的個數(shù)) |
![]() |
|||
g. | DataPtr | 數(shù)據(jù)指針: | 1. 如果是讀指令,讀回的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中 |
2. 如果是寫指令,要寫出的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中 | |||
h. | Done | 完成位 | 讀寫功能完成位 |
i. | Error | 錯誤代碼: | 只有在 Done 位為1時,錯誤代碼才有效 |
西門子6ES7952-1KP00-0AA0 | 0 = 無錯誤 | ||
1 = 響應校驗錯誤 | |||
2 = 未用 | |||
3 = 接收超時(從站無響應) | |||
4 = 請求參數(shù)錯誤(slave address, Modbus address, count, RW) | |||
5 = Modbus/自由口未使能 | |||
6 = Modbus正在忙于其它請求 | |||
7 = 響應錯誤(響應不是請求的操作) | |||
8 = 響應CRC校驗和錯誤 | |||
- | |||
101 = 從站不支持請求的功能 | |||
102 = 從站不支持數(shù)據(jù)地址 | |||
103 = 從站不支持此種數(shù)據(jù)類型 | |||
104 = 從站設(shè)備故障 | |||
105 = 從站接受了信息,但是響應被延遲 | |||
106 = 從站忙,拒絕了該信息 | |||
107 = 從站拒絕了信息 | |||
108 = 從站存儲器奇偶錯誤 |
常見的錯誤:
3. 在 CPU 的 V 數(shù)據(jù)區(qū)中為庫指令分配存儲區(qū)(Library Memory)
Modbus Master 指令庫需要一個284個字節(jié)的全局 V 存儲區(qū)。
參考:分配庫指令數(shù)據(jù)區(qū)
此為西門子正式推出的標準庫指令說明資料。
在 Modbus RTU Master 協(xié)議和 PPI 協(xié)議之間切換:
Modbus RTU Master 協(xié)議指令庫使通信口工作在自由口模式下,此時不能與 Micro/WIN 軟件通信。要在切換回 PPI 協(xié)議,可以:
西門子6ES7952-1KP00-0AA0
Modbus RTU Master 協(xié)議庫的執(zhí)行時間:
Modbus RTU Master 協(xié)議庫的 MBUS_CTRL 指令不需要很長的執(zhí)行時間。MBUS_需要 1.11 ms 用于初始化,在后續(xù)的每個掃描周期中只占用 0.41 ms。
調(diào)用 MBUS_MSG 子程序會加長處理時間。大部分時間都用于 CRC 校驗的計算。每讀、寫一個字的數(shù)據(jù)就需要 1.85 ms 掃描時間。數(shù)據(jù)zui多的情況下(讀、寫 120 字的數(shù)據(jù)),掃描時間大概會擴增加 222 ms。讀操作的時間主要消耗在接收數(shù)據(jù)上;寫操作的時間主要消耗在發(fā)送數(shù)據(jù)上。
Modbus 地址
通常 Modbus 地址由 5 位數(shù)字組成,包括起始的數(shù)據(jù)類型代號,以及后面的偏移地址。Modbus Master 協(xié)議庫把標準的 Modbus 地址映射為所謂 Modbus 功能號,讀寫從站的數(shù)據(jù)。Modbus Master 協(xié)議庫支持如下地址:
Modbus Master 協(xié)議庫支持的功能
西門子6ES7952-1KP00-0AA0
為了支持上述 Modbus 地址的讀寫,Modbus Master 協(xié)議庫需要從站支持下列功能:
表 1. 需要從站支持的功能
Modbus 地址 | 讀/寫 | Modbus 從站須支持的功能 |
---|---|---|
00001 - 09999 數(shù)字量輸出 |
讀 | 功能 1 |
寫 |
功能 5:寫單輸出點 功能 15:寫多輸出點 |
|
10001 - 19999 數(shù)字量輸入 |
讀 | 功能 2 |
寫 | - | |
30001 - 39999 |
讀 | 功能 4 |
寫 | - | |
40001 - 49999 保持寄存器 |
讀 | 功能 3 |
寫 |
功能 6:寫單寄存器單元 功能 16:寫多寄存器單元 |
Modbus 地址和 S7-200 存儲區(qū)地址的映射
S7-200 通過 Modbus Master 和 Slave 協(xié)議庫通信時,Modbus 地址和 S7-200 內(nèi)存儲區(qū)地址的 映射關(guān)系都類似。
Modbus 保持寄存器地址映射舉例:
Modbus 數(shù)字量地址映射舉例:
位地址(0xxxx 和 1xxxx)數(shù)據(jù)總是以字節(jié)為單位打包讀寫。*個字節(jié)中的zui低有效位對應 Modbus 地址的起始地址。如下圖所示:
西門子6ES7952-1KP00-0AA0
圖 4. 數(shù)字量地址映射舉例
為了更好地理解 Modbus 主站的編程,可參考下面的例程。
例子程序1: 多個MBUS_MSG指令輪詢執(zhí)行,
注意
Modbus RTU 主站指令庫應用例程
例子程序2:反復激活單個MBUS_MSG指令:
Modbus RTU 主站變址方式輪詢訪問應用例程
注意:此指令庫/程序的作者和擁有者對于該軟件的功能性和兼容性不負任何責任。使用該軟件的風險完全由用戶自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和支持,用戶不必為 此西門子與服務部門。
Modbus RTU 主站庫對 CPU 的版本是否有要求,為什么編譯例子程序時,會遇到 4 個錯誤?
Modbus RTU 主站庫對 CPU 的版本確實有要求,CPU 的版本必須為 2.00 或者 2.01(即訂貨號為6ES721*-***23-0BA*),1.22 版本之前(包括 1.22 版本)的 S7-200 CPU 不支持。
Modbus 指令庫啟動后,如何通過同一個通信端口進行 CPU 監(jiān)控?
Modbus 指令庫使用的是 CPU 的自由口通信功能,工作在自由口模式下的通訊口不能使用 Micro/WIN 的 PPI 編程通信監(jiān)控。如果通信口都已經(jīng)被占用,可以考慮:
如何理解 Modbus 地址與功能碼的區(qū)別?
Modbus 地址與 Modbus 的功能碼是兩個層次的概念。
根據(jù) Modbus 通信協(xié)議,Modbus 數(shù)據(jù)的地址使用 0xxxx、1xxxx、3xxxx 和 4xxxx 的形式,分別表示數(shù)字量輸出、數(shù)字量輸入、模擬量輸入等數(shù)據(jù)地址。在使用 S7-200 的指令庫時,Modbus 數(shù)據(jù)地址與 S7-200 的 I/O 和數(shù)據(jù)存儲區(qū)地址間有特定的對應關(guān)系。
有些設(shè)備表明它支持 Modbus RTU 通信協(xié)議,但也詳細提供了讀寫數(shù)據(jù)的詳細通信幀格式,其中包括如何 Modbus 站的地址,需要讀寫數(shù)據(jù)類型、長度等等。數(shù)據(jù)幀有特定字節(jié)指出此指令讀寫的數(shù)據(jù)類型和地址,此字節(jié)的數(shù)據(jù)內(nèi)容即所謂"功能碼",如功能 1 讀取單個/多個數(shù)字量輸出點的值。
支持 Modbus 協(xié)議的設(shè)備或軟件,使用時用戶直接設(shè)置或看到的應當是 Modbus 數(shù)據(jù)地址。Modbus 地址所訪問的數(shù)據(jù),是通過各種"功能"讀寫而來。功能碼是 Modbus 地址的底層。如果 Modbus 通信的一方提供的所謂 Modbus 協(xié)議只有功能碼,則需要注意了解此功能號與 Modbus 地址間的對應關(guān)系。西門子6ES7952-1KP00-0AA0
如何訪問大于 9999 的保持寄存器地址?
通常 Modbus 協(xié)議的保持寄存器地址范圍在 40001 - 49999 之間。對于多數(shù)應用來說已經(jīng)夠了。但有些 Modbus 從站把地址映射到保持寄存器區(qū)的地址超過 9999 的部分。
Modbus Master 協(xié)議庫支持超過 9999 的保持寄存器地址。地址范圍為 400001 - 465536。只需在調(diào)用 MBUS_MSG 子程序時給 Addr 參數(shù)賦相應的值即可,如 416768。
Modubs Master 擴展地址模式僅支持保持寄存器區(qū),不支持其他地址類型。
S7-200 作為 Modbus 主站方接收上來的數(shù)據(jù)格式與第三方設(shè)備不一樣怎么辦?
西門子PLC數(shù)據(jù)的存儲格式為高位低存方式。舉例:VD200中包含VW200和VW202,其中VW202是低字,VW200是高字。若第三方設(shè)備與西門子數(shù)據(jù)存儲格式不同,是低位低存的方式,那么通信上來的數(shù)據(jù)就會存在錯誤,需要進行轉(zhuǎn)換才能使用。編程的方式比較多樣,針對雙字中高低字的交換可以使用SWAP(字交換)指令,若是字節(jié)交換可以考慮循環(huán)移位指令。
S7-200 是否支持如 Modbus TCP 等其它協(xié)議?
不支持。S7-200自身的通信端口或其通信擴展模塊均不支持 Modbus TCP、CANopen、DeviceNet 以及 BACnet 通信協(xié)議。
為什么 S7-200 作 Modbus 主站時 MBUS_MSG 指令報6號錯誤?
引起6號錯誤主要有兩方面的原因:1.多個 MBUS_MSG 指令同時使能執(zhí)行;2. Modbus庫存儲區(qū)中分配的建議地址區(qū)與編程中已使用的V存儲區(qū)有重疊。
2Modbus RTU從站
S7-200 CPU上的通信口Port0可以支持Modbus RTU協(xié)議,成為Modbus RTU從站。此功能是通過S7-200的自由口通信模式實現(xiàn),因此可以通過無線數(shù)據(jù)電臺等慢速通信設(shè)備傳輸。
詳情請參考《S7-200系統(tǒng)手冊》之相關(guān)章節(jié)。
要實現(xiàn)Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的編程軟件,而且須安裝STEP 7-Micro/WIN32 V3.2 Instruction Library(指令庫)。Modbus RTU功能是通過指令庫中預先編好的程序功能塊實現(xiàn)的。
Modbus RTU從站指令庫只支持CPU上的通信0口(Port0)。
檢查Micro/WIN的軟件版本,應當是STEP 7-Micro/WIN V3.2以上版本。
檢查Micro/WIN的指令樹中是否存在Modbus RTU從站指令庫(圖1),庫中應當包括MBUS_INIT和MBUS_SLAVE兩個子程序。如果沒有,須安裝Micro/WIN32 V3.2的Instruction Library(指令庫)軟件包;
圖1. 指令樹中的庫指令
編程時使用SM0.1調(diào)用子程序MBUS_INIT進行初始化,使用SM0.0調(diào)用MBUS_SLAVE,并相應參數(shù)。關(guān)于參數(shù)的詳細說明,可在子程序的局部變量表中找到;
圖2. 調(diào)用Modbus RTU通信指令庫
圖中參數(shù)意義如下: