modbusFactory
=
new
ModbusFactory
(
)
;
master
=
modbusFactory
.
CreateMaster
(
new
TcpClient
(
"192.168.1.5"
,
502
)
)
;
master
.
Transport
.
ReadTimeout
=
2000
;
master
.
Transport
.
Retries
=
2000
;
bool
[
]
coilsBuffer
=
master
.
ReadCoils
(
1
,
10
,
1
)
;
for
(
int
i
=
0
;
i
<
coilsBuffer
.
Length
;
i
++
)
Console
.
Write
(
coilsBuffer
[
i
]
+
" "
)
;
Console
.
WriteLine
(
" "
)
;
coilsBuffer
=
master
.
ReadInputs
(
1
,
2
,
1
)
;
for
(
int
i
=
0
;
i
<
coilsBuffer
.
Length
;
i
++
)
Console
.
Write
(
coilsBuffer
[
i
]
+
" "
)
;
Console
.
WriteLine
(
" "
)
;
ushort
[
]
registerBuffer
=
master
.
ReadHoldingRegisters
(
1
,
20
,
1
)
;
for
(
int
i
=
0
;
i
<
registerBuffer
.
Length
;
i
++
)
Console
.
Write
(
registerBuffer
[
i
]
+
" "
)
;
bool
[
]
coilsBufferW
=
new
bool
[
]
{
true
}
;
await
master
.
WriteSingleCoilAsync
(
1
,
0
,
coilsBufferW
[
0
]
)
;
Console
.
WriteLine
(
"写单个线圈操作完成!"
)
;
ushort
[
]
registerBufferW
=
new
ushort
[
2
]
;
await
master
.
WriteSingleRegisterAsync
(
1
,
0
,
registerBufferW
[
0
]
)
;
Console
.
WriteLine
(
"写单个输入线圈/离散量线圈操作完成!"
)
;
bool
[
]
coilsBufferList
=
new
bool
[
]
{
true
,
false
}
;
await
master
.
WriteMultipleCoilsAsync
(
1
,
0
,
coilsBufferList
)
;
Console
.
WriteLine
(
"写一组线圈操作完成!"
)
;
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();
这只是一个简单的示例,您可以根据需要进行更多的
读取
或写入操作。希望对您有所帮助!如有其他问题,请随时提问。