Я пытаюсь подключиться к 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
}
}
}