NModbus 連接到Modbus服務器(Modbus TCP)

?1、在項目中通過NuGet添加NModbus,在界面中添加一個Button。

using NModbus.Device;
using NModbus;
using System.Net.Sockets;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Diagnostics;namespace WpfAppModbus
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void btnRead_Click(object sender, RoutedEventArgs e){// 1. 連接到 Modbus 服務器(Modbus TCP)string ipAddress = "127.0.0.1"; // 設備的 IP 地址int port = 502; // Modbus TCP 默認端口TcpClient client = new TcpClient(ipAddress, port);// 2. 獲取 Modbus TCP 設備的協議客戶端var factory = new ModbusFactory();IModbusMaster master = factory.CreateMaster(client);// 3. 讀取從站設備的寄存器ushort startAddress = 0;  // 寄存器起始地址ushort numRegisters = 10; // 讀取 10 個寄存器// 4.從站地址(Slave ID)byte slaveId = 2;try{// 讀取保持寄存器 // ReadHoldingRegisters: 讀取保持寄存器的值。參數包括從站地址(Slave ID)、起始地址和要讀取的寄存器數量。// NModbus 還支持其他 Modbus 操作,例如://  讀取輸入寄存器: ReadInputRegisters//  讀取線圈狀態: ReadCoils//  寫入單個寄存器: WriteSingleRegister//  寫入多個寄存器: WriteMultipleRegisters//  寫入單個線圈: WriteSingleCoil//  寫入多個線圈: WriteMultipleCoilsushort[] registers = master.ReadHoldingRegisters(slaveId,startAddress, numRegisters);// 輸出結果Debug.WriteLine("讀取到的寄存器值:");foreach (var register in registers){Debug.WriteLine(register);}}catch (Exception ex){Debug.WriteLine($"讀取錯誤: {ex.Message}");}// 5. 關閉連接client.Close();}}
}

2、使用Modscan32軟件模擬一個Modbus服務器,選擇文件->新建,設置Device Id、Address、Lenght,在下拉框中選擇03:HOLDING REGISTER。在下方灰色框中雙擊要修改的數據。

https://download.csdn.net/download/xingchengaiwei/90341117

3、運行程序后,讀取到的數據如下。

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

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

相關文章

【零基礎到精通Java合集】第十八集:多線程與并發編程-線程池與Callable/Future應用

課程標題:線程池與Callable/Future應用(15分鐘) 目標:掌握線程池的創建與管理,理解Callable任務與Future異步結果處理機制 0-1分鐘:課程引入與線程池意義 以“銀行窗口服務”類比線程池:復用固定資源(柜員)處理多任務(客戶)。說明線程池的核心價值——避免頻繁創建…

【leetcode hot 100 238】除自身以外數組的乘積

解法一&#xff1a;&#xff08;左右乘積列表&#xff09;利用索引左側所有數字的乘積和右側所有數字的乘積&#xff08;即前綴與后綴&#xff09;相乘得到答案。 class Solution {public int[] productExceptSelf(int[] nums) {int len nums.length;int[] L new int[len]; …

