模擬產生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數據的程序通過 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

   放心下載,盡心使用,綠色安全。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章