modbustcpclient事例_第1頁
modbustcpclient事例_第2頁
modbustcpclient事例_第3頁
modbustcpclient事例_第4頁
modbustcpclient事例_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一、MB_CLIENT 介紹說明“MB_CLIENT”指令作為 Modbus TCP 客戶端通過 S7-1200 CPU 的 PROFINET 連接進行通信。 使用該指令,無需其它任何硬件模塊。 通過“MB_CLIENT”指令,可以在客戶端和服務(wù)器之間建立連接、發(fā)送請求、接收響應(yīng)并控制 Modbus TCP 服務(wù)器的連接終端。參數(shù)下表列出了指令“MB_CLIENT”的參數(shù):參數(shù)聲明數(shù)據(jù)類型說明REQ InputBOOL與 Modbus TCP 服務(wù)器之間的通信請求REQ 參數(shù)受到等級控制。 這意味著只要設(shè)置了輸入 (REQ=true),指令就會發(fā)送通信請求。其它客戶端背景數(shù)據(jù)塊的通信請求被阻止

2、。 在服務(wù)器進行響應(yīng)或輸出錯誤消息之前,對輸入?yún)?shù)的更改不會生效。 如果在請求期間再次設(shè)置了參數(shù) REQ,此后將不會進行任何其它傳輸。DISCONNECT InputBOOL通過該參數(shù),可以控制與 Modbus 服務(wù)器建立和終止連接:0: 建立與指定 IP 地址和端口號的通信連接。1: 斷開通信連接。 在終止連接的過程中,不執(zhí)行任何其它功能。 成功終止連接后,STATUS 參數(shù)將輸出值 7003。而如果在建立連接的過程中設(shè)置了參數(shù) REQ,將立即發(fā)送請求。CONNECT_IDInputUINT確定連接的唯一 ID。 指令“MB_CLIENT”和“MB_SERVER”的每個實例都必須指定一個唯一

3、的連接 ID。IP_OCTET_1InputUSINT1. Modbus TCP 服務(wù)器 IP 地址* 中的八位字節(jié)。IP_OCTET_2InputUSINT2. Modbus TCP 服務(wù)器 IP 地址* 中的八位字節(jié)。IP_OCTET_3InputUSINT3. Modbus TCP 服務(wù)器 IP 地址* 中的八位字節(jié)。IP_OCTET_4InputUSINT4. Modbus TCP 服務(wù)器 IP 地址* 中的八位字節(jié)。IP_PORTInputUINT服務(wù)器上使用 TCP/IP 協(xié)議與客戶端建立連接和通信的 IP 端口號(默認值: 502).MB_MODE InputUSINT選擇請求模

4、式(讀取、寫入或診斷)。MB_DATA_ADDR InputUDINT由“MB_CLIENT”指令所訪問數(shù)據(jù)的起始地址。DATA_LENInputUINT數(shù)據(jù)長度: 數(shù)據(jù)訪問的位數(shù)或字數(shù)(請參見“MB_MODE 和 MB_DATA_ADDR 參數(shù)” - 數(shù)據(jù)長度)。 MB_DATA_PTRInOutVARIANT指向 Modbus 數(shù)據(jù)寄存器的指針: 寄存器是用于緩存從 Modbus 服務(wù)器接收的數(shù)據(jù)或?qū)l(fā)送到 Modbus 服務(wù)器的數(shù)據(jù)的緩沖區(qū)。 該指針必須引用具有標準訪問權(quán)限的全局數(shù)據(jù)塊。尋址到的位數(shù)必須除以 8。DONEOutBOOL只要最后一個作業(yè)成功完成,立即將輸出參數(shù) DONE 的

5、位置位為“1”。 BUSYOutBOOL0: 當前沒有正在處理的“MB_CLIENT ”作業(yè)1: MB_ CLIENT ”作業(yè)正在處理中ERROROutBOOL0: 無錯誤1: 出錯。 出錯原因由參數(shù) STATUS 指示。STATUS OutWORD指令的錯誤代碼。* Modbus TCP 服務(wù)器 32 位 IPv4 IP 地址 中的 8 位長度的部分。有關(guān)有效數(shù)據(jù)類型的更多信息,請參見“有效數(shù)據(jù)類型概述”。說明 “MB_CLIENT”調(diào)用過程中統(tǒng)一輸入數(shù)據(jù)Modbus 客戶端調(diào)用 Modbus 指令時,輸入?yún)?shù)的狀態(tài)將存儲在內(nèi)部,并在下一次調(diào)用時比較。 這種比較用于確定這一特定調(diào)用是否初始化

