读取多个Modbus设备

时间:2015-04-16 16:05:02

标签: datagridview timer modbus response-time

我正在开发一个基于Shortbus dll RTU的项目。我设法读取了这些设备,但随着设备数量的增加,每次读取的延迟都会增加。

我正在为每个设备使用一个单独的计时器,但我没有到达任何地方,因为我必须将值写入数据库并比较旧值和新值以显示"工作"并且"不工作"状态。

我想要扫描227台设备,但是我没有达到只需要32台设备所需的响应。

我正在使用datagridview来存储端口和Modbus ID

http://postimage.org/'目标=' _blank'> HTTP://s2.postimg.org/x1gdrkug9/modbus.gif'边界=' 0' ALT =" MODBUS" />
http://postimage.org/index.php?lang=spanish'>share image

阅读每一行的代码

private void lectura(int numerofila)
    {
        try
        {
            Variables.fila_actual = numerofila + 1;
             ushort err;
            Variables.sb1.SetCOMPort(Convert.ToUInt16(gridConf.Rows[con].Cells[4].Value), 9600, 8, 'N', 2);
            Variables.sb1.SetCOMPort(Convert.ToUInt16(gridConf.Rows[numerofila].Cells[4].Value), 9600, 8, 'N', 2);
            err = Variables.sb1.ReadWords(Convert.ToUInt16(gridConf.Rows[numerofila].Cells[3].Value), 1004, 1, out Variables.read,  type3x: true);          
            gridConf.Rows[numerofila].Cells[7].Value = Variables.read[0];
   }
        catch
        {
           MessageBox.Show("Error in row " + Variables.numero_filas);
        }

    }

扫描值的网格视图

http://postimage.org/'目标=' _blank'> HTTP://s11.postimg.org/7544cqyoj/modbus2.gif'边界=' 0' ALT =" modbus2" />
http://postimage.org/index.php?lang=spanish'>subir照片

在2秒的每个刻度线上,我根据行数

执行读数
private void timer1_Tick(object sender, EventArgs e)
    {
        lectura(0);

    }

我尝试了线程,但他们堵塞了应用程序。任何帮助将不胜感激。

0 个答案:

没有答案