Не удается подключиться к com-порту с помощью Easymodbus.dll для Modbus RTU RS485 - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь подключиться к Modbus симулятор с rs485.Я использую библиотеку Easymodbus.dll c # в Visual Studio 2017. Я не могу подключиться с помощью команды, указанной в примере кода , в чем проблема с приведенным ниже кодом?

Я поставил код не завершено, но есть все для подключения.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using EasyModbus;

namespace modbustry1
{
public partial class Form1: Form
{
    ModbusClient modbusClient;
    public Form1()
    {
        InitializeComponent();
    }

    private void Disconnect_c_Click(object sender, EventArgs e)
    {
        modbusClient.Disconnect();
        modbus_status.Text = "Disconnected";
        timmer_modbus.Enabled = false;

    }

подключение при нажатии кнопки,

    private void connect_c_Click(object sender, EventArgs e)
    {


        try
        {
           ModbusClient modbusClient = new ModbusClient("COM2");
           modbusClient.UnitIdentifier = 1;  
           modbusClient.Baudrate = 9600;     
           modbusClient.Parity = System.IO.Ports.Parity.None;
           modbusClient.StopBits = System.IO.Ports.StopBits.Two;
           modbusClient.ConnectionTimeout = 500;
           modbusClient.Connect();




            //modbus tcp/ip

            modbus_status.Text = "Connected";
            timmer_modbus.Enabled = true;

        }
        catch (Exception ex)
        {
            modbus_status.Text = ex.ToString();
            throw;
        }
    }

    private void timmer_modbus_Tick(object sender, EventArgs e)
    {
        timmer_modbus.Enabled = false;

        modbusClient.WriteMultipleCoils(4, new bool[] { true, true, true, true, true, true, true, true, true, true });    //Write Coils starting with Address 5
        bool[] readCoils = modbusClient.ReadCoils(1, 10);  
        int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(0, 10);     
        cb_coil_1.Checked = readCoils[0];
        cb_coil_2.Checked = readCoils[1];

       // modbusClient.WriteSingleCoil(17, true);      //Writes Coil #5


        int[] Read_Inputegisters = modbusClient.ReadInputRegisters(0, 10); //Writes Holding Reg. #20
        input_reg.Text = Read_Inputegisters[0].ToString();

        bool[] read_DiscreteInputs = modbusClient.ReadDiscreteInputs(4, 5);
        coil_set.Checked =  read_DiscreteInputs[0];

        timmer_modbus.Enabled = true;

    }

Запись в регистр хранения,

    private void Write_Hold_Reg_Click(object sender, EventArgs e)
    {
        String tsring = holding_reg_wrt.Text;
        int hi = int.Parse(tsring);
        modbusClient.WriteSingleRegister(1, hi); //Writes Holding Reg. #20
    }

}
}
...