一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

西門子s7-200smart modbus-tcp通信實例編程詳細指導(dǎo)

 綜科智控 2020-11-24

西門子S7-200

Modbus-TCP

【】絕密

【】NDA

【X】公開

一、 組網(wǎng)概述

本文以 ZKA-4488-ETH 為例介紹西門子PLC與深圳市綜科智控科技開發(fā)有限公司的IO設(shè)備進行Modbus通訊的步驟設(shè)置。ZKA-4488-ETH 8 路數(shù)字量輸入(DI),8 路數(shù)字量輸出(DO),4路模擬量輸入(AI0/4-20mA),4 路模擬量輸出設(shè)備(AO,0/4-20mA),以太網(wǎng)通信。

ZKA-4488-ETH 為例,出廠默認通訊參數(shù)如下:

ZK模塊 IP 為:192.168.0.105

TCP 端口為:10001

(注意:我們模塊出廠時默認端口為10001,客戶也可以通過ZK模塊的配置文件把ZK通訊端口改成modbus-tcp的默認端口502)

工作模式為:服務(wù)器模式

二、 S7-200 Modbus TCP通信

1 S7-200 Modbus TCP 通信簡介

Modbus 是公開通信協(xié)議,詳細的協(xié)議和規(guī)范,請訪問Modbus 組織的網(wǎng)站:http://www./

Modbus TCP 是通過工業(yè)以太網(wǎng) TCP/IP 網(wǎng)絡(luò)傳輸?shù)?Modbus 通信。S7-200 SMART 采用客戶端-服務(wù)器方法,Modbus 客戶端設(shè)備通過該方法發(fā)起與 Modbus 服務(wù)器設(shè)備的 TCP/IP 連接。

建立連接后,客戶端向服務(wù)器發(fā)出請求,服務(wù)器將響應(yīng)客戶端的請求。客戶端可請求從服務(wù)器設(shè)備讀取部分存儲器,或?qū)⒁欢〝?shù)量的數(shù)據(jù)寫入服務(wù)器設(shè)備的存儲器。如果請求有效,則服務(wù)器將響應(yīng)該請求;如果請求無效,則會回復(fù)錯誤消息。

S7-200 SMART 支持做 Modbus TCP 的客戶端或者服務(wù)器,可以實現(xiàn) PLC 之間通信,也可以實現(xiàn)與支持此通信協(xié)議的第三方設(shè)備通信。通信伙伴數(shù)量比較多的時候,可以使用交換機,擴展以太網(wǎng)接口。

2 Modbus TCP 指令庫

STEP7-Micro/WIN SMART 從V2.4 版本開始,軟件中直接集成 Modbus TCP 庫指令。

安裝軟件后,Modbus TCP 指令位于STEP7-Micro/WIN SMART 項目樹中“指令”文件夾的“庫”文件夾中。如圖2.Modbus TCP庫指令所示。

指令分為客戶端和服務(wù)器兩種,目前指令版本為 V1.0??蛻舳酥噶顣加瞄_放式用戶通信資源主動連接,最多8個;服務(wù)器指令會占用開放式用戶通信資源的被動連接資源,最多也是8個。

圖2.Modbus TCP庫指令

Modbus TCP 客戶端:

Modbus 客戶端指令MBUS_CLIENT使用 CPU 的以下資源:

占用主動連接資源。最多有8個主動連接資源

連接多個服務(wù)器伙伴時,自動生成連接 ID。

Modbus TCP 客戶端使用以下程序?qū)嶓w:

1 個子程序

2849 個字節(jié)的程序空間

V 存儲器的 638 字節(jié)模塊,用于指令符號

Modbus TCP 服務(wù)器:

Modbus 服務(wù)器指令 MBUS_SERVER 使用 CPU 的以下資源

占用被動連接資源。最多有8個被動連接資源

連接多個客戶端伙伴時,自動生成連接 ID。

Modbus TCP 服務(wù)器使用下列程序?qū)嶓w:

1 個子程序

2969 個字節(jié)的程序空間

V 存儲器的 445 字節(jié)模塊,用于指令符號

指令庫編程后,必須從 STEP 7-Micro/WIN SMART 的為使用的指令分配庫存儲區(qū)地址。

3Modbus TCP 功能編程

