S7-200通過自由口連接MODBUS設備

作(zuò)者:管理(lǐ)員 點擊:16433次 發布時間:2022-10-14

軟件安(ān)裝(zhuāng)

首先安(ān)裝(zhuāng)STEP7 Micro/WIN V4.0 SP5及以上版本軟件,然後安(ān)裝(zhuāng)S7-200 MODBUS指令集,名(míng)稱為(wèi)Inst_Library_V11

硬件要求

Modbus RTU 主站庫對CPU的版本有(yǒu)要求。CPU 的版本必須為(wèi) 2.00 或者 2.01(即訂貨号為(wèi) 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。

S7-200通過自由口MODBUS連接

接線(xiàn)方法如下

圖片1.png

西門子在 Micro/WIN V4.0 SP5 中(zhōng)正式推出 Modbus RTU 主站協議庫(西門子标準庫指令)。

圖片2.png 1. 西門子标準指令庫(Micro/WIN V4.0 SP5)

注意:
1. Modbus RTU 主站指令庫的功能(néng)是通過在用(yòng)戶程序中(zhōng)調用(yòng)預先編好的程序功能(néng)塊實現的,該庫對 Port 0 Port 1 有(yǒu)效。該指令庫将設置通信口工(gōng)作(zuò)在自由口模式下。
2. Modbus RTU 主站指令庫使用(yòng)了一些用(yòng)戶中(zhōng)斷功能(néng),編其他(tā)程序時不能(néng)在用(yòng)戶程序中(zhōng)禁止中(zhōng)斷。
3. Modbus RTU 主站庫對CPU的版本有(yǒu)要求。CPU 的版本必須為(wèi) 2.00 或者 2.01(即訂貨号為(wèi) 6ES721****23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。

使用(yòng) Modbus RTU 主站指令庫,可(kě)以讀寫 Modbus RTU 從站的數字量、模拟量 I/O 以及保持寄存器。

要使用(yòng) Modbus RTU 主站指令庫,須遵循下列步驟:

1. 安(ān)裝(zhuāng)西門子标準指令庫

2. 按照要求編寫用(yòng)戶程序調用(yòng) Modubs RTU 主站指令庫

Modbus RTU 主站功能(néng)編程

1. 調用(yòng) Modbus RTU 主站初始化和控制子程序

使用(yòng) SM0.0 調用(yòng) MBUS_CTRL 完成主站的初始化,并啓動其功能(néng)控制:

圖片3.png

2. 用(yòng) SM0.0 調用(yòng) Modbus RTU 主站初始化與控制子程序

各參數意義如下:

a) EN  使能(néng): 必須保證每一掃描周期都被使能(néng)(使用(yòng) SM0.0

b) Mode 模式: 為(wèi) 1 時,使能(néng) Modbus 協議功能(néng);為(wèi) 0 時恢複為(wèi)系統 PPI 協議

c) Baud   波特率: 支持的通訊波特率為(wèi)1200240048009600192003840057600115200

d) Parity 校驗: 校驗方式選擇   0=無校驗 1=奇較驗 2=偶較驗  

e) Timeout 超時: 主站等待從站響應的時間,以毫秒(miǎo)為(wèi)單位,典型的設置值為(wèi) 1000 毫秒(miǎo)(1 秒(miǎo)),允許設置的範圍為(wèi) 1 - 32767。   

注意: 這個值必須設置足夠大以保證從站有(yǒu)時間響應。

f) Done完成位: 初始化完成,此位會自動置1。可(kě)以用(yòng)該位啓動 MBUS_MSG 讀寫操作(zuò)

g) Error  初始化錯誤代碼(隻有(yǒu)在 Done 位為(wèi)1時有(yǒu)效):

0= 無錯誤

1= 校驗選擇非法

2= 波特率選擇非法

3= 模式選擇非法

2. 調用(yòng) Modbus RTU 主站讀寫子程序MBUS_MSG,發送一個Modbus 請求;

圖片4.png

3. 調用(yòng)Modbus RTU 主站讀寫子程序

