相关文章推荐
modbusFactory = new ModbusFactory ( ) ; //实例化 , ModbusTcp通信协议端口号为 502 master = modbusFactory . CreateMaster ( new TcpClient ( "192.168.1.5" , 502 ) ) ; //设置读取超时时间 master . Transport . ReadTimeout = 2000 ; master . Transport . Retries = 2000 ; //01 读取单个线圈(站号,起始地址,长度) 读寄存器地址M10 bool [ ] coilsBuffer = master . ReadCoils ( 1 , 10 , 1 ) ; for ( int i = 0 ; i < coilsBuffer . Length ; i ++ ) Console . Write ( coilsBuffer [ i ] + " " ) ; Console . WriteLine ( " " ) ; //02 读取输入线圈/离散量线圈 coilsBuffer = master . ReadInputs ( 1 , 2 , 1 ) ; for ( int i = 0 ; i < coilsBuffer . Length ; i ++ ) Console . Write ( coilsBuffer [ i ] + " " ) ; Console . WriteLine ( " " ) ; //03 读取保持寄存器 读寄存器地址D20 ushort [ ] registerBuffer = master . ReadHoldingRegisters ( 1 , 20 , 1 ) ; for ( int i = 0 ; i < registerBuffer . Length ; i ++ ) Console . Write ( registerBuffer [ i ] + " " ) ; //05 写单个线圈(站号,起始地址,值) bool [ ] coilsBufferW = new bool [ ] { true } ; await master . WriteSingleCoilAsync ( 1 , 0 , coilsBufferW [ 0 ] ) ; Console . WriteLine ( "写单个线圈操作完成!" ) ; //06 写单个输入线圈/离散量线圈 ushort [ ] registerBufferW = new ushort [ 2 ] ; await master . WriteSingleRegisterAsync ( 1 , 0 , registerBufferW [ 0 ] ) ; Console . WriteLine ( "写单个输入线圈/离散量线圈操作完成!" ) ; //15 写一组线圈 bool [ ] coilsBufferList = new bool [ ] { true , false } ; await master . WriteMultipleCoilsAsync ( 1 , 0 , coilsBufferList ) ; Console . WriteLine ( "写一组线圈操作完成!" ) ; //16 写一组保持寄存器 await master . WriteMultipleRegistersAsync ( 1 , 0 , registerBuffer ) ; Console . WriteLine ( "写一组保持寄存器操作完成!" ) ; master . Dispose ( ) ; catch ( Exception ex ) Console . WriteLine ( ex . Message ) ; 参考地址:https://www.cnblogs.com/pandefu/p/10824331.html1、从NuGet管理器安装NModbus2、代码如下using NModbus;using System;using System.Net.Sockets;namespace ModbusTCP{ class Program { private static ModbusFactory modbusFactory; private stat
利用VS2019( C# )开发的基于 Modbus TCP 的西门子S7200 PLC 读写 例程软件,有全部源程序代码,仅供学习交流。自己开发,测试可以使用。资料中除 C# 源程序外还包含S7200 PLC 程序文件以及 Modbus TCP 库文件。 本软件也适用于S7_200 SMART
PLC 通讯实现- C# 实现国产汇川 PLC -AM401以太网通讯 ModBus TCP 背景抽象设计国产汇川 PLC -AM401以太网通讯实现 Modbus TCP 测试效果引用库下载 本人近十年的工作都与工业软件相关、其中工控系统开发过程中有一个必要环节就是跟各大厂商的 PLC 进行通讯,而对于从互联网行业跨入工业互联网行业的从业人员来说要实现各型号 PLC 通讯还是需要一个过程的,随着中美贸易争端不断升级,国产 PLC 的需求和应用越来越广泛,本文就介绍一下上位机软件与国产汇川 PLC -AM401的通许实现。
项目需要用 C# 写一个上位机,用 Modbus / TCP 协议与 PLC 通信 ,控制伺服电机的启停、转速等。 “启动”的代码如下,btn_stop_Click 是“启动”这个按钮对应的代码,启动一个新线程,实际的代码在StopEnginer函数中实现 private void btn_stop_Click(object sender, EventArgs e) //控制电机停止 r_timer.Stop(); t_timer.Stop(
工业控制中一般采用 PLC 进行一些简单的运动控制和IO控制,很多时候需要PC端能够操作 PLC 一些 数据 。在1979年MODICON公司定义了一种工业现场总线协议标准—— Modbus (最初的 Modbus 协议一般是走串口),后来在1996年施耐德公司基于以太网 TCP /IP协议重新对 MODBUS 协议进行定义—— MODBUS TCP 。 该协议实现了外部设备与 PLC 进行简单通讯功能,其中主要包括寄存器 读取 和写入,通过此功能结合 PLC 内部实现从而实现联合编程目的。 优势:相比于 PLC 内部的 TCP 通讯 MODBUS 直接
本文将使用一个NuGet公开的组件技术来实现一个 ModBus TCP 的客户端,方便的对 Modbus tcp 的服务器进行 读写 ,这个服务器可以是电脑端 C# 设计的,也可以是 PLC 实现的,也可以是其他任何支持这个 通信 协议的服务器。 github地址:https://github.com/dathlin/HslCommunication如... 具体 modbus 协议见pdf文档这里就不说了(下载包里有) https://download.csdn.net/download/weixin_42288222/12457342 1.这边使用裸 Tcp /ip协议 通过socket发送 modbus 的通讯报文地址 数据 等操作 plc 寄存器(没有使用别人写好的类库)。界面如下: 2. TCP 部分程序如下: 内联代码片。 using System; using Syst 资源名: C# 和信捷 PLC MODBUS TCP 通信 源码 资源类型:程序源代码 源码说明: 开发工具VS2017, 测试信捷 PLC , 涉及功能码: 01 读开关 05 写开关 03 读单路寄存器 06 写单路寄存器 10 写多路寄存器 适合人群:新手及有一定经验的开发人员
您好!要使用 C# 读取 台达 PLC 上的 数据 ,可以使用 Modbus TCP 协议。以下是一些基本步骤: 1. 首先,确保计算机上已安装了相应的 Modbus TCP 库。可以使用NuGet包管理器来安装类似N Modbus 或Easy Modbus 库。 2. 在 C# 代码中,导入所需的命名空间: ```csharp using System; using System.Net.Sockets; using Modbus .Device; 3. 创建一个 Tcp Client对象,并将其连接到 PLC 的IP地址和端口: ```csharp Tcp Client tcp Client = new Tcp Client(" PLC _IP_Address", Port_Number); 请将 " PLC _IP_Address" 替换为 台达 PLC 的实际IP地址,Port_Number 替换为 Modbus TCP 端口号(默认为502)。 4. 创建一个 Modbus IpMaster对象,用于进行 读取 或写入操作: ```csharp Modbus IpMaster modbus Master = Modbus IpMaster.CreateIp( tcp Client); 5. 使用 modbus Master对象进行 数据 读取 操作。例如,要 读取 台达 PLC 上的寄存器 数据 : ```csharp ushort startAddress = 0; // 起始地址 ushort numberOfPoints = 10; // 要 读取 的寄存器数量 // 读取 保持寄存器 数据 ushort[] data = modbus Master.ReadHoldingRegisters(startAddress, numberOfPoints); 请根据实际情况更改起始地址和要 读取 的寄存器数量。 6. 最后,记得关闭 Tcp Client连接: ```csharp tcp Client.Close(); 这只是一个简单的示例,您可以根据需要进行更多的 读取 或写入操作。希望对您有所帮助!如有其他问题,请随时提问。
 
推荐文章