標籤:時機 mod 載入 str 採集 body windows div 開啟
在工控、物聯、智能等項目中MODBUS-RTU裝置是最常見的類型之一,它多採用RS485/232的匯流排通訊方式,MODBUS-RTU協議曆史悠久成熟可靠。我們今天說的就是使用PHP語言應用OHSCE架構進行MODBUS-RTU裝置的通用控制。
一、準備
PHP 5.4 及以上
OHSCE V0.1.26(FIX20170120) 及以上
電腦(充當上位機)一台
MODBUS控制器
相關配套散件
二、編寫控製程序
首先先確保您的OHSCE已經開啟了CLOUD_API和MODBUS_CLOUD_DRIVER功能,這各在V0.1.26及之後版本是預設開啟的。並確保您的上位機可以API.CLOUD.OHSCE.COM可靠連結。OHSCE在V0.1.25_B_2版本之後引入了CLOUD_API和CLOUD_DRIVER功能,這樣可以分立組件的升級頻率,不必頻繁的升級OHSCE主程式,選擇性的升級CLOUD_API和安裝CLOUD_DRIVER即可以在不升級主程式的情況下只要保證網路連通性即可使用最新的功能及驅動(前提是所需功能最低能夠支援到運行中的OHSCE主要版本)。從而達到升級頻率:OHSCE<OHSCE_CLOUD_API<OHSCE_CLOUD_DRIVER的目的。隨著測試正常的推薦,將會陸續上線非常豐富的協議支援和特定裝置的私人驅動支援。
在您的程式開頭初始化您的OHSCE架構環境,很簡單只要引入OHSCE的自動負載檔案即可。
<?php/*OHSCE_V0.1.26_B高可靠性的PHP通訊架構。HTTP://WWW.OHSCE.ORG@作者:林友哲 393562235@QQ.COM作者保留全部權利,請依照授權協議使用。*/ini_set(‘memory_limit‘,"64"); //重設php可以使用的記憶體大小為64Mset_time_limit(0); //程式不逾時 ob_implicit_flush(1); include(‘loadohsce.php‘); //引入OHSCE自動負載檔案
OHSCE自動負載檔案允許您將OHSCE儲存為名為ohsce的檔案夾並在上級目錄引入負載檔案從而使得您的程式碼更加的整潔。
|U PRO
|-/OHSCE/
|-loadohsce.php
現在查閱裝置的說明書,搞清需要讀/寫的資料的寄存器/線圈的地址,以便將待控裝置加入自己的程式邏輯。
在本例中我們我們選用了一台AOAIDODI全能的複合控制採集器但僅僅示範對00000H長為1的地址的繼電器(DO1)進行單路控制。即圖中接燈的那路。
例中使用COM7進行通訊,其實我們是將一個USB(通串)轉為RS485匯流排進行通訊,掛站一個地址為01,傳輸速率9600,校正無(N),資料位元8,停1。
Ohsce_eng_serial_creat($hscecom,"com7",1,0,9600,‘n‘,8,1); //我們建立了一個串口資源並存入了$hscecom變數中,串口為com7,許可權為1(寫讀),方式0(預設),傳輸速率9600,無校正,資料位元8,停止位1
該函數的更詳細的說明詳見手冊:Ohsce_eng_serial_creat
[這裡有一點注意部分WINDOWS朋友請務必核實您的串口的逾時機制已經開啟並設定了合適的逾時時間.否則會導致函數長時間阻塞.]
[LINUX下是/dev/ttyXX]
下一步確認我們的邏輯,示範中我們簡單的示範兩次呼吸,即閉開閉開。
Ohsce_eng_serial_open($hscecom); //開啟並佔用串口資源$test=null;ohsce_drive_cloud_modbus($hscecom,"RTU","write",‘01‘,"00000","FF00");//調用雲MODBUS驅動 方式一 使用此方式進行一次閉合sleep(1);Ohsce_eng_serial_write($hscecom,ohsce_drive_cloud_modbus($test,"RTU","write",‘01‘,"00000","0000")[‘data‘],false);//調用雲MODBUS驅動 方式二 使用此方式進行一次開啟sleep(1);Ohsce_eng_serial_write($hscecom,ohsce_drive_cloud_modbus($test,"RTU","write",‘01‘,"00000","FF00")[‘data‘],false);//調用雲MODBUS驅動 方式二 使用此方式進行一次閉合sleep(1);ohsce_drive_cloud_modbus($hscecom,"RTU","write",‘01‘,"00000","0000");//調用雲MODBUS驅動 方式一 使用此方式進行一次開啟Ohsce_eng_serial_close($hscecom);//不要忘記關閉串口資源
在例中我們示範了OHSCE中MODBUS雲驅動的兩種調用方式,方式一為全自動的調用方式含發送、接收回饋、校正並判斷結果為一體,方式二為單步調用,例如這裡就是近寫不考慮裝置反饋成功與否。
MODBUS_CLOUD_DRIVER位於手冊的/組件&外掛程式/DRIVER/中: 快速使用
完整的程式碼:
<?php/*OHSCE_V0.1.26_B高可靠性的PHP通訊架構。HTTP://WWW.OHSCE.ORG@作者:林友哲 393562235@QQ.COM作者保留全部權利,請依照授權協議使用。*/ini_set(‘memory_limit‘,"88M");//重設php可以使用的記憶體大小為64Mset_time_limit(0);ob_implicit_flush(1);include(‘loadohsce.php‘);sleep(10);echo ‘OK?‘;sleep(2);Ohsce_eng_serial_creat($hscecom,"com7");Ohsce_eng_serial_open($hscecom);$test=null;ohsce_drive_cloud_modbus($hscecom,"RTU","write",‘01‘,"00000","FF00");//調用雲MODBUS驅動 方式一sleep(1);Ohsce_eng_serial_write($hscecom,ohsce_drive_cloud_modbus($test,"RTU","write",‘01‘,"00000","0000")[‘data‘],false);//調用雲MODBUS驅動 方式二sleep(1);Ohsce_eng_serial_write($hscecom,ohsce_drive_cloud_modbus($test,"RTU","write",‘01‘,"00000","FF00")[‘data‘],false);sleep(1);ohsce_drive_cloud_modbus($hscecom,"RTU","write",‘01‘,"00000","0000");Ohsce_eng_serial_close($hscecom);
將其另存新檔test.php
三、運行測試
以WINDOWS系統為例(上位機絕大多數為WINDOWS)
編寫一個BAT(TEST.BAT)
php %cd%/test.php
確認串口閑置並為裝置上電,運行TEST.BAT
(無法查看視頻可看此簡圖)
四、附
測試期間CLOUD_API/CLOUD_DRIVER可能會有比較多的調整,所以儘可能的跟隨升級這兩個組件。由於我們的IDC資源目前相對有限,所以OHSCETRY/GUEST/FREE/OPEN等TOKEN調用API會有相對的限制。大頻率使用者可以聯絡我們進行本地化服務,本地化將失去和雲端同步升級、改進即時修正的優勢,每一次跟進都需要進行一次本地化。
官方網站:http://www.ohsce.org & http://www.ohsce.com
開發人員QQ群:374756165
GITHUB:https://github.com/OpenIBC/Ohsce
[email protected]:https://git.oschina.net/SFXH/Ohsce
手冊地址:http://www.ohsce.com/index.php/book/
合作&贊助:393562235([email protected])
捐助&支援OHSCE:http://www.ohsce.com/index.php/company/
使用PHP控制MODBUS-RTU裝置