လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Modbus TCP command ခွဲခြမ်းစိတ်ဖြာမှုနှင့်တုန့်ပြန်မှုအပြောင်းအလဲများအကောင်အထည်ဖော်ရန် PHP တွင်သင်ခန်းစာ

Modbus TCP command ခွဲခြမ်းစိတ်ဖြာမှုနှင့်တုန့်ပြန်မှုအပြောင်းအလဲများအကောင်အထည်ဖော်ရန် PHP တွင်သင်ခန်းစာ

M66 2025-09-11

ယေဘုယျအမြင်

Modbus သည်စက်မှုလုပ်ငန်းမော်တော်ယာဉ်များနယ်ပယ်တွင်ကျယ်ပြန့်စွာအသုံးပြုသောဆက်သွယ်ရေးပရိုတိုကောတစ် ဦး ဖြစ်သည်။ Modbus TCP သည် TCP / IP ကွန်ယက်အပေါ် အခြေခံ. ၎င်း၏အကောင်အထည်ဖော်မှုနည်းလမ်းဖြစ်သည်။ Modbus TCP protocol ၏ PHP of Php လည်ပတ်မှုဖြင့်သင်သည်စာဖတ်ခြင်းနှင့်စာရေးခြင်း၏မှတ်ပုံတင်ခြင်းကဲ့သို့သောလုပ်ဆောင်မှုများကိုနားလည်သဘောပေါက်ရန် device data data data data data data များနှင့်အပြန်အလှန်ဆက်သွယ်နိုင်သည်။ ဤဆောင်းပါးသည် PHP Parsing Modbus TCP command များနှင့်တုံ့ပြန်မှုများကိုမိတ်ဆက်ပေးပြီးလက်တွေ့ကျကျကုဒ်များကိုဥပမာပေးပါမည်။

Modbus TCP ဆက်သွယ်ရေးလုပ်ငန်းစဉ်

PHP တွင်ဆက်သွယ်ရေးအတွက် Modbus TCP ကိုအသုံးပြုခြင်း၏အခြေခံဖြစ်စဉ်မှာအောက်ပါအတိုင်းဖြစ်သည် -

  • TCP ဆက်သွယ်မှုကိုတည်ဆောက်ပါ။ Modbus Device နှင့်ချိတ်ဆက်ရန် PHP Socket function ကိုသုံးပါ။
  • Assembered Modbus Command: protocol format များတွင်မှတ်ပုံတင်ခြင်းသို့မဟုတ်ရေးသော binary command များကိုထုတ်လုပ်ပါ။
  • Command Send: TCP ဆက်သွယ်မှုမှတစ်ဆင့် device ကို device သို့ပို့ပါ။
  • Response Response: Device မှပြန်လာသောအချက်အလက်များကိုလက်ခံရရှိရန် PHP ကိုသုံးပါ။
  • ခွဲခြမ်းစိတ်ဖြာမှုတုံ့ပြန်မှု - binary data ကို processing အတွက်ဖတ်လို့ရအောင် format နဲ့ parse format ။

PHP နမူနာကုဒ်

<?php
// Modbusပစ္စည်းကိရိယာသတင်းအချက်အလက်
$host = '192.168.1.1';  // Modbusပစ္စည်းကရိယာIPစကားပေြာဟော
$port = 502;            // Modbusပစ္စည်းကရိယာ端口号

// Modbusအမိန့်
$readCommand = pack('nnnn', 0x0001, 0x0004, 0x0000, 0x0008);  // Registers ကိုဖတ်ပါ0x0000~0x0008
$writeCommand = pack('nnnC*', 0x0001, 0x0006, 0x0000, 0x01, 0x00, 0x0A);  // မှတ်ပုံတင်ရန်ရေးပါ0x0000အဘိုး0x0A

// တည်ထောင်TCPဆက်
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, $host, $port);
if (!$result) {
    die("ဆက်Modbusပစ္စည်းကရိယာ失败!");
}

// 发送读取အမိန့်
socket_write($socket, $readCommand, strlen($readCommand));

// တုံ့ပြန်မှုဒေတာကိုလက်ခံရရှိသည်
$response = socket_read($socket, 1024);
$registers = unpack('n*', substr($response, 9));  // ဖွင့်ပါမှတ်ပုံတင်ဒေတာ

// 打印读取到的寄存器အဘိုး
echo "读取到的寄存器အဘိုး:";
foreach ($registers as $register) {
    echo $register . " ";
}

// 发送写入အမိန့်
socket_write($socket, $writeCommand, strlen($writeCommand));

// တုံ့ပြန်မှုဒေတာကိုလက်ခံရရှိသည်
$response = socket_read($socket, 1024);

// parse တုံ့ပြန်မှုဒေတာ
// TODO: အရModbus协议parse တုံ့ပြန်မှုဒေတာ

// ရုပ်သိမ်းခြင်းTCPဆက်
socket_close($socket);
?>

ကုဒ်ဖော်ပြချက်

ဥပမာကုဒ်တွင် Modbus device ၏ IP နှင့်ဆိပ်ကမ်းပေါ်တွင် အခြေခံ. TCP ဆက်သွယ်မှုကိုပထမ ဦး စွာတည်ထောင်ပါ။ စာဖတ်ခြင်းသို့မဟုတ်ရေးရန်ရေးသားထားသော command များကိုဖတ်ရန်သို့မဟုတ်ရေးရန်ရေးရန်စာဖတ်ခြင်းကို အသုံးပြု. TCP သို့ပေးပို့ရန်စာဖတ်ခြင်းများကိုပြောင်းလဲရန် Pack () function ကိုသုံးပါ။ ကိရိယာမှပြန်လာသောအချက်အလက်များကိုလက်ခံရရှိပြီးနောက်မှတ်ပုံတင်တန်ဖိုးကိုဖြည်ချခြင်းဖြင့်ခွဲခြမ်းစိတ်ဖြာသည်။ Read Value ကိုလိုအပ်ချက်အရထပ်မံလုပ်ဆောင်နိုင်သည်။

အကျဉ်းချုပ်

PHP မှတစ်ဆင့် Modbus ထုတ်ကုန်များနှင့်ဒေတာအပြန်အလှန်အကျိုးသက်ရောက်မှုကိုရရှိနိုင်ပါသည်။ ဤဆောင်းပါးသည်အခြေခံဆက်သွယ်ရေးလုပ်ငန်းစဉ်နှင့်ကုဒ်သင်္ကေတများကိုပိုမိုရှုပ်ထွေးသောလုပ်ဆောင်မှုများကိုအကောင်အထည်ဖော်ရန်နှင့်စက်မှုလုပ်ငန်းအလိုအလျောက်လုပ်ငန်းလည်ပတ်မှုဆိုင်ရာအချက်အလက်ပြုပြင်ခြင်းစွမ်းရည်များကိုတိုးတက်စေရန်ဤအခြေခံဖြင့်ချဲ့ထွင်နိုင်သည်။

မကြာသေးမီ ဆောင်းပါးများ