NModBus 라이브러리를 사용하여 Modbus Master 를 구현하는 예제 코드

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

NModBus 라이브러리를 사용하여 Modbus Master 를 구현하는 예제 코드
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)、이산 입력状态、유지 레지스터和입력 레지스터的功能。当然,实际使用时需要根据实际情况进行修改。

NModbus库在本页面下载

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注