Beckhoff#SPT Framework_Part2_FB_SingleSolenoidFeedback

今回の記事ではSPT Frameworkを紹介します。第2話はFB_SingleSolenoidとFB_SingleSolenoidFeedbackを紹介し、またFactoryIOとOPC UA連携して実際の動作を検証します。

さ、FAを楽しもう。

Reference Link

Beckhoff#SPT Framework_Part1

Reference Video

自分のSPTフレームワークの紹介ビデオとライブコード動画です。

Download Library

下記のGithubからBeckhoff USAのSPT ライブラリをDownloadできます。

https://github.com/Beckhoff-USA-Community/SPT-Libraries

DownloadされたZIPを解凍します。

Add Library

SPTライブラリを追加するため、References>Add Libraryします。

Advancedボタンをクリックします。

Library Respository..を開きます。

Library Respositoryの設定画面が表示されました。

Edit LocationsをクリックしLibraryの格納Locationを追加します。

Add で新しいライブラリを追加します。

…をクリックします。

先程GithubからDownloadされたライブラリにSPT-Libraries-main>Library Repositoryを指定します。

Nameは特に指定する必要がありませんが、今回は仮にSPTにします。

Done!

CompanyにBeckhoff Automation LLC(つまりBeckhoff USA)が作ったライブラリが見えました。

中にSPT Driversなどのライブラリがあります。

あとはAdd Libraryを使ってSPT ライブラリをプロジェクトに追加すればOKです。

Implementation1

最初にFB_SingleSolenoidを紹介します。

FB_SingleSolenoid

FB_SingleSolenoidは単一のソレノイド(オン => EXTENDコマンド)とフィードバックなしのシリンダを表Function Blockになります。

  • extends FB_ComponentBase
  • implements I_Solenoid

こちらはFB_SingleSolenoidの図になります。

Properties

こちらはFB_SingleSolenoidのPropertyの説明になります。

  • R=読み
  • W=書き込む
Property名データ・タイプアクセス用途
ExtendedBOOLRTRUE=シリンダーがEXTENDされていた
ExtendedOutputBOOLRTRUE=EXTENDコマンド発行中
ExtendTimeLREALRWEXTENDのタイムアウト時間の取得/設定(ミリ秒単位)
RetractedBOOLRTRUE=シリンダーがRetractedしていた
RetractOutputBOOLRTRUE=Retractedコマンド発行中
RetractTimeLREALRWretractのタイムアウト時間の取得/設定(ミリ秒単位)

Methods

こちらはFB_SingleSolenoidのPropertyの説明になります。

Method名戻り値データ・タイプ用途
ExtendnullシリンダーをExtend出力するコマンド
RetractnullシリンダーをRetract出力するコマンド

MAINプログラム

次はTwinCAT3でプログラムを作成しましょう。

GVL

こちらはシステムを手動モードに指定するか設定する変数です。

VAR_GLOBAL
xManualMode:BOOL;
END_VAR

GVL_OPCUA

こちらはFactory IOのOPC UA Serverと接続するための変数です。

{attribute ‘qualified_only’}
VAR_GLOBAL
{attribute ‘OPC.UA.DA’ := ‘1’}
qReturn:BOOL;
END_VAR

VAR

こちらはImplementation1で使用した変数になります。

  • Pusher0はFB_SingleSolenoidのInstanceです。
  • xExtendCmdは手動モードではないとき、Pusher0をExtendComd発行できます。
  • xManualModeはPusher0を手動モードに切り替えます。
PROGRAM MAIN
VAR
Pusher0:FB_SingleSolenoid;
xExtendCmd:BOOL;
xManualMode:BOOL;
test1:LREAL;
END_VAR

Code

こちらはPusher0の制御部分になります。

Pusher0.Name:=’Pusher0′;
Pusher0.CyclicLogic();

IF xManualMode THEN
Pusher0.AllowHMIControl();
ELSE
Pusher0.BlockHMIControl();
END_IF;

IF NOT xManualMode THEN
IF xExtendCmd THEN
Pusher0.Extend();
ELSE
Pusher0.Retract();
END_IF
END_IF;

GVL_OPCUA.qReturn:=

Pusher0.Extended;
Pusher0.Name:=’Pusher0′;

Pusher0のデバイス名を設定します。

Pusher0.CyclicLogic();

Pusher0の周期ロジックプログラムを有効にします。

Pusher0.Extend();/Pusher0.Retract();

Pusher0のExtendやRestractコマンドを手動モード以外のときに発行するMethodを呼び出し

