Modbus TCP နှင့်ဆက်သွယ်စဉ်ခြွင်းချက်တုံ့ပြန်မှုများကြုံတွေ့ရသည့်ခြွင်းချက်တုံ့ပြန်မှုများမှာဘုံစိန်ခေါ်မှုတစ်ခုဖြစ်သည်။ ဒေတာထုတ်လွှင့်မှု၏တည်ငြိမ်မှုနှင့်တိကျမှန်ကန်မှုကိုသေချာစေရန် developer များသည် PHP တွင်ဤချွင်းချက်များကိုမှန်ကန်စွာကိုင်တွယ်ရန်လိုအပ်သည်။ Modbus TCP ခြွင်းချက်များကို PHP မှတစ်ဆင့် Modbus TCP ခြွင်းချက်တုံ့ပြန်မှုများကိုမည်သို့ကိုင်တွယ်ဖြေရှင်းနိုင်ပုံမှတစ်ဆင့်ဤဆောင်းပါးသည်သင့်အားလမ်းပြပါမည်။
Modbus TCP protocol ကိုစက်မှုလုပ်ငန်းအလိုအလျောက်နယ်ပယ်တွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ ၎င်းသည် TCP / IP protocol ကို အခြေခံ. PLC နှင့်ကွန်ပျူတာအကြားဆက်သွယ်မှုအတွက်အသုံးပြုသည်။ Protocol ၏ဝိသေသလက္ခဏာများကြောင့် Modbus TCP သည်အချိန်ကုန်များ, မမှန်ကန်သော function codes များကဲ့သို့သောခြွင်းချက်တုံ့ပြန်မှုအမျိုးမျိုးကိုကြုံတွေ့ရနိုင်သည်။ ဤပြ problems နာများကို programming များမှတဆင့် developer များမှ developer များမှကိုင်တွယ်ရန်လိုအပ်သည်။
Modbus TCP ခြွင်းချက်တုန့်ပြန်မှု PHP တွင် TCP ချွင်းချက်ဆိုင်ရာတုန့်ပြန်မှုများကိုကိုင်တွယ်ရန် Modbus Device နှင့် TCP / IP ဆက်သွယ်မှုကိုပထမဆုံးတည်ဆောက်ရမည်။ ကွန်ယက်ဆက်သွယ်မှုကို PHP ၏ built-in အခြား socket function မှတဆင့်ပြီးစီးနိုင်သည်။ ဤတွင် Modbus Device နှင့်ချိတ်ဆက်ထားသောနမူနာကုဒ်ဖြစ်သည်။
$ip = "192.168.0.1"; $port = 502; $timeout = 5; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0)); $result = socket_connect($socket, $ip, $port);
အထက်ဖော်ပြပါကုဒ်များတွင် $ IP နှင့် $ port ကိုအမှန်တကယ်အခြေအနေအရပြုပြင်ရန်လိုအပ်သည်။ $ အချိန်သည်စက္ကန့်ပိုင်းအတွင်းဆက်သွယ်မှု၏အချိန်ကုန်ဖြစ်သည်။
Modbus Device နှင့်ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ပြီးနောက်အချက်အလက်များကိုတိကျသောလုပ်ဆောင်ချက်ကုဒ်မှတဆင့်ဖတ်ရန်နှင့်ရေးနိုင်သည်။ Modbus စက်သည်တုန့်ပြန်မှုအချက်အလက်များကိုပြန်ပို့လိမ့်မည်။ အကယ်. တုန့်ပြန်မှုတွင်ခြွင်းချက်အချက်အလက်များပါ 0 င်ပါကတုန့်ပြန်မှုတွင်အမှားကုဒ်အပေါ် အခြေခံ. တရားစီရင်ရန်လိုအပ်သည်။ ဤနေရာတွင်ချွင်းချက်တုံ့ပြန်မှုများကိုကိုင်တွယ်ရန်အတွက်နမူနာကုဒ်ဖြစ်သည်။
$functionCode = 0x03; $address = 0; $length = 10; $request = pack("nnnn", 0, $functionCode, $address, $length); socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 1024); if ($response !== false) { $data = unpack("ntransactionId/nprotocol/nlength/CunitCode/CfunctionCode/data", $response); $errorCode = ord($data['data'][0]); if ($errorCode != 0) { echo "Modbus TCP exception: " . $errorCode; } else { $values = array_slice($data['data'], 1); } } else { echo "Failed to read Modbus TCP response"; }
ဤကုဒ်တွင်တောင်းဆိုမှုကိုပေးပို့ပြီးနောက် Modbus device ၏တုန့်ပြန်မှုအချက်အလက်များကို Socket_read function မှတဆင့်ဖတ်ပါ။ တုန့်ပြန်မှုအချက်အလက်များတွင်အမှားကုဒ်အမှားအယွင်းကိုခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့်ခြွင်းချက်တစ်ခုရှိမရှိဆုံးဖြတ်သည်။ အကယ်. အမှားကုဒ်သည် 0 မဟုတ်လျှင်၎င်းသည်ခြွင်းချက်တစ်ခုဖြစ်ပွားခဲ့သည်ဟုဆိုလိုသည်။
အထက်ပါဥပမာအားဖြင့် Modbus TCP ၏ခြွင်းချက်တုံ့ပြန်မှုများကိုသင်ဖြေရှင်းနိုင်သည်။ Modbus Community ၏တည်ငြိမ်မှုနှင့်အချက်အလက်များ၏တိကျမှန်ကန်မှုကိုသေချာစေရန်မှန်ကန်သောခြွင်းချက်ကိုင်တွယ်နည်းလမ်းသည်အလွန်အရေးကြီးသည်။
ယေဘုယျအားဖြင့် PHP ၏ Socket function သည် Modbus TCP ဆက်သွယ်ရေးအတွက်ယုံကြည်စိတ်ချရသောကွန်ရက်အထောက်အပံ့များကိုထောက်ပံ့ပေးသည်။ ပြန်လာသောတုန့်ပြန်မှုအချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့်အမှားကုဒ်အပေါ် အခြေခံ. သင့်လျော်သောအပြောင်းအလဲနဲ့လုပ်ခြင်းဖြင့်ဆက်သွယ်ရေး၏ယုံကြည်စိတ်ချရမှုနှင့်စနစ်၏စွမ်းဆောင်ရည်ကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။