Modbus TCP သည်စက်မှုလုပ်ငန်းများအကြားအသုံးပြုသောဆက်သွယ်ရေးပရိုတိုကောဖြစ်ပြီးထုတ်ကုန်များအကြားဒေတာဖလှယ်မှုအတွက်အသုံးပြုသည်။ PHP ကို Modbus TCP သို့ PHP ကိုအသုံးပြုသောအခါ, ဆက်သွယ်ရေးအမှားများသည်အခါအားလျော်စွာဖြစ်ပေါ်လာသောစနစ်၏တည်ငြိမ်မှုကိုထိခိုက်စေနိုင်သည်။ ဤဆောင်းပါးသည် Modbus TCP ဆက်သွယ်ရေးအမှားများကိုအခြေခံအကြောင်းရင်းများကိုနက်နက်ရှိုင်းရှိုင်းဆန်းစစ်ကြည့်ရှုပါလိမ့်မည်။
Modbus TCP ဆက်သွယ်ရေးလုပ်ငန်းစဉ်အတွင်းတွင်အဓိကအမှားများတွင်အဓိကအားဖြင့် -
Modbus TCP ဆက်သွယ်ရေးကိုမစတင်မီ PHP ကွန်ယက်လုပ်ဆောင်ချက်များကို fsocopen () စက်ချိတ်ဆက်မှုအခြေအနေကိုရှာဖွေရန်။ ဆက်သွယ်မှုမအောင်မြင်ပါကသက်ဆိုင်ရာလုပ်ဆောင်မှုသည် connection ကိုပြန်လည်ရယူခြင်းကဲ့သို့သောအမှားကုဒ်နှင့်အညီပြုလုပ်သည်။
<?php
$ip = "192.168.1.100";
$port = 502;
$timeout = 1; // အချိန်ကုန်အချိန်ကိုသတ်မှတ်ပါ1စက်ဏန့်
<p>$socket = fsockopen($ip, $port, $errno, $errstr, $timeout);</p>
<p>if (!$socket) {<br>
echo "Error: " . $errno . " - " . $errstr;<br>
// လိုအပ်သောအဖြစ်အခြားအပြောင်းအလဲနဲ့ပြန်လည်ချိတ်ဆက်ပါ<br>
} else {<br>
// နောက်ဆက်တွဲလုပ်ဆောင်ခြင်းModbus TCPဆက်သွယ်ရေးလုပ်ငန်းများ<br>
// ...<br>
}</p>
<p>fclose($socket);<br>
?>
စက်ပစ္စည်းပျက်ကွက်ခြင်းသို့မဟုတ်ဆက်သွယ်မှုခြွင်းချက်တစ်ခုကြုံတွေ့ရသည့်အခါ PHP ၏ချွင်းချက်၏ခြွင်းချက်ယန္တရားကိုသုံး ပါ။ ချွင်းချက်ကိုဖမ်းယူပါ။
<?php
try {
// ကရိယာတန်းဆာModbus TCPဆက်သွယ်ရေးလုပ်ငန်းများ
// ...
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
// device ခြွင်းချက်ကိုင်တွယ်,စက်ကို restart လုပ်ပါ။
}
?>
Register address and function code သည်တရားဝင်ဖြစ်ပြီး Parameter သည်အမှားအယွင်းများကြောင့်ဖြစ်ပေါ်လာသောဆက်သွယ်ရေးပျက်ကွက်မှုကိုရှောင်ရှားရန်သေချာစေပါ။ Parameter Verification ကိုထုံးစံအတိုင်းလုပ်ဆောင်ချက်များမှတစ်ဆင့်လုပ်ဆောင်နိုင်ပြီးအမှားတစ်ခုချမှတ်လိမ့်မည်။
<?php
// မှတ်ပုံတင်လိပ်စာသည်တရားဝင်မရှိမရှိစစ်ဆေးပါ
function checkRegisterAddress($regAddress) {
if ($regAddress < 0 || $regAddress > 65535) {
throw new Exception("Invalid register address: " . $regAddress);
}
}
<p>// function code ကိုတရားဝင်ရှိမရှိစစ်ဆေးပါ<br>
function checkFunctionCode($functionCode) {<br>
if ($functionCode < 0 || $functionCode > 255) {<br>
throw new Exception("Invalid function code: " . $functionCode);<br>
}<br>
}</p>
<p>try {<br>
$registerAddress = 10000;<br>
$functionCode = 3;</p>
checkFunctionCode($functionCode);
// 继续ကရိယာတန်းဆာModbus TCPဆက်သွယ်ရေး
// ...
} ဖမ်းမိခြင်း (ခြွင်းချက် $ င) {
ပဲ့တင်သံ "အမှား -" ။ $ e-> gettessage ();
// parameter သည်ဆုံးမပဲ့ပြင်ခြင်းသို့မဟုတ်အခြားအပြောင်းအလဲနဲ့လုပ်ဆောင်ပါ
}
>
Modbus TCP ဆက်သွယ်ရေးကို PHP ပတ်ဝန်းကျင်တွင်အကောင်အထည်ဖော်သည့်အခါဆက်သွယ်ရေးအမှားများကိုတိကျစွာခွဲခြားသတ်မှတ်ရန်နှင့်ကိုင်တွယ်ရန်အလွန်အရေးကြီးသည်။ အဓိကမဟာဗျူဟာသုံးမျိုးမှတဆင့် - Network Connection ရှာဖွေတွေ့ရှိခြင်း, စက်ပစ္စည်းပျက်ကွက်ခြင်းနှင့် parameter surration ်ဌာန်းခြင်း, ကျိုးကြောင်းဆီလျော်သောကုဒ်ဖွဲ့စည်းပုံနှင့်ခြွင်းချက်ကိုင်တွယ်မှုကိုပေါင်းစပ်ခြင်းနှင့်ခြွင်းချက်ကိုင်တွယ်ခြင်းသည်စက်မှုထိန်းချုပ်မှုစနစ်၏ပုံမှန်လည်ပတ်မှုကိုထိရောက်စွာသေချာစွာစစ်ဆေးနိုင်သည်။ ဤနည်းလမ်းများ၏စဉ်ဆက်မပြတ်အကောင်းမြင်ခြင်းနှင့်အလေ့အကျင့်များသည်စနစ်၏ကြံ့ခိုင်မှုနှင့်အသုံးဝင်မှုကိုပိုမိုကောင်းမွန်စေသည်။