各參數意義如下:

a) EN 使能(néng): 同一時刻隻能(néng)有(yǒu)一個讀寫功能(néng)(即 MBUS_MSG)使能(néng)

注意:建議每一個讀寫功能(néng)(即 MBUS_MSG)都用(yòng)上一個 MBUS_MSG 指令的 Done 完成位來激活,以保證所有(yǒu)讀寫指令循環進行(見例程)。

b) First 讀寫請求位: 每一個新(xīn)的讀寫請求必須使用(yòng)脈沖觸發  

c) Slave 從站地址: 可(kě)選擇的範圍   1  247

d) RW 從站地址: 0 = 讀, 1 = 寫

   注意: 開關量輸出和保持寄存器支持讀和寫功能(néng)

輸入和模拟量輸入隻支持讀功能(néng)

e) Addr 讀寫從站的 選擇讀寫的數據類型

數據地址: 00001 0xxxx - 開關量輸出

10001 1xxxx - 開關量輸入

30001 3xxxx - 模拟量輸入

40001 4xxxx - 保持寄存器

f) Count 數據個數 通訊的數據個數(位或字的個數)

注意: Modbus主站可(kě)讀/寫的最大數據量為(wèi)120個字(是指每一個 MBUS_MSG 指令)

g) g. DataPtr 數據指針: 如果是讀指令,讀回的數據放到這個數據區(qū)中(zhōng)

          如果是寫指令,要寫出的數據放到這個數據區(qū)中(zhōng)

h) Done 完成位 讀寫功能(néng)完成位

i) Error 錯誤代碼: 隻有(yǒu)在 Done 位為(wèi)1時,錯誤代碼才有(yǒu)效

0 = 無錯誤

1 = 響應校驗錯誤

2 = 未用(yòng)

3 = 接收超時(從站無響應)

