问题描述
我现在正试图通过USB-RS485转换器并利用C#中的EasyModbus.dll来读取传感器数据。
但是,我一直在ReadHoldingRegister
部分收到 CRC检查失败。连接和读取部分如下所示。
我已经做了很多研究,但仍然无法解决问题。有人可以帮我吗?
CRC检查失败的地址将发生在
int[] Read = modbusClient.ReadHoldingRegisters(179,6);
FT300 Modbus设置也如下所示:
Image is stolen from this manual,page 34
void getavailableports() // get available COM
{
comboBox1.Items.Clear();
string[] ports = SerialPort.GetPortNames();
comboBox1.Items.AddRange(ports);
}
private void comboBox1_MouseClick(object sender,MouseEventArgs e) //let user choose COM
{
getavailableports();
}
private void Start_Click(object sender,EventArgs e) // Start button being pressed
{
try
{
Invoke(new EventHandler(ChangeColor));
//FT300Port.PortName = comboBox1.Text;
//.Baudrate = Convert.ToInt32(Baudrate.Text);
//FT300Port.open();
modbusClient.UnitIdentifier = 9; // default slaveID = 1
modbusClient.Baudrate = Convert.ToInt32(Baudrate.Text); // default baudrate = 9600
modbusClient.Parity = System.IO.Ports.Parity.None;
modbusClient.StopBits = System.IO.Ports.StopBits.One;
modbusClient.ConnectionTimeout = 500;
modbusClient.Connect();
lb_status.Text = "Connected";
timer_Modbus.Enabled = true;
}
catch(Exception ex)
{
lb_status.Text = ex.ToString();
throw;
}
}
private void ChangeColor(object sender,EventArgs e)
{
Start.Text = "Streaming";
Start.BackColor = Color.Red;
}
private void disconnect_Click(object sender,EventArgs e)
{
modbusClient.disconnect();
Start.Text = "Start";
Start.BackColor = Color.DarkGray;
lb_status.Text = "disconnected";
timer_Modbus.Enabled = false;
}
private void timer_Modbus_Tick(object sender,EventArgs e)
{
timer_Modbus.Enabled = false;
//modbusClient.WriteMultipleCoils(179,new bool[] { true,true,true});
//Write Coils starting with Address 180
//bool[] readCoils = modbusClient.ReadCoils(179,6);
**int[] Read = modbusClient.ReadHoldingRegisters(179,6);**
/*textBox1.Text = Convert.ToString(Read[0]);
textBox2.Text = Convert.ToString(Read[1]);
textBox3.Text = Convert.ToString(Read[2]);
textBox4.Text = Convert.ToString(Read[3]);
textBox5.Text = Convert.ToString(Read[4]);
textBox6.Text = Convert.ToString(Read[5]);*/
timer_Modbus.Enabled = true;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)