システムの使用;
System.Net.Socketsの使用
Modbus.Dataの利用
Modbus.Deviceの使用
namespace ModbusMasterExample
{
クラス·プログラム
{
static Main string[] s
{
TcpClient client = new TcpClient "local host" 502; //Modbus TCPサーバへの接続
ModbusIpMaster = ModbusIpMaster.CreateIp client; //Modbus Masterの作成
ushort startAddress = 0;
ushort numRegisters = 10
//コイルの状態を読み取る
bool[] coils = master.ReadCoils 1 startAddress numRegisters;
Console.WriteLine "Coils" + String.Join "" coils;
//離散入力状態の読み取り
bool[] inputs = master.ReadInputs 2 Address numRegisters;
Console.WriteLine "Inputs" + String.Join "" inputs;
//保持レジスタの読み込み
ushort[] holdingRegisters = master.ReadHoldingRegisters 3 startAddress numRegisters;
Console.WriteLine "Holding Registers" + String.Join "" holdingRegisters;
//入力レジスタの読み取り
ushort[] inputRegisters = master.ReadInputRegisters 4 startAddress numRegisters;
Console.WriteLine "Input Registers" + String.Join "" inputRegisters;
}
}
}例2:
private static void Main(string[] args)
{
try
{
ModbusSerialRtuMasterWriteRegisters();
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 ModbusSerialRtuMasterWriteRegisters()
{
using (SerialPort port = new SerialPort("COM3"))
{
// configure serial port
port.BaudRate = 9600;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.Open();
var factory = new ModbusFactory();
IModbusMaster master = factory.CreateRtuMaster(port);
byte slaveId = 1;
ushort startAddress = 100;
ushort[] registers = new ushort[] { 1, 2, 3 };
// write three registers
master.WriteMultipleRegisters(slaveId, startAddress, 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 startAddress = 100;
ushort numInputs = 5;
bool[] inputs = master.ReadInputs(0, startAddress, numInputs);
for (int i = 0; i < numInputs; i++)
{
Console.WriteLine($"Input {(startAddress + 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オブジェクトを使用してコイル状態、ディスクリート入力状態、ホールドレジスタ、入力レジスタを読み取る機能を実装しています。もちろん、実際の使用には実際の状況に応じて修正する必要があります。
Leave a Reply