4 = 請求參數錯誤(slave address, Modbus address, count, RW

5 Modbus/自由口未使能(néng)  

6 Modbus正在忙于其它請求

7 = 響應錯誤(響應不是請求的操作(zuò))

8 = 響應CRC校驗和錯誤

-

101 = 從站不支持請求的功能(néng)

102 = 從站不支持數據地址

103 = 從站不支持此種數據類型

104 = 從站設備故障

105 = 從站接受了信息,但是響應被延遲

106 = 從站忙,拒絕了該信息

107 = 從站拒絕了信息

108 = 從站存儲器奇偶錯誤

常見的錯誤:

· 如果多(duō)個 MBUS_MSG 指令同時使能(néng)會造成 6 号錯誤

· 從站 delay 參數設的時間過長(cháng)會造成主站 3 号錯誤

· 從站掉電(diàn)或不運行,網絡故障都會造成主站 3 号錯誤

3. 在 CPU 的 V 數據區(qū)中(zhōng)為(wèi)庫指令分(fēn)配存儲區(qū)(Library Memory)

Modbus Master 指令庫需要一個284個字節的全局 V 存儲區(qū)。

1.如下圖所示在程序塊上點擊右鍵選擇庫内存區(qū)

圖片5.png

2.出現對話框,分(fēn)配一個大小(xiǎo)為(wèi)284的存儲區(qū)域。注意:不要與别的存儲區(qū)域相沖突。

圖片6.png

Modbus RTU 主站協議庫的補充說明

此為(wèi)西門子正式推出的标準庫指令說明資料。

Modbus RTU Master 協議和 PPI 協議之間切換:

Modbus RTU Master 協議指令庫使通信口工(gōng)作(zuò)在自由口模式下,此時不能(néng)與 Micro/WIN 軟件通信。要在切換回 PPI 協議,可(kě)以:

·  MBUS_CTRL 指令的 Mode 輸入端設置為(wèi)邏輯“0”

·  CPU 的允許模式選擇開關置為(wèi) STOP 位置

Modbus RTU Master 協議庫的執行時間:

Modbus RTU Master 協議庫的 MBUS_CTRL 指令不需要很(hěn)長(cháng)的執行時間。MBUS_需要 1.11 ms 用(yòng)于初始化,在後續的每個掃描周期中(zhōng)隻占用(yòng) 0.41 ms。

調用(yòng) MBUS_MSG 子程序會加長(cháng)處理(lǐ)時間。大部分(fēn)時間都用(yòng)于 CRC 校驗的計算。每讀、寫一個字的數據就需要 1.85 ms 掃描時間。數據最多(duō)的情況下(讀、寫 120 字的數據),掃描時間大概會擴增加 222 ms。讀操作(zuò)的時間主要消耗在接收數據上;寫操作(zuò)的時間主要消耗在發送數據上。

Modbus 地址

通常 Modbus 地址由 5 位數字組成,包括起始的數據類型代号,以及後面的偏移地址。Modbus Master 協議庫把标準的 Modbus 地址映射為(wèi)所謂 Modbus 功能(néng)号,讀寫從站的數據。Modbus Master 協議庫支持如下地址:

· 00001 - 09999:數字量輸出( 線(xiàn)圈)

· 10001 - 19999:數字量輸入(觸點)

· 30001 - 39999:輸入數據寄存器(通常為(wèi)模拟量輸入)

· 40001 - 49999:數據保持寄存器

Modbus Master 協議庫支持的功能(néng)

為(wèi)了支持上述 Modbus 地址的讀寫,Modbus Master 協議庫需要從站支持下列功能(néng):

1. 需要從站支持的功能(néng)

Modbus 地址

/寫

Modbus 從站須支持的功能(néng)

00001 - 09999
數字量輸出

   讀

功能(néng) 1

   寫

功能(néng) 5:寫單輸出點
功能(néng) 15:寫多(duō)輸出點

10001 - 19999
數字量輸入

   讀

功能(néng) 2

   寫

30001 - 39999
輸入寄存器

   讀

功能(néng) 4

   寫

40001 - 49999
保持寄存器

   讀

功能(néng) 3

   寫

功能(néng) 6:寫單寄存器單元
功能(néng) 16:寫多(duō)寄存器單元

Modbus 地址和 S7-200 存儲區(qū)地址的映射

S7-200 通過 Modbus Master 和 Slave 協議庫通信時,Modbus 地址和 S7-200 内存儲區(qū)地址的 映射關系都類似。

Modbus 保持寄存器地址映射舉例:

Modbus 保持寄存器地址

40001     12 34  

40002     56 78  

40003     9A BC  

S7-200 存儲區(qū)字尋址

VW200     12 34  

VW202     56 78  

VW204     9A BC  

 S7-200 存儲區(qū)字節尋址

VB200     12

VB201     34

VB202     56

VB203     78

VB204     9A

VB205     BC

Modbus 數字量地址映射舉例:

位地址(0xxxx 和 1xxxx)數據總是以字節為(wèi)單位打包讀寫。第一個字節中(zhōng)的最低有(yǒu)效位對應 Modbus 地址的起始地址。如下圖所示:

圖片7.png

MODBUS從站

西門子Modbus從站協議庫包括兩條指令:MBUS_INIT 指令和MBUS_SLAVE 指令。•MBUS_INIT 指令用(yòng)于啓用(yòng)和初始化或禁止Modbus通訊。

•MBUS_SLAVE 指令用(yòng)于為(wèi)Modbus主設備發出的請求服務(wù)。

•MBUS_INIT 指令用(yòng)于啓用(yòng)和初始化或禁止Modbus從站通訊。在使用(yòng)MBUS_SLAVE 指令之前,必須正确執行MBUS_INIT 指令。指令完成後立即設定完成位,才能(néng)繼續執行下一條指令。

圖片8-Edit.jpg

MBUS_INIT 指令說明:

•EN:指令使能(néng)位。•Mode:模式選擇,啓動/停止Modbus從站通信。Mode 參數允許使用(yòng)以下兩個數值:1——啓動,0——停止。

•Address:從站地址,MODBUS從站地址,取值1~247

•Baud:波特率,可(kě)選1200240048009600192003840057600115200•Parity:奇偶校驗,0=無校驗;1=奇校驗;2=偶校驗。

•Delay:延時,附加字符間延時,缺省值為(wèi)0

•MaxIQ:最大I/Q位,參與通信的最大I/O點數,S7-200I/O映像區(qū)為(wèi)128/128,缺省值為(wèi)128

•MaxAI:最大AI字數,參與通信的最大AI通道數,可(kě)為(wèi)1632

•MaxHold:設定供Modbus地址4xxxx使用(yòng)的V存儲器中(zhōng)的字保持寄存器數目。

•HoldStart:保持寄存器區(qū)起始地址,以&VBx指定(間接尋址方式)。

•Done:初始化完成标志(zhì),成功初始化後置1

•Error:初始化錯誤代碼。

{"時延"參數通過将指定的毫秒(miǎo)數增加至标準Modbus信息超時的方法延長(cháng)标準Modbus信息結束超時條件。該參數的典型數值在有(yǒu)線(xiàn)網絡上應為(wèi)0。如果您在使用(yòng)帶有(yǒu)糾錯功能(néng)的調制解調器,将時延設為(wèi)50100毫秒(miǎo)的數值。如果您在使用(yòng)擴展頻譜無線(xiàn)電(diàn),将時延設為(wèi)10100毫秒(miǎo)的數值。"時延"數值可(kě)以是032767毫秒(miǎo)。

MaxIQ參數将供Modbus地址00xxxx01xxxx使用(yòng)的IQ點數設為(wèi)0128之間的數值。數值0禁止所有(yǒu)向輸入和輸出的讀取。建議使用(yòng)的MaxIQ數值是128,該數值可(kě)在S7-200中(zhōng)存取所有(yǒu)的IQ點。

 

MaxAI參數将供Modbus地址03xxx使用(yòng)的字輸入(AI)寄存器數目設為(wèi)032之間的數值。數值0禁止模拟輸入的讀數。建議使用(yòng)的MaxAI數值如下,這些數值可(kě)允許存取所有(yǒu)的S7-200模拟輸入:

 

*0用(yòng)于CPU 221

*16用(yòng)于CPU 222

*32用(yòng)于CPU 224226226XM

 

MaxHold參數設定供Modbus地址04xxx使用(yòng)的V内存中(zhōng)的字保持寄存器數目。例如,為(wèi)了允許主設備存取2000個字節的V内存,将MaxHold設為(wèi)1000個字的數值(保持寄存器)。

 

HoldStart參數是V内存中(zhōng)保持寄存器的起始地址。該數值一般被設為(wèi)VB0,因此HoldStart參數被設為(wèi)&VB0VB0地址)。其他(tā)V内存地址可(kě)指定為(wèi)保持寄存器的起始地址,以便在項目的其他(tā)地方使用(yòng)VB0Modbus主設備可(kě)存取V内存MaxHold個字數,從HoldStart開始。

MBUS_INIT指令完成時,"完成"輸出打開。"錯誤"輸出字節包含執行指令的結果。請參閱Modbus從屬協議執行錯誤代碼中(zhōng)可(kě)能(néng)因執行指令而産(chǎn)生的錯誤條件。

 

MBUS_SLAVE指令被用(yòng)于為(wèi)Modbus主設備發出的請求服務(wù),并且必須在每次掃描時執行,以便允許該指令檢查和回答(dá)Modbus請求。在每次掃描且EN輸入開啓時執行該指令。MBUS_SLAVE指令無輸入參數。當MBUS_SLAVE指令對Modbus請求作(zuò)出應答(dá)時,"完成"輸出打開。如果沒有(yǒu)需要服務(wù)的請求時,"完成"輸出關閉。"錯誤"輸出包含執行該指令的結果。該輸出隻有(yǒu)在"完成"打開時才有(yǒu)效。如果"完成"關閉,錯誤參數不會改變。請參閱Modbus從屬協議執行錯誤代碼中(zhōng)可(kě)能(néng)因執行該指令而導緻的錯誤條件。}