6、當前請求。 如果使用一個通用背景數(shù)據(jù)塊,那么可以執(zhí)行多個“MB_CLIENT”調(diào)用。 在執(zhí)行“MB_CLIENT”實例的過程中,不得更改輸入?yún)?shù)的值。 如果在執(zhí)行過程中更改了輸入?yún)?shù),那么將無法使用“MB_CLIENT”檢查實例當前是否正在執(zhí)行。多個客戶端連接Modbus TCP 客戶端可以支持多個 TCP 連接,連接的最大數(shù)目取決于所使用的 CPU。 一個 CPU 的總連接數(shù),包括 Modbus TCP 客戶端和服務(wù)器的連接數(shù),不能超過所支持的最大連接數(shù)。 Modbus TCP 連接也可以由客戶端和/或服務(wù)器連接共享。使用各客戶端連接時,請記住以下規(guī)則:每個“MB_CLIENT”連接都必須使

7、用唯一的背景數(shù)據(jù)塊。對于每個“MB_CLIENT”連接,必須指定唯一的服務(wù)器 IP 地址。每個“MB_CLIENT”連接都需要一個唯一的連接 ID。該指令的各背景數(shù)據(jù)塊都必須使用各自相應(yīng)的連接 ID。 連接 ID 與背景數(shù)據(jù)塊組合成對,對每個連接,組合對都必須唯一。根據(jù)服務(wù)器組態(tài),可能需要或不需要 IP 端口的唯一編號。該指令的靜態(tài)變量下表列出了“MB_CLIENT”指令背景數(shù)據(jù)塊的可編輯靜態(tài)變量。變量數(shù)據(jù)類型起始值說明Blocked_Proc_TimeoutREAL3.0如果有一個被阻止的 Modbus 實例,則為復(fù)位靜態(tài)變量 ACTIVE 前的等待時間(單位為秒)。 例如,如果輸出了一個客

8、戶端請求,而且在該請求完全執(zhí)行之前中止執(zhí)行客戶端功能,則可能發(fā)生這種情況。 最大等待時間為 55 秒。MB_Transaction_IDWORD1Modbus TCP 協(xié)議的事務(wù) ID。 只有在 Modbus TCP 服務(wù)器需要一個不同值的情況下,才能更改起始值“1”。MB_Unit_IDBYTE255Modbus 協(xié)議的單元 ID。 該變量對應(yīng)于 Modbus RTU 協(xié)議的從站地址。 只有在將 Modbus TCP 服務(wù)器用作一個網(wǎng)關(guān),同時由 Modbus 服務(wù)器中應(yīng)用程序進行控制時,才能更改此值。RCV_TIMEOUTREAL2.0“MB_CLIENT”指令等待服務(wù)器響應(yīng)的時間間隔(單位

9、為秒)。ConnectedBOOL0指示是否已建立與所指定客戶端的連接: 1 = 已連接,0 = 未連接。二、REQ 和 DISCONNECT 參數(shù)說明如果當前未執(zhí)行“MB_CLIENT”指令的實例,并且 DISCONNECT 參數(shù)的值為“0”,那么將在 REQ = 1 時執(zhí)行新作業(yè)。如果尚無連接,將在執(zhí)行期間建立一個連接。如果在執(zhí)行該活動作業(yè)之前再次執(zhí)行“MB_CLIENT”指令的相同實例(DISCONNECT = 0 且 REQ = 1),那么不會在活動作業(yè)完成時執(zhí)行該實例。 只有在活動作業(yè)完成時,才能啟動新作業(yè) (REQ = 1)??梢允褂?DONE 參數(shù)監(jiān)視執(zhí)行狀態(tài)。 如果順序執(zhí)行“M

10、B_CLIENT”指令,那么可以使用該參數(shù)監(jiān)視執(zhí)行狀態(tài)。三、MB_MODE 和 MB_DATA_ADDR 參數(shù)說明“MB_CLIENT”指令將使用 MB_MODE 參數(shù),而不是函數(shù)代碼。 MB_DATA_ADDR 參數(shù)用于指定待訪問的數(shù)據(jù)的 Modbus 起始地址。 MB_MODE 和 MB_DATA_ADDR 參數(shù)的組合定義了當前 Modbus 消息中所使用的函數(shù)代碼。 下表列出了 MB_MODE 參數(shù)、Modbus 功能和地址空間之間的關(guān)系。MB_MODEModbus 功能數(shù)據(jù)長度功能和數(shù)據(jù)類型MB_DATA_ADDR0011 到 2000讀取輸出位: 每個調(diào)用 1 到 2000 位1 到

11、 99990021 到 2000讀取輸入位: 每個調(diào)用 1 到 2000 位10001 到 199990031 到 125讀取保持寄存器: 每個調(diào)用 1 到 125 WORD40001 到 499990041 到 125讀取輸入字: 每個調(diào)用 1 到 125 WORD30001 到 399991051寫入輸出位:每個調(diào)用 1 位1 到 99991061寫入保持寄存器: 1 WORD 每個調(diào)用40001 到 49999 1152 到 1968寫入多個輸出位: 每個調(diào)用 2 到 1968 位1 到 99991162 到 123寫入多個保持寄存器:每個調(diào)用 2 到 123 WORD40001 到 4

12、9999 2 151 到 1968寫入一個或多個輸出位:每個調(diào)用 1 到 1968 位1 到 9999216 1 到 123寫入一個或多個保持寄存器: 每個調(diào)用 1 到 123 WORD40001 到 49999 11110讀取服務(wù)器通信的狀態(tài)字和事件計數(shù)器:狀態(tài)字反映了處理的狀態(tài)(0 - 未處理,0xFFFF - 正在處理)每次成功發(fā)送一條消息時,事件計數(shù)器都將遞增。執(zhí)行該功能時,將不計算“MB_CLIENT”指令的 MB_DATA_ADDR 和 MB_DATA_LEN 參數(shù)。-80 08 1通過錯誤代碼 0x0000 檢查服務(wù)器狀態(tài)(返回循環(huán)測試 - 服務(wù)器發(fā)回請求):1 WORD 每個調(diào)

13、用-81081通過錯誤代碼 0x000A 復(fù)位服務(wù)器的事件計數(shù)器:1 WORD 每個調(diào)用3 到 10、12 到 79、82 到 255預(yù)留四、MB_DATA_PTR 參數(shù)說明MB_DATA_PTR 參數(shù)是一個指向數(shù)據(jù)緩沖區(qū)的指針,該緩沖區(qū)用于存儲從 Modbus 服務(wù)器讀取或?qū)懭?Modbus 服務(wù)器的數(shù)據(jù)。 作為數(shù)據(jù)緩沖區(qū),可以使用全局數(shù)據(jù)塊或存儲區(qū)域 (M)。對于存儲區(qū)域 (M) 中的緩沖區(qū),可通過以下方式使用 ANY 格式的指針: “P#位地址” “數(shù)據(jù)類型” “長度”(例如: P#M1000.0 WORD 500).MB_DATA_PTR 參數(shù)使用一個通信緩沖區(qū):對于“MB_CLIEN

14、T”指令的通信功能:讀取和寫入 Modbus 服務(wù)器地址 00001 到 09999 和 10001 到 19999 的 1 位數(shù)據(jù)。讀取 Modbus 服務(wù)器地址 30001 到 39999 和 40001 到 49999 的 16 位 WORD 數(shù)據(jù)。寫入 Modbus 服務(wù)器地址 40001 到 49999 的 16 位 WORD 數(shù)據(jù)。在從/向全局 DB 或 由 MB_DATA_PTR 參數(shù)指定的存儲區(qū) (M) 進行數(shù)據(jù)傳輸?shù)倪^程中(長度:位或 WORD)。如果在 MB_DATA_PTR 參數(shù)中使用該緩沖區(qū)的一個數(shù)據(jù)塊,那么需要為 DB 元素指定數(shù)據(jù)類型。對于 Modbus 位地址,將

15、使用 1 位的數(shù)據(jù)類型 BOOL對于 Modbus WORD 地址,將使用 16 位的數(shù)據(jù)類型,如 WORD、UINT、INT 或 REAL。對于 2 個 Modbus WORD 地址,將使用 32 位的數(shù)據(jù)類型(雙字),如 DWORD、DINT 或 REAL。通過 MB_DATA_PTR,還可以訪問復(fù)雜的 DB 元素,如:標準數(shù)組元素名稱唯一的結(jié)構(gòu)元素名稱唯一且數(shù)據(jù)類型長度為 16 或 32 位的復(fù)雜結(jié)構(gòu)。MB_DATA_PTR 參數(shù)的數(shù)據(jù)區(qū)可以在不同的全局數(shù)據(jù)塊中(或在不同的存儲區(qū)中)。 例如,可以根據(jù)讀作業(yè)和寫作業(yè)使用不同的數(shù)據(jù)塊,或者為每個“MB_CLIENT”站使用單獨的數(shù)據(jù)塊。參數(shù)

