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

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

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ライブラリはこのページからダウンロード

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注