模擬C#與PLC Modbus TCP通訊,報文解析

上位机李工發表於2024-12-10

  模擬C#與PLC Modbus TCP通訊,報文解析模擬C#與PLC Modbus TCP通訊,報文解析

    private void button1_Click(object sender, EventArgs e)
        {
            TcpClient client = new TcpClient("192.168.200.84", 4198); // 替換為伺服器IP和埠
            NetworkStream stream = client.GetStream();
            try
            {
                // 十六進位制資料
                string hexData = "010308d40002865300";

                // 將十六進位制資料轉換為位元組陣列
                byte[] data = ConvertHexStringToByteArray(hexData);

                // 傳送資料
                stream.Write(data, 0, data.Length);

                // 接收響應
                data = new byte[1024];
                int bytes = stream.Read(data, 0, data.Length);
                string response = Encoding.Unicode.GetString(data, 0, bytes);

                byte[] byteDatas = Encoding.Unicode.GetBytes(response);

                string hexString = BitConverter.ToString(byteDatas).Replace("-"," ");

                textBox1.AppendText($"接收: { hexString}");
                textBox1.AppendText("\r\n");

                string hexValue = byteDatas[5].ToString("X2") + byteDatas[6].ToString("X2"); // 十六進位制數作為字串
                int result = Convert.ToInt32(hexValue, 16); // 轉換為十進位制

                textBox1.AppendText($"解析: { result}");
                textBox1.AppendText("\r\n");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                // 清理資源
                client.Close();
            }
        }

MODBUS TCP注意點

主機和從機、服務端和客戶端

模擬C#與PLC Modbus TCP通訊,報文解析

MODBUS請求響應模型

【在modbus協議中】

主機傳送modbus請求,從機根據請求內容向主機返回響應。在modbus協議中,主機總是主動方,從機總是被動方。

相關文章