问题描述:上位机是C#WINFORM通过485串口用modbus协议和PLC、陀螺仪、以及支架传感器通信。
1.当通讯波特率设置到115200时,就通讯错误了,但是和一个设备用115200是没问题的。
2.只和PLC进行通讯,既有读也有写,正常
3.只和陀螺仪通讯【读取】,也正常
4.和PLC以及陀螺仪同时读取就卡顿了,主UI界面显示的读出数据一跳一跳的,像卡了一样,正常应该是连续的变化的,Timer的TICK设置为50ms或200ms甚至1000ms都一样
5.还没有把3个从站设备都加进去通讯
猜想:
1.Modbus实际应用中是不是不支持同时高速读写多个从站设备?
2.终端加匹配电阻是否有用,实际情况是,这几个设备间隔不超2米,但是网上有人说波特率大了也要加电阻。PS:我用的有源485
希望各位不吝赐教!
try
{
//读取平台6个缸的行程反馈数据
if ((argument as ThreadMethodHelper).runningFlag1)
{
gang_F = master.ReadHoldingRegisters(1, 11, 6);//0-16383
(argument as ThreadMethodHelper).returnValue1 = gang_F;
}
//读取支架六个传感器的反馈数据
if ((argument as ThreadMethodHelper).runningFlag2)
{
gang_F = master.ReadHoldingRegisters(1, 0, 6);//0-16383
(argument as ThreadMethodHelper).returnValue2 = gang_F;
}
//读取陀螺仪数据
if ((argument as ThreadMethodHelper).runningFlag3)
{
GyroParameters = master.ReadHoldingRegisters(0x50, 0x34, 12);
(argument as ThreadMethodHelper).returnValue3 = GyroParameters;
}
if ((argument as ThreadMethodHelper).QDOutput != null)
{
master.WriteMultipleRegisters(1, 101, (argument as ThreadMethodHelper).QDOutput);
}
//Thread.Sleep(50);
}
catch (Exception ex)
{
//timer.Enabled = false;
MessageBox.Show(ex.Message.ToString() + "\r\n请检查通讯");
Environment.Exit(0);
}