PLCNEXT#PyPlcnextRscを使ってみよう_1

RSCはRemote Service Callsの略称でPLCNEXTのProcessとデバイス間で通信します。RSCはAPIを提供しており、そのAPIを使用することによってPLCNEXT Technology Firmwareのコア的なコンポーネントにアクセスできるようになります。

RSC Serviceは以下のエリアで使用できます。

  • Axioline services
    • Axiolineデバイスのデータ読み書き
  • PROFINET services
    • Profinet デバイスのデータ読み書き
  • Device Interface services
    • オペレーションシステムとコントローラーハードウェアの情報アクセス
  • GDS services
    • GDS(Global Data Space)データ読み書き

PyPlcnextRsc Installation

以下のコマンドでPython版のRsc Service ライブラリをインストールできます。

PyPLCnextRscは簡単なRSC Client ライブラリでPythonからRSC Serviceを使用することができます。

注意するのはこのPackgeはまだ開発中なので、機能も100%揃えていません。

pip install -U pyplcnextrsc

Documents

https://pyplcnextrsc.readthedocs.io/en/latest/index.html

Reference Link

以下はPLCNEXTの関連記事です。

http://soup01.com/ja/category/plcnext/

Edit the RscGatway.settings

このPackageはTLS SocketをDefaultですが、セットアップするのは少し面倒なのでTLSなしでアクセスしようと思います。

そのためにRscGatway.settingsを修正する必要があります。

cd /etc/plcnext/device/System/RscGateway/
nano RscGatway.settings

うん…File ‘RscGateway.settings’ is unwriteableのメッセージが出てきます。

ではsudo でAdminを試してみます。

sudo nano RscGatway.settings

user admin is not allowed to execute… as root on axcf2152.

ではrootなら編集権限があるってことですね。


Change Root Password

以下のコマンドでroot Passwordを変更します。

sudo passwd root

New passwordを入力します。

Retype new passwordで、もう一度入力します。

Password変更OK。

Login as root

rootをLoginします。

su root

root@axcf2152になりました。

前回のRscGatway.settings を修正します。

nano RscGatway.settings

よし、メッセージなし。

<Gateways></Gateways>のとろろに、<TcpGatewaySettings …>の記述があります。

その下に以下の記述を追加します。

それにより、41111はTLSなしのPortとして開放します。Fileを保存しPLCENXTを再起動します。

<TcpGatewaySettings gatewayId=”2″ tcpPort=”41111″ sessionTimeout=”300000″ encrypted=”false” />

Example1

こちらはExample1です。ドキュメントと記述しているCodeとほぼかわりません。

ExtraConfigure()を作成するにはPyPlcnextRscのDevice ObjectはDefaultがTLS有効になってるため、別のConfigurationを作成し渡す必要があります。なのでconf.useTls = False記述があります。

次はsecureInfoSupplier=ConsoleSupplierExampleでは、PlcnextRscを使用するにはLoginが必要です。もちろんこのようにsecureInfoSupplier = lambda:(“admin”,”my_pass”)でも問題ありませんが、基本的にPasswordはコード内に書きません。

ライブラリではConsoleSupplierExampleとGUISupplierExample 2種類のがあり、Login動作できるExampleを提供しています。

from PyPlcnextRsc import Device,GUISupplierExample,ConsoleSupplierExample,ExtraConfigure
from PyPlcnextRsc.Arp.Plc.Domain.Services import IPlcManagerService, PlcStartKind

conf = ExtraConfigure()
conf.useTls = False
with Device(‘192.168.3.2’, secureInfoSupplier=ConsoleSupplierExample, port=41111, config=conf) as device:
print(“Device is connected!”)

実際そのコードを実行すると、UserNameの入力が求められます。

adminを入力しEnterします。

Passwordを入力し、Enterします。

Device is connected!のテキストメッセージが表示されれば、Login成功のことです。

Example2

Example1とあまり変わらなく、secureInfoSupplier=GUISupplierExampleに変更しただけです。

from PyPlcnextRsc import Device,GUISupplierExample,ConsoleSupplierExample,ExtraConfigure
from PyPlcnextRsc.Arp.Plc.Domain.Services import IPlcManagerService, PlcStartKind

conf = ExtraConfigure()
conf.useTls = False

with Device(‘192.168.3.2’, secureInfoSupplier=GUISupplierExample, port=41111, config=conf) as device:
    print(‘Device is connected..’)

Error:Your Python doesn’t have tkinter for GUI

もしCodeを実行するときこのエラーが出たら、まずtkinterをインストールする必要があります。

Error :Your Python doesn’t have tkinter for GUI

以下のコマンドを実行します。

sudo apt-get install python3-tk

Do you want to continue?出たら、Yを入力しEnterします。

しばらく待つと、インストール完了。

Run again

今回はUserNameとPasswordがLoginする画面になります。

同じくDevice is connected..のメッセージが出たら、実行成功です。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする