Modbus_TCP_V5 新功能

odbus TCP 服務器指令 MB_SERVER V5.0 新功能概述

如下圖1所示服務器指令 MB_SERVER 從 V5.0 以后增加了三個新功能,分別為:

  1. 訪問數據塊中的數據區域,而不是直接訪問 MODBUS 地址
  2. 過程映像區的讀訪問限制
  3. 統計變量 NDR_immediate 和 DR_immediate

A screenshot of a computerDescription automatically generated

圖1. MB_SERVER 指令

SIMATIC S7-1200 使用要求

  • TIA Portal V15 及以上版本
  • CPU 固件 V4.2 及以上版本

新功能實驗環境和內容

在本應用實例中,通過以下產品進行Modbus TCP服務器V5.0新功能編程,實現了訪問1217C CPU 中數據塊的數據區域以及限制對1217 CPU過程映像區的讀訪問。

軟件:

TIA Professional V16
Modbus Poll

硬件:

CPU1217C DC/DC/DC V4.4

新功能通信程序

1、指令調用及參數分配

1.1、打開 TIA Portal V16軟件,新建一個項目命名為 "ModbusTCP V5.0",在項目中添加CPU1217C DC/DC/DC V4.4,為以太網接口新建一個子網并設置 IP地址為 "192.168.0.1",如下圖 3 所示。

A screenshot of a computerDescription automatically generated

圖2. 分配IP地址

1.2、在 OB1組織塊中添加Modbus TCP Server功能塊 "MB_SERVER",軟件將提示會為該 FB塊增加一個背景數據塊,本例中為 DB1"MB_SERVER_DB",如下圖3所示。

A screenshot of a computerDescription automatically generated

圖3. 指令創建

2、訪問數據塊中的數據區域

用戶可訪問數據塊中的數據區域,而不用直接訪問過程映像和保持性寄存器。在此情況下,必須禁用數據塊的“優化塊訪問”(Optimized block access) 屬性,并且該屬性不得單獨存在于裝載存儲器中。

2.1、創建標準數據塊,DB10(Area 1 for Input)、DB11(Area 2 for Input Register)、DB12(Area 3 for Holding Register)、DB13(Area 4 for Holding Register)如下圖 4 所示。并修改數據塊屬性為標準訪問數據塊,如下圖5所示。

A screenshot of a computerDescription automatically generated

圖4. 創建數據塊

A screenshot of a computerDescription automatically generated

圖5. 數據塊屬性

2.2、分配數據區域及注意事項

  • 用戶最多可在不同數據塊中定義八個數據區域,每個數據塊只能包含一個數據區域。單個MODBUS 請求只能對恰好一個數據區域進行讀寫操作。每個數據區域對應于一個 MODBUS 地址區域。可以在MB_SERVER背景數據塊的靜態變量中"Data_Area_Array"中定義數據區域。
  • 如果要使用的數據區域不到八個,則所需數據區域必須緊密相連,沒有間隙。在處理過程中,數據區域中的第一個空白條目會終止數據區域搜索。例如,如果已定義字段元素 1、2、4 和 5,由于字段元素 3 留空,則"Data_Area_Array"只會識別字段元素 1 和 2。
  • 如果 MODBUS 請求到達時尚未定義相應功能代碼的 MODBUS 數據類型的數據區域,請求會按之前的指令版本處理,即直接訪問過程映像和保持性寄存器。如果已為功能代碼的 MODBUS 數據類型定義了數據區域,則指令 MB_SERVER 可對該數據區域進行讀寫操作。具體是讀操作還是寫操作取決于作業類型。如果有兩個區域都是03呢,是否會讀寫搞混了?測試一下功能碼1和15可以放在2個功能區嗎,并且起始地址和長度一樣
  • 單個 MODBUS 請求只能對一個數據區域進行讀寫操作。如果要讀取覆蓋多個數據區域的保持性寄存器,則需要多個 MODBUS 請求。

Data_Area_Array 字段包含八個元素:Data_Area_Array[1] 到 Data_Area_Array[8],每個字段元素 Data_Area_Array[x](其中 1 <= x <= 8)都是 MB_DataArea 類型的 UDT,結構如下表1。

表1:Data_Area_Array結構

參數數據類型含義
data_typeUInt映射到此數據區域的 MODBUS 數據類型的標識符:
? 0:空字段元素或未使用數據區域的標識符。此時,db、start和length的值無效。
? 1:過程映像輸出(與功能代碼 1、5 和 15 一起使用)
? 2:過程映像輸入(與功能代碼 2 一起使用)
? 3:保持寄存器(與功能代碼 3、6 和 16 一起使用)
? 4:輸入寄存器(與功能代碼 4 一起使用)
dbUInt映射的數據區編號,該DB必須是非優化DB
startUInt映射到數據塊中的首個 MODBUS 地址,從0開始
lengthUIntBool數(對于data_type 1或者2),Word數(data_type 3或者4)

本例中使用了4個區域,進入MB_SERVER背景數據塊DB1“MB_SERVER_DB”的靜態變量中Data_Area_Arry,分別為區域1訪問輸入位、區域2訪問輸入字、區域3訪問保持寄存器、區域4訪問保持寄存器、區域5~8保持默認為0,如下圖6所示。

A screenshot of a computerDescription automatically generated

圖6. 數據區域

2.3、仿真軟件設置,如下圖7-8所示。

A screenshot of a computerDescription automatically generated

圖7. 通信配置

A screenshot of a computerDescription automatically generated

圖8. 讀寫配置

2.4、測試結果,如下圖9所示。

A screenshot of a computerDescription automatically generated

圖9. 測試結果

3、過程映像區的讀訪問限制

對于 MB_SERVER 指令V5.0及以上版本,用戶可在過程映像輸入中定義一個區域,在過程映像輸出中定義一個區域,方便遠程 MODBUS 設備 進行讀訪問。隨后,遠程 MODBUS 設備便不能對超出這些過程映像區域的地址進行讀訪問。

背景數據塊的以下靜態變量定義了過程映像中的讀取區域:

  • QB_Read_Start:可由遠程 MODBUS 設備讀取的過程映像輸出中的第一個字節的地址(應用于功能代碼 1)
  • QB_Read_Count:可由遠程 MODBUS 設備讀取的過程映像輸出中的字節數(應用于功能代碼 1)
  • IB_Read_Start:可由遠程 MODBUS 設備讀取的過程映像輸入中的第一個字節的地址(應用于功能代碼 2 和 4)
  • IB_Read_Count:可由遠程 MODBUS 設備讀取的過程映像輸入中的字節數(應用于功能代碼 2 和 4)

下表2介紹了指令 MB_SERVER 背景數據塊中的上述靜態變量,可用于定義過程映像中的讀區域。為確保完整性,表格中還列出了自版本 V4.2 起,用于定義過程映像中的寫區域的靜態變量(QB_Start 和 QB_Count)。

表2 讀訪問限制變量

變量數據類型默認值說明版本
QB_StartUInt0CPU 可寫入的輸出字節的起始地址V4
QB_CountUInt65535CPU 可寫入的輸出字節的字節數。
如果 QB_Count = 0,則CPU 的輸出字節均無法寫入。
V4
QB_Read_StartUInt0CPU 可讀取的輸出字節的起始地址V5
QB_Read_CountUInt65535CPU 可讀取的輸出字節的字節數。
如果 QB_Read_Count = 0,則CPU 的輸出字節均無法讀取。
V5
IB_Read_StartUInt0CPU 可讀取的輸入字節的起始地址V5
IB_Read_CountUInt65535CPU 可讀取的輸入字節的字節數。
如果 IB_Read_Count = 0,CPU 的輸入字節均無法讀取。
V5

3.1、本例中定義過程映像中讀取區域如下圖9所示,輸出過程映像寫訪問權限QB0~QB9,輸出過程映像讀訪問權限QB10~QB19,輸入過程映像讀訪問權限IB20~IB29。

A screenshot of a computerDescription automatically generated

圖9. 過程映像區域設定

3.2、仿真軟件設置,如下圖10所示。

A screenshot of a computerDescription automatically generated

圖10. 通信設置

3.3、測試結果

A screenshot of a computerDescription automatically generated

圖11. 讀取Q區數據

A screenshot of a computerDescription automatically generated

圖12. 讀取I區數據

4、統計變量 NDR_immediate 和 DR_immediate

指令 MB_SERVER(自指令版本 V5.0 起)的背景數據塊中含有統計變量 NDR_immediate 和 DR_immediate。

表3:NDR_immediate 和 DR_immediate。

變量數據類型默認值說明
NDR_immediateBoolFalse與參數 NDR(新數據就緒)含義相同。MB_SERVER 在處理
Modbus TCP 寫請求的同一調用中更新"NDR_immediate"。
DR_immediateBoolFalse與參數 DR(數據讀取)含義相同。MB_SERVER 在處理
Modbus TCP 寫請求的同一調用中更新"DR_immediate"。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90001.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2-RuoYi-UI管理平臺的啟動