下面以一臺S7-200 SMART和一臺ZKA-4488-ETH 之間進行Modbus TCP 通信為例,詳細闡述客戶端與服務(wù)器側(cè)如何編程及通信的過程。具體的實驗環(huán)境見表1.;通信任務(wù)見表2

1.實驗環(huán)境

操作系統(tǒng)

WIN7 SP1 專業(yè)版 64

編程軟件

STEP7-Micro/WIN SMART V2.4版本

硬件

CPU SR60:6ES7288-1SR60-0AA0 固件:V2.4 版本

ZKA-4488-ETH:綜科智控4AI+4AO+8DI+8DO以太網(wǎng)modbus-tcp通信

交換機:CSM 127 6GK7 277-1AA10-0AA0

2.通信任務(wù)

硬件

通信角色

IP地址

端口號

/

數(shù)據(jù)區(qū)域

CPU SR60

客戶端

192.168.0.60

0

VB20-VB31

ZKA-4488-ETH

服務(wù)器

192.168.0.105

10001

響應(yīng)

AI1~AI3模擬量采集值

客戶端側(cè)指令編程

1、系統(tǒng)塊中設(shè)置客戶端的IP地址,以確保IP地址設(shè)置無誤。此步驟為可選,如果確定IP地址設(shè)置無誤,可忽略此步驟。設(shè)置方法如圖2.所示。

2.系統(tǒng)塊設(shè)置IP地址

2、鼠標點擊 MAIN 主程序的程序段1的編程區(qū)域,從庫文件夾下找到 Modbus TCP 客戶端指令 MBUS_CLIENT,鼠標雙擊,指令出現(xiàn)在程序段1中,操作如圖3.所示。

3.添加客戶端指令

3、填寫客戶端指令參數(shù),如圖4.所示。

4.填寫客戶端參數(shù)

程序塊具體參數(shù)詳細解釋介紹見表3.

參數(shù)及類型

數(shù)據(jù)類型

說明

Req

IN

BOOL

=1:表示向服務(wù)器發(fā)送Modbus 請求

Connect

IN

BOOL

=1:嘗試與分配的IP地址及端口號建立連接;

=0:嘗試斷開已經(jīng)建立的連接,忽略Req的任何請求

IPAddr1-4

IN

BYTE

填寫 Modbus TCP 服務(wù)器的IP地址IPAddr1-4為高到低字節(jié)

IP_Port

IN

BYTE

填寫Modbus TCP 服務(wù)器的端口號

RW

IN

BYTE

指定操作模式 =0:讀;=1

Addr

IN

DWORD

要進行讀寫的參數(shù)的 Modbus 起始地址,本例中也即ZKA-4488-ETH寄存器地址

Count

IN

INT

要進行讀寫的參數(shù)數(shù)據(jù)長度;

數(shù)字量輸入/輸出Count=1表示1 bit,最大1920

對于模擬量輸入和保持寄存器,最大 Count 值為 120 字。

本例中讀取AI1~AI3模擬輸入的讀數(shù),因為每個AI輸入通道占用2WORD寄存器地址,所以讀取3個通道AI1~AI3就需要讀取6WORD寄存器

DataPtr

IN_OUT

DWORD

數(shù)據(jù)寄存器地址指針,指向本地用于讀/寫操作的數(shù)據(jù)地址區(qū)域的首地址

Done

OUT

BOOL

TRUE:以下任一條件時為真:客戶端已與服務(wù)器建立連接;客戶端已與服務(wù)器斷開連接;客戶端已接收 Modbus 響應(yīng);發(fā)生錯誤

FALSE:客戶端正忙于建立連接或等待來自服務(wù)器的 Modbus 響應(yīng)。

Error

OUT

BOOL

出現(xiàn)錯誤,僅一個周期有效

4、鼠標選中程序塊文件夾,單擊右鍵,下拉菜單中選擇庫存儲器,如圖5.所示。

5.點擊庫存儲器

5、在庫存儲區(qū)分配對話框中手動輸入存儲區(qū)的起始地址。此實例為VB5000開始,以使指令庫可以正常工作。確保庫存儲區(qū)與程序中其他已使用的地址不沖突。使用建議地址無法確定是否有地址重疊,所以推薦手動輸入正確的庫存儲區(qū)首地址。如圖6.所示。