BUU44 [BJDCTF2020]ZJCTF,不過如此1 [php://filter][正則表達式get輸入數據][捕獲組反向引用][php中單雙引號]

題目&#xff1a; 我仿佛見到了一位故人。。。也難怪&#xff0c;題目就是ZJCTF 按要求提交/?textdata://,I have a dream&filenext.php后&#xff1a; ......不太行&#xff0c;好像得用filephp://filter/convert.base64-encode/resourcenext.php 耶&#xff1f;那 f…

[Web 安全] PHP 反序列化漏洞 —— POP 鏈構造思路

關注這個專欄的其他相關筆記&#xff1a;[Web 安全] 反序列化漏洞 - 學習筆記-CSDN博客 0x01&#xff1a;什么是 POP 鏈&#xff1f; POP 鏈&#xff08;Payload On Purpose Chain&#xff09;是一種利用 PHP 中的魔法方法進行多次跳轉以獲取敏感數據的技術。它通常出現在 CTF…

擴散語言模型:從圖像生成到文本創造的范式躍遷

近年來,擴散模型(Diffusion Models)在人工智能領域異軍突起,尤其在圖像生成任務中取得了令人矚目的成就,如 Stable Diffusion 等模型已成為生成高質量圖像的標桿。這種成功激發了研究者們的好奇心:擴散模型的魔力能否從視覺領域延伸至自然語言處理(NLP),為文本生成帶來…

大模型工程師學習日記(十):基于 LangChain 構建向量存儲和查詢 Qdrant

Qdrant介紹 Qdrant&#xff08;讀作&#xff1a;quadrant /kwɑdr?nt/ n. 象限&#xff1b;象限儀&#xff1b;四分之一圓&#xff09;是一個向量相似度搜索引擎。它提供了一個生產就緒的服務&#xff0c;具有方便的 API 來存儲、搜索和管理點 - 帶有附加載荷的向量。Qdrant專…

DeepSeek 助力 Vue3 開發:打造絲滑的網格布局(Grid Layout)

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

deepseek、騰訊元寶deepseek R1、百度deepseekR1關系

分析與結論 區別與聯系 技術基礎與定制方向&#xff1a; DeepSeek官網R1版本&#xff1a;作為基礎版本&#xff0c;通常保留通用性設計&#xff0c;適用于廣泛的AI應用場景&#xff08;如自然語言處理、數據分析等&#xff09;。其優勢在于技術原生性和官方直接支持。騰訊元寶…

外貿獨立站使用wordpress模板與定制哪個SEO效果好

使用WordPress模板搭建的外貿獨立站與定制站的SEO效果&#xff0c;可以從以下幾個方面進行分析&#xff1a; 1. 內容質量是SEO的核心 內容質量確實是SEO的關鍵&#xff0c;無論使用模板還是定制開發&#xff0c;優質、相關、原創的內容都是提升排名的基礎。內容能夠解決用戶問…

Golang語法特性總結

1.認識Golang代碼特性 package main //1.包含main函數的文件就是一個main包--當前程序的包名// import "fmt" // import "time" import("fmt""time" )//3.同時包含多個包 4.強制代碼風格:函數的 { 一定和函數名在同一行&#xff0c;否…

AI賦能校園安全:科技助力預防與應對校園霸凌

校園本應是學生快樂學習、健康成長的地方&#xff0c;然而&#xff0c;校園霸凌卻成為威脅學生身心健康的隱形“毒瘤”。近年來&#xff0c;隨著人工智能&#xff08;AI&#xff09;技術的快速發展&#xff0c;AI在校園安全領域的應用逐漸成為解決校園霸凌問題的新突破口。通過…

易語言模擬真人鼠標軌跡算法 - 防止游戲檢測

一.簡介 鼠標軌跡算法是一種模擬人類鼠標操作的程序&#xff0c;它能夠模擬出自然而真實的鼠標移動路徑。 鼠標軌跡算法的底層實現采用C/C語言&#xff0c;原因在于C/C提供了高性能的執行能力和直接訪問操作系統底層資源的能力。 鼠標軌跡算法具有以下優勢&#xff1a; 模擬…

運營商三要素API:構建安全信任的橋梁

引言 在數字經濟時代&#xff0c;身份驗證已成為各類業務場景的基礎需求。運營商三要素API作為一種高效的身份核驗工具&#xff0c;通過對接運營商數據&#xff0c;實現對用戶姓名、身份證號碼、手機號碼三項關鍵信息的實時校驗&#xff0c;為各行業提供可靠的身份認證解決方案…

Spring Boot 與 MyBatis 版本兼容性

初接觸Spring Boot&#xff0c;本次使用Spring Boot版本為3.4.3&#xff0c;mybatis的起步依賴版本為3.0.0&#xff0c;在啟動時報錯&#xff0c;報錯代碼如下 org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name userMapper…

GCN從理論到實踐——基于PyTorch的圖卷積網絡層實現

Hi&#xff0c;大家好&#xff0c;我是半畝花海。圖卷積網絡&#xff08;Graph Convolutional Network, GCN&#xff09;是一種處理圖結構數據的深度學習模型。它通過聚合鄰居節點的信息來更新每個節點的特征表示&#xff0c;廣泛應用于社交網絡分析、推薦系統和生物信息學等領…

MyBatis-Plus 邏輯刪除實現

在很多企業級應用中&#xff0c;數據刪除操作通常采用 邏輯刪除 的方式&#xff0c;而不是物理刪除。邏輯刪除指的是通過更新字段&#xff08;例如 is_deleted 或 status&#xff09;來標記數據為刪除狀態&#xff0c;而不是真的從數據庫中刪除記錄。這樣做的好處是保留數據的歷…

STM32_IIC外設工作流程

STM32 IC 外設工作流程&#xff08;基于寄存器&#xff09; 在 STM32 中&#xff0c;IC 通信主要通過一系列寄存器控制。理解這些寄存器的作用&#xff0c;能夠幫助我們掌握 IC 硬件的運行機制&#xff0c;實現高效的數據傳輸。本文以 STM32F1&#xff08;如 STM32F103&#x…

集合遍歷的多種方式

目錄 1.增強for 2.迭代器&#xff08;在遍歷的過程中需要刪除元素&#xff0c;請使用迭代器&#xff09; 3.雙列集合 4.Lambda表達式(forEach方法) 1.單列集合&#xff1a; 2.雙列集合&#xff1a; 4.Stream 流 5.普通for循環 6.列表迭代器 7.總結 1.增強for 注&…

DeepSeek在MATLAB上的部署與應用

在科技飛速發展的當下&#xff0c;人工智能與編程語言的融合不斷拓展著創新邊界。DeepSeek作為一款備受矚目的大語言模型&#xff0c;其在自然語言處理領域展現出強大的能力。而MATLAB&#xff0c;作為科學計算和工程領域廣泛應用的專業軟件&#xff0c;擁有豐富的工具包和高效…

value_counts()和unique()

我今天發現一個很有意思的問題哈 import scanpy as sc import numpy as npX np.random.randn(10,3) adata1 sc.AnnData(X) adata1.obs["sample"] "H1" print(adata1)X np.random.randn(20,3) adata2 sc.AnnData(X) adata2.obs["sample"] &…