RuoYi-UI是RuoYi后端框架的管理中心(基于 Vue.js 的前端項目)的詳細配置與啟動指南,結合官方文檔和常見實踐整理,涵蓋環境準備、配置修改、啟動流程及問題排查。 ?? 一、環境準備 Node.js 版本要求:≥12.0(推薦 ≥14.0 或 18.18+ 適配 Vue3) 安裝后驗證: node -v …

WPF學習筆記(21)ListBox、ListView與控件模板

ListBox與控件模板 一、 ListBox默認控件模板詳解二、ItemsPresenter集合數據呈現1. 概述2. 示例 三、 ListView默認控件模板詳解1. 概述2. 示例 一、 ListBox默認控件模板詳解 WPF 中的大多數控件都有默認的控件模板。 這些模板定義了控件的默認外觀和行為&#xff0c;包括控…

操作系統【2】【內存管理】【虛擬內存】【參考小林code】

本文完全參考 虛擬內存內存分段內存分頁段頁式內存管理Linux內存管理 一、虛擬內存 1. 單片機的絕對物理地址 以單片機作為引子&#xff0c;它沒有操作系統&#xff0c;每次寫完程序是借助工具將程序燒錄進單片機&#xff0c;程序才能運行。 單片機由于沒有操作系統&#…

【王樹森推薦系統】召回05:矩陣補充、最近鄰查找

概述 這節課和后面幾節課將詳細講述向量召回&#xff0c;矩陣補充是向量召回最簡單的一種方法&#xff0c;不過現在已經不太常用這種方法了本節課的矩陣補充是為了幫助理解下節課的雙塔模型上節課介紹了embedding&#xff0c;它可以把用戶ID和物品ID映射成向量 矩陣補充 模型…

C# 事件(訂閱事件和觸發事件)

訂閱事件 訂閱者向事件添加事件處理程序。對于一個要添加到事件的事件處理程序來說&#xff0c;它必須具有 與事件的委托相同的返回類型和簽名。 使用運算符來為事件添加事件處理程序&#xff0c;如下面的代碼所示。事件處理程序位于該運 算符的右邊。事件處理程序的規范可以…

64頁精品PPT | 基于DeepSeek的數據治理方案AI大數據治理解決方案數據治理大模型解決方案

這份PPT文檔是關于基于DeepSeek的大模型技術在數據治理方案中的應用介紹。強調數據作為新型生產要素與人工智能技術相結合的重要性&#xff0c;指出大模型憑借強大的文學理解、生成能力以及多模態數據處理能力&#xff0c;能為數據治理帶來新機遇。文檔詳細闡述了數據資產化的路…

【文獻筆記】Tree of Thoughts: Deliberate Problem Solving with Large Language Models

Tree of Thoughts: Deliberate Problem Solving with Large Language Models https://github.com/princeton-nlp/tree-of-thought-llm 標題翻譯&#xff1a;思維樹&#xff1a;利用大型語言模型問題求解 1. 內容介紹 1.1. 背景 決策過程有兩種模式&#xff1a; 快速、自動…

使用 Mathematical_Expression 從零開始實現數學題目的作答小游戲【可復制代碼】

從零開始實現數學題目的作答小游戲 開源技術欄 使用 Mathematical_Expression 讓計算機做出題人&#xff0c;讓代碼與數學碰撞出趣味火花。 目錄 文章目錄 從零開始實現數學題目的作答小游戲目錄 從零開始實現數學題目的作答小游戲&#xff1a;讓代碼與數學碰撞出趣味火花為…

DQL-9-小結

DQL-9-小結 小結DQL語句 小結 DQL語句 SELECT 字段列表 -- 字段名 [AS] 別名FROM 表名列表WHERE條件列表 -- >、 >、 <、 <、 、 <>、 like、 between ... and、 in、 and、 or, 分組之前過濾 GROUP BY分組字段列表HAVING分組后條件列表 -- 分組之后…

[netty5: WebSocketServerHandshaker WebSocketServerHandshakerFactory]-源碼分析

在閱讀這篇文章前&#xff0c;推薦先閱讀以下內容&#xff1a; [netty5: WebSocketFrame]-源碼分析[netty5: WebSocketFrameEncoder & WebSocketFrameDecoder]-源碼解析 WebSocketServerHandshakerFactory WebSocketServerHandshakerFactory 用于根據客戶端請求中的 Web…

