使用 Python 对工业树莓派 I/O 进行远程控制

之前有一篇文章讲述了如何使用 Python 从虹科工业树莓派的过程映像文件中读写数据从而达到控制输入输出的谜底,可以使用三种方式:file 函数、ioctl 和 revpimodio2 库。其中以第三种方式最为简单方便。

首先让我们先回顾一下如何调用 revpimodio2 库,读写过程映像中的数据。

由上图可见,只需要先对 revpimodio 进行实例化,然后就可以直接通过变量名对数值进行操作了。这样一种方式确实十分方便,在可以满足大部分情况下的需求。但这种方式存在一个问题就是,python程序必须运行在本机上,且只能对本机的IO进行操作。但有时我们往往会遇到一些情况,需要对工业树莓派进行远程控制,甚至多个工业树莓派之间协同工作,互相调取过程数据。那遇到这种情况我们又该如何应对呢?

幸运的是 revpimodio2 库文件不仅仅包含了上面一种操作方式,还提供一种称为 RevPiNetIO 的调用方式。运行在其它机器上的 python 程序可以通过工业树莓派的IP地址建立远程连接,从而实现远程控制。但这种方式需要工业树莓派 RevPiPyLoad 的支持, RevPiPyLoad 将作为 RevPiNetIO 的服务器,提供通过网络读写过程映像数据的能力。

1.启用 RevPiPyLoad

RevPiPyLoad已预装载在虹科工业树莓派内,在正式开始之前我们首先需要启用这个功能。

# start daemon
sudo service revpipyload start

# stop daemon
sudo service revpipyload stop

# reload settings
sudo service revpipyload reload

# restart daemon
sudo service revpipyload restart

可通过sudo service revpipyload status命令查看服务运行状态,如出现无法连接情况,可尝试重启设备。

2.更改配置文件

更改以下配置文件,启用 plcslave 选项。

sudo nano /etc/revpipyload/revpipyload.conf


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

sudo nano /etc/revpipyload/aclplcslave.conf


向最后一行添加*.*.*.*,1,修改这个文件的作用是控制访问权限,允许文件中所添加的IP对应的主机进行远程控制访问。本例中允许所有主机进行访问控制。最后的“1”代表读写权限,“1”是可读可写。

3.尝试建立连接

工业树莓派已准备就绪,下面尝试使用远程主机建立连接。在本例中使用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 文件,并输入以下代码,并运行 :


运行效果如下:

4.总结

虽然本例实现的程序和效果都比较简单,但借助这个功能,开发者可以实现很多功能。最基本的就是对虹科工业树莓派进行远程控制。另外也可以通过创建多个RevPiNetIO实例,实现多个工业树莓派系统协同工作。

另外本文中使用的 RevPiPyLoad 的功能也不仅仅如此,它还可以作为图形配置工具 RevPiControl 的 server,或者通过MQTT协议将IO的数值发布出去。


关于 revpimodio2 和 RevPiPyLoad 的更多功能,可以参考以下网址:https://revpimodio.org/en/homepage/



坐沙发

发表评论

你的邮件地址不会公开


*