骄阳可汗 2019-05-31 17:19 采纳率: 50%
浏览 1410
已采纳

[求助]关于Modbus通讯,一主多从,通讯卡顿

问题描述:上位机是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);

                }      
  • 写回答

3条回答 默认 最新

  • 骄阳可汗 2019-06-02 11:35
    关注

    解决了。Modbus每一次发送指令后,都要有一个延时来判断数据结束,原来代码里没有延时,现在加入10ms延时OK!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!