using System;
using System.Net.Sockets;
using Modbus.데이터;
using Modbus.Device;
namespace ModbusMasterExample
{
class Program
{
static void Main(string[] args)
{
TcpClient client = new TcpClient("localhost", 502); // 연결到Modbus TCP服务器
ModbusIpMaster master = ModbusIpMaster.CreateIp(client); // 创建Modbus Master
ushort 시작주소 = 0;
ushort num회원가입s = 10;
// 코일 읽기 (FC01)
bool[] coils = master.ReadCoils(1, 시작주소, num회원가입s);
Console.WriteLine("Coils: " + String.Join(", ", coils));
// 이산 입력 읽기 (FC02)状态
bool[] inputs = master.ReadInputs(2, 시작주소, num회원가입s);
Console.WriteLine("Inputs: " + String.Join(", ", inputs));
// 유지 레지스터 읽기 (FC03)
ushort[] holding회원가입s = master.ReadHolding회원가입s(3, 시작주소, num회원가입s);
Console.WriteLine("Holding 회원가입s: " + String.Join(", ", holding회원가입s));
// 입력 레지스터 읽기 (FC04)
ushort[] input회원가입s = master.ReadInput회원가입s(4, 시작주소, num회원가입s);
Console.WriteLine("Input 회원가입s: " + String.Join(", ", input회원가입s));
}
}
}
实例2:
private static void Main(string[] args)
{
try
{
ModbusSerialRtuMasterWrite회원가입s();
ModbusTcpMasterReadInputs();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
/// <summary>
/// Simple Modbus serial RTU master write holding registers example.
/// </summary>
public static void ModbusSerialRtuMasterWrite회원가입s()
{
using (SerialPort port = new SerialPort("COM3"))
{
// configure 시리얼 포트
port.BaudRate = 9600;
port.데이터Bits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.Open();
var factory = new ModbusFactory();
IModbusMaster master = factory.CreateRtuMaster(port);
byte slaveId = 1;
ushort 시작주소 = 100;
ushort[] registers = new ushort[] { 1, 2, 3 };
// write three registers
master.WriteMultiple회원가입s(slaveId, 시작주소, registers);
}
}
/// <summary>
/// Simple Modbus TCP master read inputs example.
/// </summary>
public static void ModbusTcpMasterReadInputs()
{
using (TcpClient client = new TcpClient("127.0.0.1", 502))
{
var factory = new ModbusFactory();
IModbusMaster master = factory.CreateMaster(client);
// read five input values
ushort 시작주소 = 100;
ushort numInputs = 5;
bool[] inputs = master.ReadInputs(0, 시작주소, numInputs);
for (int i = 0; i < numInputs; i++)
{
Console.WriteLine($"Input {(시작주소 + i)}={(inputs[i] ? 1 : 0)}");
}
}
// output:
// Input 100=0
// Input 101=0
// Input 102=0
// Input 103=0
// Input 104=0
}上述예제代码创建了一个Modbus TCP클라이언트,然后使用Modbus Master对象实现了코일 읽기 (FC01)、이산 입력状态、유지 레지스터和입력 레지스터的功能。当然,实际使用时需要根据实际情况进行修改。
답글 작성