【工業樹莓派】如何使用Python對RevPi I/O進行遠程控制?

 之前跟大家分享了如何使用Python從工業樹莓派的過程映像文件中讀寫數據從而達到控制輸入輸出的目的,可以使用三種方式:file函數、ioctl和revpimodio2庫。其中以第三種方式最為簡單方便。

 首先讓我們先回顧一下如何調用revpimodio2庫,讀寫過程映像中的數據。

 由上圖可見,只需要先對revpimodio進行實例化,然後就可以直接透過變量名對數值進行操作了。這樣一種方式確實十分方便,在可以滿足大部分情況下的需求。

 但這種方式存在的問題就是,python程序必須運行在本機上,且只能對本機的IO進行操作。但有時我們往往會遇到一些情況,需要對工業樹莓派進行遠程控制,甚至多個工業樹莓派之間協同工作,互相調取過程數據。那遇到這種情況我們又該如何應對呢?

    幸運的是revpimodio2庫文件不僅僅包含了上面一種操作方式,還提供一種稱為RevPiNetIO的調用方式。運行在其它機器上的python程序可以透過工業樹莓派的IP地址建立遠程連接,從而實現遠程控制。但這種方式需要工業樹莓派RevPiPyLoad的支持,RevPiPyLoad將作為RevPiNetIO的服務器,提供透過網路讀寫過程映像數據的能力。

▋ 啟用RevPiPyLoad

RevPiPyLoad已預裝載在工業樹莓派內,在正式開始之前首先需要啟用該功能。

可透過sudo service revpipyload status命令查看服務運行狀態,如出現無法連接情況,可嘗試重啟設備。

▋ 更改配置文件

之前有一篇文章講述瞭如何使用Python從虹科工業樹莓派的過程映像文件中讀寫數據從而達到控制輸入輸出的謎底,可以使用三種方式:file函數、ioctl和revpimodio2庫。其中以第三種方式最為簡單方便。

更改以下配置文件,啟用plcslave選項:

sudo nano /etc/revpipyload/revpipyload.conf 

Ctrl+X保存並退出。然後修改以下文件:

sudo nano /etc/revpipyload/aclplcslave.conf

    向最後一行添加:*.*.*.*,1,修改這個文件的作用是控制訪問權限,允許文件中所添加的IP對應的主機進行遠程控制訪問。本例中允許所有主機進行訪問控制。最後的“1”代表讀寫權限,“1”是可讀可寫。

▋ 嘗試建立連接

工業樹莓派已準備就緒,下面嘗試使用遠程主機建立連接。在本例中使用windows10系統的遠程主機。過程如下:

3.1 安裝revpimodio2

Windows電腦已安裝Python3運行環境,如未安裝,請先安裝Python。
首先win+R打開“運行”,輸入“cmd”並確認,從而打開命令提示符窗口。運行以下命令:
pip3 install revpimodio2
安裝完成之後python程序就可以調用revpimodio2庫了。

3.2 一段簡單的測試代碼

在windows電腦上新建test.py文件,輸入以下代碼,並運行。
上圖中IP地址為樹莓派的IP。此段代碼的作用就是每隔1s改變數字輸出通道1的輸出狀態。本例採用的是RevPi Compact,運行效果如下所示:
至此我們已經成功透過遠程主機對工業樹莓派進行遠程控制。如未成功,請檢查前面的配置或嘗試重啟設備。

3.3 更進一步

下面我們嘗試一個稍微複雜的程序,做一個類似流水燈一樣的效果。
新建LightSwitch.py文件,並輸入以下代碼,並運行:

運行效果如下:

▋ 嘗試建立連接

雖然本例實現的程序和效果都比較簡單,但藉助這個功能,開發者可以實現很多功能。最基本的就是對工業樹莓派進行遠程控制。另外也可以透過創建多個RevPiNetIO實例,實現多個工業樹莓派系統協同工作。

另外本文中使用的RevPiPyLoad的功能也不僅僅如此,它還可以作為圖形配置工具RevPiControl的server,或者透過MQTT協議將IO的數值發佈出去。

關於revpimodio2和RevPiPyLoad的更多功能,可以參考以下網址:https://revpimodio.org/en/homepage/

【查看更多案例】