NModBusライブラリを使用したModbus Master実装のサンプルコード

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

NModBusライブラリを使用したModbus Master実装のサンプルコード
システムの使用;
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オブジェクトを使用してコイル状態、ディスクリート入力状態、ホールドレジスタ、入力レジスタを読み取る機能を実装しています。もちろん、実際の使用には実際の状況に応じて修正する必要があります。

NModbusライブラリはこのページからダウンロード

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.