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

[求助]关于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 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条