數據挖掘:深度解析與實戰應用

在當今數字化時代&#xff0c;數據挖掘已經成為企業獲取競爭優勢的關鍵技術之一。通過從大量數據中提取有價值的信息&#xff0c;企業可以更好地理解客戶需求、優化業務流程、提高運營效率。本文將深入探討數據挖掘的核心技術、實際應用案例以及如何在企業中實施數據挖掘項目。…

LLM面試題14

算法崗面試題 介紹下Transformer模型。 Transformer本身是一個典型的encoder-decoder模型&#xff0c;Encoder端和Decoder端均有6個Block,Encoder端的Block包括兩個模塊&#xff0c;多頭self-attention模塊以及一個前饋神經網絡模塊&#xff1b;Decoder端的Block包括三個模塊&…

Java金融場景中為什么金額字段禁止使用浮點類型(float/double)?

引言 Java金融場景中為什么金額字段禁止使用浮點類型&#xff1f;這是一篇你不能忽視的“爆雷”警告&#xff01; 在金融、電商、支付、清結算等業務系統中&#xff0c;浮點類型是絕對禁區&#xff01; &#x1f6a8;一、核心警告&#xff1a;浮點類型不是十進制數&#xff01;…

SVN下載與拉取

大家好我是蘇麟&#xff0c;今天聊一聊SVN。 SVN官網&#xff1a;下載 TortoiseSVN - TortoiseSVN 軟件 根據系統選擇32位還是64位 打開文件 安裝&#xff0c;下一步&#xff0c;下一步 安裝成功后&#xff0c;右鍵找到SVNcheck 輸入地址 輸入用戶名和密碼就OK了 這期就到這里…

數據結構筆記8:堆

目錄 滿二叉樹&#xff1a; 完全二叉樹&#xff1a; 堆是一種特殊的完全二叉樹&#xff1a; 我們可以以數組的方式存儲堆。 父節點和子節點下標關系的推導&#xff1a; 1.使用數學歸納法證明n2 1 n0&#xff1a; 2.使用邊和節點的關系證明n2 1 n0&#xff1a; 我們…

3. lvgl 9.3 vscode 模擬環境搭建 lv_port_pc_vscode-release-v9.3

文章目錄1. 資源下載1. 1 lv_port_pc_vscode1.2 cmake 和 mingw 環境搭建1.3 sdl 下載1.4 下載lvgl_v9.32. 環境搭建2.1 拷貝lvgl 源碼到工程2.2 添加SDL2 依賴2.3 執行工程3. 運行示例1. 資源下載 1. 1 lv_port_pc_vscode 那么多模擬器&#xff0c;為什么選擇這個&#xff1…

【牛客刷題】小紅的爆炸串(二)

一、題目介紹 本題鏈接為:小紅的爆炸串(二) 小紅定義一個字符串會爆炸,當且僅當至少有k對相鄰的字母不同。 例如,當 k k k=2時,"arc"會爆炸,而"aabb"則不會爆炸。 小紅拿到了一個長度為

【實戰】如何訓練一個客服語音對話場景VAD模型

1. 引言:客服場景下的VAD模型 在客服中心,每天都會產生海量的通話錄音。對這些錄音進行有效分析,可以用于服務質量監控、客戶意圖洞察、流程優化等。VAD在其中扮演著“預處理器”和“過濾器”的關鍵角色: 提升ASR效率與準確性:只將檢測到的語音片段送入ASR引擎,可以避免…

在 Dokploy 中為 PostgreSQL 搭建 PgBouncer 數據庫連接池(圖文)

前言&#xff1a;為什么你需要一個連接池&#xff1f; 如果你正在使用 Node.js (尤其是像 Next.js 這樣的框架) 配合 Prisma 操作 PostgreSQL 數據庫&#xff0c;你很可能在某個階段會遇到那個令人頭疼的錯誤&#xff1a;“Error: Too many clients already”。這通常發生在應…

Mac獲取終端歷史

在 macOS 中&#xff0c;歷史記錄文件的位置取決于你使用的 shell。以下是針對不同 shell 的歷史記錄文件的默認位置&#xff1a;對于 Bash 用戶&#xff1a; 歷史記錄文件通常位于 ~/.bash_history。對于 Zsh 用戶&#xff08;macOS Catalina及以后版本默認使用的shell&#x…