6.庫存儲區(qū)地址分配

6、編譯項目,下載程序。

M0.0置位為1,然后在狀態(tài)圖表中創(chuàng)建變量,VW20-VW30 6個字,監(jiān)視值如圖7.所示。

7.讀取ZKA-4488-ETH的數(shù)據(jù)

4關(guān)于 Modbus TCP協(xié)議及地址

S7-200 SMART Modbus TCP 通信,可以支持的功能碼及功能描述及所占用的地址區(qū),如表4.所示??蛻舳藭鲃拥陌l(fā)送請求,服務(wù)器響應(yīng)。在通信指令填寫參數(shù)中沒有直接填寫功能碼,而是通過多個參數(shù)填寫共同確定功能碼的。

4.功能碼概況說明

功能碼(十進制)

功能描述

RW

Addr

Count

CPU地址

01

讀數(shù)字量輸出

0

00001-09999

1-1920

Q0.0-1151.7

02

讀數(shù)字量輸入

0

10001-19999

1-1920

I0.0-1151.7

03

讀寄存器

0

40001-49999

400001-465535

1-120

V區(qū)

04

讀模擬量輸入

0

30001-39999

1-120

AIW0-AIW110

05

寫數(shù)字量輸出 單個位

1

00001-09999

1

Q0.0-Q1151.7

06

寫寄存器 單個字

1

40001-49999

400001-465535

1個字

V區(qū)

15

寫數(shù)字量輸出 多個位

1

00001-09999

1-1920

Q0.0-1151.7

16

寫寄存器 多個字

1

40001-49999

400001-465535

1-120

V區(qū)

舉例:

Modbus TCP服務(wù)器交換數(shù)據(jù)參數(shù)支持功能碼:03,在客戶端指令中設(shè)置兩個參數(shù)確定03功能碼:

RW=0:確定讀取數(shù)據(jù),(篩選出可能會使用的功能碼:01,02,03,04),

Addr40001-49999/400001-465535,表示交換數(shù)據(jù)為寄存器類型的數(shù)據(jù)。

5 Modbus TCP 常問問題

1、如何判斷Modbus TCP連接是否建立?

答:進行Modbus TCP通信,需要建立連接,

S7-200 SMART CPU作為Modbus TCP客戶端時:通過Modbus TCP Client指令 MBUS_CLIENT 的符號表中的 mConnected 參數(shù)來判斷,如圖1.所示

mConnected=1 表示已經(jīng)建立連接,mConnected=0 表示尚未建立連接

1.mConnected判斷連接狀態(tài)

注意:當PLC內(nèi)存在多個客戶端或者多個服務(wù)器時,不建議參考該狀態(tài)點。

2、如何查看錯誤代碼?

答:出現(xiàn)錯誤時,MBUS_CLIENT指令輸出參數(shù)Done 會為1,但是,Done在連接建立完成,連接斷開,響應(yīng)完成時都會出現(xiàn)置位為1的情況。

出現(xiàn)錯誤時,還有Error字節(jié)會顯現(xiàn)出錯誤代碼,僅保留一個周期時間。

綜上所述,查看錯誤代碼,可以按照圖3.所示的方法進行。

3.查看錯誤代碼

3、進行 Modbus TCP 通信寄存器類型數(shù)據(jù),數(shù)據(jù)量大超過120個字如何處理?

答:如果數(shù)據(jù)量超過120個字,可以進行如下兩種方法操作:

A、建立多個連接,不同連接之間,可以并行操作,因為占用的通信資源不同;

B、建立一個連接,進行多個操作,不同操作之間需要進行輪詢,同一時刻只有一個操作在進行。

4、Modbus TCP通信時,如何訪問地址范圍大于49999 的保持寄存器?

Modbus 保持寄存器地址在 40001 49999 這一范圍內(nèi)。該范圍足以滿足大多數(shù)應(yīng)用的要求,但有些 Modbus 從站設(shè)備將數(shù)據(jù)映射到地址范圍更大的保持寄存器中。 MBUS_CLIENT 指令允許參數(shù) Addr 的附加范圍,以支持 400001 465536 的保持寄存器地址的擴

