模拟产生modbus数据工具

      有时候,modbus读数程序写好了,需要测试一下,这个时候突然会感觉好麻烦哦,工业环境不可能搬我们办公室的。到现场做测试了,不方便去不说,真去了现场,在真实的工业环境下,恐怕也不会允许你随便搞测试哦。

      于是乎,为了挽救天下苦逼的程序员,就写了一个产生modbus数据的模拟程序。

       这个不同于modscan哦,不是测试modbus服务是否正常的modscan,是产生modbus模拟数据的程序。

#region modbus 数据
        public static byte[] GetData(byte[] rData, DataTable dt)
        {
            //请求设备数
            int len = 256 * Convert.ToInt32(rData[10]) + Convert.ToInt32(rData[11]);
            if (len > 255)
            {
                return GetErrorData();
            }

            //请求开始地址
            int address = 256 * Convert.ToInt32(rData[8]) + Convert.ToInt32(rData[9]);
            short id = Convert.ToInt16(rData[6]);

            SetData(sendData,id,address, len, dt);

            byte[] datas = sendData.ToArray();

            return datas;
        }

        #endregion

   下载,解压,执行 ServiceTest.exe ,点开启服务,有些别的功能无需关注。开启端口 502。

   本程序类似QQ,可以最小化到右下角。绿色软件,无需安装,编写语言 C# 。.net framework 2.0,

  windows2008,win7 ,win10都可以用,别的没做过测试。

  模拟产生modbus数据工具_第1张图片

     请求哪个设备的数据,模拟程序就会返回哪个设备的数据。

     读取modbus数据的程序通过 socket 发送过来的数据 00 00 00 00 00 06 01 03 00 00 00 05

     模拟程序回送过来的数据 00 00 00 00 00 0d  01  03  0A 14 00  14 00  14 00  14 00  14 00

    其实这个就是所谓的 modbus 协议嘛,

   如果发送过来的域号设备号包含在模拟右边表格,模拟程序会回送给你一个报警数据,否则就回送一个正常数据。

     启动服务代码

  TcpSocket tcpSocket = new TcpSocket(this,dt);
            SocketDelegate d = new SocketDelegate(tcpSocket.GetData);

            tcp = new SocketServer(this.ServerPort);
            tcp.SetSocketDelegate(d);
            tcp.SetLogDelegate(new LogDelegate(AddMsg));
            tcp.ServerStart();

    报警数据就是换成二进制16位,第13位是1就是报警,是0就是正常。

   代码只是一部分的一部分,不要尝试着运行哦, 另外提供一个下载路径
   http://herb.15888.com.cn/load/kkk/ReleaseMoni.rar

   放心下载,尽心使用,绿色安全。

你可能感兴趣的:(技术)