錯誤代碼

說明

0

無錯誤

1

内存範圍錯誤

2

非法波特率或奇偶校驗

3

非法從屬地址

4

非法Modbus參數值

5

保持寄存器與Modbus從屬符号重疊

6

收到奇偶校驗錯誤

7

收到CRC錯誤

8

非法功能(néng)請求/功能(néng)不受支持

9

請求中(zhōng)的非法内存地址

10

從屬功能(néng)未啓動

MBUS_SLAVE 指令說明:

MBUS_SLAVE 指令被用(yòng)于為(wèi)Modbus主設備發出的請求服務(wù),并且必須在每次掃描時執行,以便允許該指令檢查和回答(dá)Modbus請求。MBUS_SLAVE 指令無輸入參數,在每次掃描且EN 輸入開啓時執行。

•EN:指令使能(néng)位。

•DoneModbus執行通信中(zhōng)時置1,無MODBUS 通信活動時為(wèi)0

•Error:錯誤代碼。

錯誤代碼

說明

0

無錯誤

1

内存範圍錯誤

2

非法波特率或奇偶校驗

3

非法從屬地址

4

非法Modbus參數值

5

保持寄存器與Modbus從屬符号重疊

6

收到奇偶校驗錯誤

7

收到CRC錯誤

8

非法功能(néng)請求/功能(néng)不受支持