ます。

GVL_OPCUA.qReturn:=Pusher0.Extended;

Pusher0の出力状態をFactoryIOに反映させます。

Visualization

Result

こちらの動画はFB_SingleSolenoidとFactoryIOを連携した動画です。

Beckhoff.Playing FB_SingleSolenoid and Factory IO

Imeplementation2

次はFB_SingleSolenoidFeedbackを紹介します。

FB_SingleSolenoidFeedback

FB_SingleSolenoidFeedbackは単一のソレノイド(オン =>EXTENDコマンド)と、extended/retractedを示すフィードバック・デバイスを持つシリンダを表すラFunction Blockになります。また、アクチュエータの実際の状態がタイムアウト時間よりも長く異なる場合にスローされるアラーム機能を含みます。

  • extends FB_SingleSolenoid

こちらがFB_SingleSolenoidFeedbackの図になります。

Properties

こちらはFB_SingleSolenoidFeedbackのPropertyの説明になります。

  • R=読み
  • W=書き込む
Property名データ・タイプアクセス用途
ExtendedInputBOOLWEXTENDEDフィードバック装置の状態設定
RetractedInputBOOLWRETRACTEDフィードバック装置の状態設定

MAINプログラム

次はTwinCAT3でプログラムを作成しましょう。

GVL_OPCUA

こちらはFactory IOのOPC UA Serverと接続するための変数です。

{attribute ‘qualified_only’}
VAR_GLOBAL
{attribute ‘OPC.UA.DA’ := ‘1’}
qReturn:BOOL;
{attribute ‘OPC.UA.DA’ := ‘1’}
iSignleSolExtFeedback:BOOL;
{attribute ‘OPC.UA.DA’ := ‘1’}
iSignleSolRetFeedback:BOOL;
{attribute ‘OPC.UA.DA’ := ‘1’}
qSignleSolCoomand:BOOL;

END_VAR

VAR

こちらはImplementation2で使用した変数になります。

  • Pusher2はFB_SingleSolenoidFeedbackのInstanceです。
  • xExtendCmdは手動モードではないとき、Pusher0をExtendComd発行できます。
  • xManualModeはPusher2を手動モードに切り替えます。
  • 今回の記事では実機がありませんので、xSimはPusher2をSimulation Modeに振り返るためのデバイス
PROGRAM pSingleSolWithFeedback
VAR
Pusher2:FB_SingleSolenoidFeedback;
xManualMode:BOOL;
xSim:BOOL;
xGO:BOOL;
END_VAR

Code

こちらはPusher2の制御部分になります。

xManualMode:=GVL.xManualMode;

Pusher2.Name:=’Pusher2′;
Pusher2.CyclicLogic();
Pusher2.InSimulation:=xSim;

Pusher2.ExtendedInput:=GVL_OPCUA.iSignleSolExtFeedback;
Pusher2.RetractedInput:=GVL_OPCUA.iSignleSolRetFeedback;

IF xManualMode THEN
Pusher2.AllowHMIControl();
ELSE
Pusher2.BlockHMIControl();
END_IF;


IF NOT xManualMode THEN
IF xGO THEN
Pusher2.Extend();
ELSE
Pusher2.Retract();
END_IF
END_IF;

GVL_OPCUA.qSignleSolCoomand:=

Pusher2.Extended;
Pusher2.Name:=’Pusher2′;

Pusher2のデバイス名を設定します。

Pusher2.CyclicLogic();

Pusher2の周期ロジックプログラムを有効にします。

Pusher2.InSimulation:=xSim;

Pusher2をSimulationモードに切り替えます。

Pusher0.Extend();/Pusher0.Retract();

Pusher0のExtendやRestractコマンドを手動モード以外のときに発行するMethodを呼び出し

ます。

Pusher2.ExtendedInput:=GVL_OPCUA.iSignleSolExtFeedback;

FactoryIOのSensorシミュレーション状態をOPC UA経由でTwinCAT3にFeedbackします。

GVL_OPCUA.qReturn:=Pusher2.Extended;

Pusher2の出力状態をFactoryIOに反映させます。

Visualization

SPT FrameworkにあるHMI機能を活かすため、VisualizationにSPT FrameworkのHMI構造体をパラメータとして使用し、Templateを作成します。

Result

こちらの動画はFB_SingleSolenoidFeedbackとFactoryIOを連携した動画です。

Beckhoff.Playing FB_SingleSolenoidFeedback and Factory IO

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

シェアする

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

フォローする