16、 STATUS(常規(guī)狀態(tài)信息)STATUS* (W#16#)說明0000指令已無錯執(zhí)行完畢。0001連接已建立。0003連接被終止。7000未激活任何調(diào)用 (REQ=0)。7001首次調(diào)用時,REQ=1: 啟動處理;BUSY 的值為 1。7002中間調(diào)用(與 REQ 無關(guān))。 處理已激活;BUSY 的值為 1。7003正在終止連接。7004連接已建立且處于受監(jiān)視狀態(tài)。未激活任何作業(yè)處理。7005已發(fā)送數(shù)據(jù)。7006已接收數(shù)據(jù)。80BBACTIVE_EST 參數(shù)值無效(建立此類連接的標識符,請參見 T_CON_PARAM): 只允許對服務(wù)器建立被動連接 (ACTIVE_EST = FALSE)。

17、只允許對客戶端建立主動連接 (ACTIVE_EST = TRUE)。8380接收的 Modbus 幀格式錯誤或接收到的字節(jié)過少。* 在程序編輯器中,錯誤代碼可顯示為整數(shù)或十六進制值。有關(guān)切換顯示格式的更多信息,請參見“另請參見”。五、參數(shù) STATUS參數(shù) STATUS(協(xié)議錯誤)STATUS* (W#16#)響應(yīng) Modbus 客戶端的代碼 (B#16#)說明838101不支持功能代碼。838203數(shù)據(jù)長度錯誤。838302數(shù)據(jù)地址錯誤或訪問 MB_DATA_PTR 地址以外的區(qū)域。838403數(shù)據(jù)值錯誤。838503不支持診斷錯誤代碼(功能代碼 08)。* 在程序編輯器中,錯誤代碼可顯示為

18、整數(shù)或十六進制值。有關(guān)切換顯示格式的更多信息,請參見“另請參見”。參數(shù) STATUS(參數(shù)錯誤)除了下表列出的錯誤 還可能發(fā)生由通信指令(“TCON”、“TDISCON”、“TSEND”和“TRCV”)引起的“MB_CLIENT”指令錯誤。STATUS* (W#16#)說明80C8在指定的時間段中,服務(wù)器無響應(yīng)。 請檢查與 Modbus 服務(wù)器的連接。 只有在嘗試了所組態(tài)的可重復(fù)嘗試次數(shù)之后,才會報告該錯誤。 如果“MB_CLIENT”指令在指定時間內(nèi)沒有收到最初傳輸事務(wù) ID(MB_TRANSACTION_ID 變量)的應(yīng)答,則輸出該錯誤代碼。8188參數(shù) MB_MODE 的值無效。8189

19、MB_DATA_ADDR 參數(shù)的數(shù)據(jù)地址無效。818AMB_DATA_LEN 參數(shù)中的數(shù)據(jù)長度無效。818B參數(shù) MB_DATA_PTR 中的指針無效。 請檢查 MB_DATA_ADDR 和 MB_DATA_LEN 參數(shù)的值。818CMB_DATA_PTR 指針將引用一個已優(yōu)化的數(shù)據(jù)塊。 既可以使用一個具有標準訪問權(quán)限的數(shù)據(jù)塊,也可以使用一個存儲區(qū)參數(shù) BLOCKED_PROC_TIMEOUT 超時(請參見指令的靜態(tài)變量)。 已超出 55 秒的限制。818D事務(wù) ID(MB_TRANSACTION_ID 變量)與最初發(fā)送的 ID 不一致(請參見指令的靜態(tài)變量)。8200該端口正在處理另一個 M

20、odbus 請求。MB_CLIENT 具有相同連接參數(shù)的另一實例正在處理現(xiàn)有 Modbus 請求。8380接收到的已傳輸 Modbus 數(shù)據(jù)塊格式不正確或接收到的字節(jié)過少。8386接收到的功能代碼與最初發(fā)送的代碼不一致。8387指定的連接 ID 與之前請求的不同。 “MB_CLIENT”指令的各背景數(shù)據(jù)塊,只能使用一個連接 ID。服務(wù)器收到的 Modbus TCP 協(xié)議 ID 不為“0”時,也會輸出錯誤代碼。8388Modbus 服務(wù)器發(fā)送的數(shù)據(jù)長度與所請求的不同。 只有使用 Modbus 功能 15 或 16 時才會發(fā)生這種錯誤。* 在程序編輯器中,錯誤代碼可顯示為整數(shù)或十六進制值。有關(guān)切換

21、顯示格式的更多信息,請參見“另請參見”。說明 內(nèi)部使用的通信指令的錯誤代碼。對于“MB_CLIENT”指令,除了會發(fā)生表中列出的錯誤外,還會發(fā)生由該指令所使用的通信指令(“TCON”、“TDISCON”、“TSEND”和“TRCV”)所引起的錯誤。錯誤代碼通過“MB_CLIENT”指令的背景數(shù)據(jù)塊來指定。 相應(yīng)指令的錯誤代碼會顯示在 Static 部分中的 STATUS 下。錯誤代碼的含義在相應(yīng)通信指令文檔中提供。 六、MB_CLIENT 示例 1: 通過 TCP 連接發(fā)送多個請求說明通過一個 TCP 連接,發(fā)送多個 Modbus 客戶端請求。 為此,需使用相同的背景數(shù)據(jù)塊、相同的連接 ID 和相同的端口號。每次只能激活一個客戶端。 處理完一個客戶端后,再繼續(xù)處理下一個。 必須在程序中定義執(zhí)行順序。在下列樣本程序中,還將復(fù)制 STATUS 輸出參數(shù)的值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論