9

請求中(zhōng)的非法内存地址

10

從屬功能(néng)未啓動


常見問題
Modbus RTU 主站庫對 CPU 的版本确實有(yǒu)要求,CPU 的版本必須為(wèi) 2.00 或者 2.01(即訂貨号為(wèi)6ES721*-***23-0BA*),1.22 版本之前(包括 1.22 版本)的 S7-200 CPU 不支持。
Modbus RTU 主站庫對 CPU 的版本是否有(yǒu)要求,為(wèi)什麽編譯例子程序時,會遇到 4 個錯誤?

Modbus 指令庫啓動後,如何通過同一個通信端口進行 CPU 監控?

Modbus 指令庫使用(yòng)的是 CPU 的自由口通信功能(néng),工(gōng)作(zuò)在自由口模式下的通訊口不能(néng)使用(yòng) Micro/WIN 的 PPI 編程通信監控。如果通信口都已經被占用(yòng),可(kě)以考慮:

· 加一個通信模塊(如 EM 277、CP 243-1、EM 241 等)擴展出一個編程通信口

· 中(zhōng)止自由口模式,可(kě)以将 CPU 上的模式開關從 RUN 撥到 STOP;或者保持處于 RUN 狀态,用(yòng)程序停止指令庫的 Modbus 模式(參見指令庫應用(yòng))

如何理(lǐ)解 Modbus 地址與功能(néng)碼的區(qū)别?

Modbus 地址與 Modbus 的功能(néng)碼是兩個層次的概念。

根據 Modbus 通信協議,Modbus 數據的地址使用(yòng) 0xxxx、1xxxx、3xxxx 和 4xxxx 的形式,分(fēn)别表示數字量輸出、數字量輸入、模拟量輸入等數據地址。在使用(yòng) S7-200 的指令庫時,Modbus 數據地址與 S7-200 的 I/O 和數據存儲區(qū)地址間有(yǒu)特定的對應關系。

有(yǒu)些設備表明它支持 Modbus RTU 通信協議,但也詳細提供了讀寫數據的詳細通信幀格式,其中(zhōng)包括如何指定 Modbus 站的地址,需要讀寫數據類型、長(cháng)度等等。數據幀有(yǒu)特定字節指出此指令讀寫的數據類型和地址,此字節的數據内容即所謂“功能(néng)碼”,如功能(néng) 1 指定讀取單個/多(duō)個數字量輸出點的值。

