差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:modbus [2020/06/22 11:09] – [Master / Slave 模擬測試] jonathan_tsai | tech:modbus [2020/08/29 08:42] (目前版本) – jonathan_tsai | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Modbus TCP 測試 ====== | ||
+ | |||
+ | ===== Master / Slave 模擬測試 ===== | ||
+ | - Slave 模擬設備環境 Exp. 192.168.11.247 : CentOS8 (PVE6 CT template) <code sh> | ||
+ | yum install wget tar | ||
+ | wget https:// | ||
+ | tar -xvf diagslave.tgz | ||
+ | cd diagslave/ | ||
+ | ./diagslave -m tcp | ||
+ | </ | ||
+ | - Master 模擬控制環境 : CentOS8 (PVE6 CT template) <code sh> | ||
+ | yum install wget tar | ||
+ | wget https:// | ||
+ | tar -xvf modpoll.tgz | ||
+ | cd modpoll/ | ||
+ | ./modpoll -m tcp 192.168.11.247 | ||
+ | </ | ||
+ | - [[http:// | ||
+ | |||
+ | < | ||
+ | * 設定開機可以直接啟動 <code sh> | ||
+ | crontab -e | ||
+ | </ | ||
+ | @reboot / | ||
+ | </ | ||
+ | * 重開機後可以看到 /tmp/t.log 出現執行的紀錄訊息 | ||
+ | |||
+ | * 參考網址 - https:// | ||
+ | </ | ||
+ | |||
+ | ===== 使用 Perl 開發 Client(Master) 程式 ===== | ||
+ | - 安裝環境 CentOS8 (PVE6 CT Template) | ||
+ | - 安裝相關模組套件 <code sh> | ||
+ | yum install perl gcc | ||
+ | perl -MCPAN -e shell | ||
+ | upgrade | ||
+ | force install Net:: | ||
+ | install Device:: | ||
+ | exit | ||
+ | </ | ||
+ | - 撰寫簡單讀取測試程式 t.pl < | ||
+ | #! / | ||
+ | |||
+ | use Device:: | ||
+ | use Data:: | ||
+ | use strict; | ||
+ | use warnings; | ||
+ | use v5.10; | ||
+ | |||
+ | my $client = Device:: | ||
+ | host => ' | ||
+ | ); | ||
+ | |||
+ | my $req = $client-> | ||
+ | unit => 3, | ||
+ | address | ||
+ | quantity => 1 | ||
+ | ); | ||
+ | |||
+ | say Dumper $req; | ||
+ | $client-> | ||
+ | my $response = $client-> | ||
+ | say Dumper $response; | ||
+ | |||
+ | $client-> | ||
+ | </ | ||
+ | perl t.pl</ | ||
+ | - 撰寫簡單寫入測試程式 t1.pl < | ||
+ | #! / | ||
+ | |||
+ | use Device:: | ||
+ | use Data:: | ||
+ | use strict; | ||
+ | use warnings; | ||
+ | use v5.10; | ||
+ | |||
+ | my $client = Device:: | ||
+ | host => ' | ||
+ | ); | ||
+ | |||
+ | # Write reg0 -> 12345 | ||
+ | my $req = $client-> | ||
+ | unit => 1, | ||
+ | address | ||
+ | value => 15 | ||
+ | ); | ||
+ | |||
+ | say Dumper $req; | ||
+ | $client-> | ||
+ | my $response = $client-> | ||
+ | say Dumper $response; | ||
+ | |||
+ | |||
+ | $client-> | ||
+ | </ | ||
+ | * 讀寫入的方式有以下幾種 : 參考網址 - https:// | ||
+ | * $req = $client-> | ||
+ | * $req = $client-> | ||
+ | * $req = $client-> | ||
+ | * $req = $client-> | ||
+ | * $req = $client-> | ||
+ | * $req = $client-> | ||
+ | * $req = $client-> | ||
+ | my $req = $client-> | ||
+ | unit => 1, | ||
+ | address | ||
+ | values | ||
+ | ); | ||
+ | </ | ||
+ | * $req = $client-> | ||
+ | my $req = $client-> | ||
+ | unit => 1, | ||
+ | address | ||
+ | values | ||
+ | ); | ||
+ | </ | ||
+ | * $req = $client-> | ||
+ | my $req = $client-> | ||
+ | unit => 1, | ||
+ | read_address | ||
+ | read_quantity => 5, | ||
+ | write_address => 9, | ||
+ | values | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | ===== 使用 PHP 開發 Client(Master) 程式 ===== | ||
+ | - 安裝環境 CentOS8 (PVE6 CT Template) | ||
+ | - 安裝相關模組套件 <code sh> | ||
+ | yum install php php-json | ||
+ | mkdir -p / | ||
+ | cd / | ||
+ | php -r " | ||
+ | php -r "if (hash_file(' | ||
+ | php composer-setup.php | ||
+ | php -r " | ||
+ | ./ | ||
+ | ./ | ||
+ | </ | ||
+ | - 撰寫簡單讀取測試程式 t.php < | ||
+ | mkdir -p / | ||
+ | cd / | ||
+ | vi t.php | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | | ||
+ | |||
+ | |||
+ | ===== 參考網址 ===== | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | |||
+ | {{tag> | ||