展范圍。例如,要訪問保持寄存器16768,請將MBUS_CLIENT Addr 參數(shù)設(shè)置為416768。 擴展尋址允許訪問 Modbus 協(xié)議支持的全部 65536 個可能地址。此擴展尋址僅適用于保持寄存器。

5、S7-200 SMART作為 Modbus TCP客戶端, 服務(wù)器為網(wǎng)關(guān)模塊,連接多個 Modbus RTU 設(shè)備時如何區(qū)分 Modbus RTU 從站地址能?

答:S7-200 SMART CPU作為 Modbus TCP 客戶端與 Modbus TCP 服務(wù)器通信,當嘗試訪問比 Modbus TCP 服務(wù)器更低端的串行子網(wǎng)中的設(shè)備,會有報錯 "無法建立連接"。如果 Modbus TCP 服務(wù)器用于 Modbus RTU 協(xié)議的網(wǎng)關(guān),則 MB_UNIT_ID 可用于識別串行網(wǎng)

絡(luò)上連接的從站設(shè)備。MB_UNIT_ID用于將請求轉(zhuǎn)發(fā)到正確的Modbus RTU 從站地址。一些Modbus TCP 設(shè)備可能要求MB_UNIT_ID 參數(shù)在限制范圍內(nèi)。該參數(shù)所在位置,如圖4.所示

mModbusUnitID默認值為25516#FF,如果從站設(shè)備有多個,可以S7-200 SMART 和網(wǎng)關(guān)模塊建立一個連接,在這個連接上通過修改UnitID的值進行UnitID的輪詢。

4.mModbusUnitID

6、對于一些服務(wù)器不支持寫單個數(shù)字量輸出位(功能碼 5/單個保持寄存器(功能碼 6),S7-200 SMART 如何實現(xiàn)寫單個位/字。

答:一些 Modbus 服務(wù)器設(shè)備不支持 Modbus 功能寫入單個離散輸出位(Modbus 功能 5)或?qū)懭雴蝹€保持寄存器(Modbus 功能 6)。相反,這些設(shè)備只支持多位寫入(Modbus 功能 15)或多寄存器寫入(Modbus 功能 16)。如果服務(wù)器設(shè)備不支持單個位/ Modbus

功能,則 MBUS_CLIENT 指令將返回錯誤代碼 1。Modbus 客戶端協(xié)議允許強制 MBUS_CLIENT 指令使用多個位/ Modbus 功能,而非使用單個位/ Modbus 功能??赏ㄟ^在 Modbus 客戶端符號表中查找符號 mModbusForceMulti,并在程序執(zhí)行 MBUS_CLIENT 之前

更改此值,來強制多個位/字指令。將 mModbusForceMulti 設(shè)置為 TRUE,可在寫入單個位或寄存器時強制使用多個位/字功能。如圖5.所示。

5. mModbusForceMulti

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91免费精品国自产拍偷拍| 风韵人妻丰满熟妇老熟女av| 色婷婷视频国产一区视频| 欧美六区视频在线观看| 中文字幕日韩一区二区不卡| 亚洲综合伊人五月天中文| 欧美夫妻性生活一区二区| 国产亚洲精品久久99| 欧美日韩中国性生活视频 | 九九热视频网在线观看| 免费观看日韩一级黄色大片| 亚洲综合一区二区三区在线 | 日本女优一区二区三区免费| 欧美黑人在线一区二区| 五月的丁香婷婷综合网| 久久精品国产99国产免费| 午夜激情视频一区二区| 日韩黄色一级片免费收看| 午夜视频成人在线免费| 欧美精品中文字幕亚洲| 福利在线午夜绝顶三级| 人妻久久这里只有精品| 成人午夜视频在线播放| 婷婷色国产精品视频一区| 国产av熟女一区二区三区蜜桃| 亚洲清纯一区二区三区| 中文字幕精品一区二区三| 日韩精品你懂的在线观看| 欧美日韩一区二区午夜| 色婷婷成人精品综合一区| 自拍偷女厕所拍偷区亚洲综合| 四季精品人妻av一区二区三区| 人妻内射在线二区一区| 久久99青青精品免费观看| 亚洲国产av在线观看一区| 国产欧美精品对白性色| 国产不卡视频一区在线| 午夜精品黄片在线播放| 欧美不雅视频午夜福利| 国产主播精品福利午夜二区| 亚洲天堂国产精品久久精品|