支持 Modbus 協議的設備或軟件,使用(yòng)時用(yòng)戶直接設置或看到的應當是 Modbus 數據地址。Modbus 地址所訪問的數據,是通過各種“功能(néng)”讀寫而來。功能(néng)碼是 Modbus 地址的底層。如果 Modbus 通信的一方提供的所謂 Modbus 協議隻有(yǒu)功能(néng)碼,則需要注意了解此功能(néng)号與 Modbus 地址間的對應關系。

如何訪問大于 9999 的保持寄存器地址?

通常 Modbus 協議的保持寄存器地址範圍在 40001 - 49999 之間。對于多(duō)數應用(yòng)來說已經夠了。但有(yǒu)些 Modbus 從站把地址映射到保持寄存器區(qū)的地址超過 9999 的部分(fēn)。

Modbus Master 協議庫支持超過 9999 的保持寄存器地址。地址範圍為(wèi) 400001 - 465536。隻需在調用(yòng) MBUS_MSG 子程序時給 Addr 參數賦相應的值即可(kě),如 416768。

Modubs Master 擴展地址模式僅支持保持寄存器區(qū),不支持其他(tā)地址類型。



德(dé)陽旭捷科(kē)技(jì )有(yǒu)限公(gōng)司

农田丰满艳肉妇HD 韩漫漫画免费阅读看漫画下拉 国产永久精品大片WWWAPP 狗和人胶配方20分钟 娇妻裸体交换俱乐部61 一面亲一面膜下最新版 9I传媒有限公司 成全电影大全在线观看高清免费播放下载 十九岁在线观看免费完整版国语版 图书馆的女朋友 夫洗澡公强我了60分钟 男生女生一起嗟嗟嗟情趣 免费99精品国产自在在线 娇妻被邻居灌满精H催眠 人妻换人妻互换A片爽文 被沦番CAO哭的清冷美人 三年片高清免费观看完整版 www.黄色 成全电影大全免费观看完整版国语 多人灌满精子怀孕高H 漂亮人妻沦陷按摩2 中国东方XXXXXLMEDJYFBD 四虎影音 人妻出轨系列38部分阅读 辣妹子影院电视剧免费播放视频 成人交性视频免费看 《疯狂农场3》免费观看 私人影院家庭影院 公与淑婷厨房猛烈进出演员表 大地资源二中文在线观看官网 亚洲中文字幕在线观看 韩产日产国产欧产 叔叔别撩我免费观看电视剧 青青河边草免费观看字幕 丰满熟妇大号BBWBBWBBW 成全电影大全在线观看高清免费播放下载 脔到她哭H粗话H好爽小黄鸭视频 琪琪伦伦影院理论片 八戒八戒高清影视剧大全 琪琪伦伦影院理论片 女人脱了裤衩让男人捅 三年片免费观看影视大全视频 玩弄寡妇丰满肉体 久久久久97国产精华液好用吗 久久久久亚洲AV色欲AV 少妇性BBB搡BBB爽爽爽视頻 被粗大黑人JIB捣出了白浆 1—40集电视剧免费观看在线播放 成全世界免费高清观看 同性男男GAY片在线观看播放 雪迷宫电视剧在线观看免费 最好看的2018中文免费看 玉漱公主被肉干高H潮文不断 高潮毛片又色又爽免费 日本欧美久久久久免费播放网 越南少妇做受XXX片 中国东方XXXXXLMEDJYFBD 和妈妈走亲戚睡一间房好吗 互换人妻HD中字 女人性做爰100部免费 国精产品一区一区三区有限是什么 欧美熟妇大荫蒂高潮视频 欲妇荡岳100篇 私人生活艾伦里克曼 老女人做爰全过程免费的视频 疯狂试爱三 精品人妻少妇嫩草AV无码专区 不戴奶罩的邻居HD中文 欧美性猛交XXXXX无码婷 野外做受又硬又粗又大视频√ 欧洲尺码日本尺码专线不卡顿 亚洲无码在线播放 密室大逃脱第6季免费观看完整版 少妇2做爰伦理 你老婆真棒多CP 国产精品久久久久久 姑娘第8集在线观看免费播放 午夜福利视频 免费观看国语高清电视剧 欧美片巜欲性高