Beckhoff#TwinCAT3 TE1000 Variant_Part1 Basic

みなさん装置のプログラムを作成するとき以下の問題があったことありますか。

  • 装置Version 1.0
  • 装置Version 1.1、Version 1.0上でOption A付き
  • 装置Version 1.2、Version 1.0上でOption B付き
  • 装置Version 1.3、Version 1.1とVersion1.2

そのOptionはDriveとRemote IOを増やしてるとか、上位通信の追加とかAlarmかLogicがちょっとした追加や変更など様々です。4つの構成だけでも従来では4つのプロジェクトに分けるか、Bitで条件分け実行コードを制御するかです。

ですがTwinCAT Build 4024から”Variants”という機能があり、TwinCAT3のIDEで数Clickするだけで自動で全部切り替えるようになります。

そうすることによってプロジェクトの管理は簡単になり、ミスも減ります。

  1. シミュレーションの簡易化
    Simulationするとき実機がない場合が多く、従来はPLC Inputs/OutputsのMappingに変わり、一部のHardwareを無効か再Mappingする必要があります。Variantsは数Clickだけで実機バージョンとSimulationバージョンを切り替えられるようになります。
  2. Codeのメンテナンス性上がる
    違う装置だがCodeが似てるものがよくあり、一部の原因はそのシリーズの装置しかないOptionsがついてるとか。そのときVariants機能を使うとそのように細やかな変更のために複数のProject分ける必要なくなります。


Work Flow

Variantsを構築するには4つのStepが必要です。

まずVariants・Variable Groupを定義>そのVariantsを選択>有効>設定変更の流れになります。

Variants Sturcture

こちらは今回記事で作成するVariant環境です。

GroupはSimulationとRealに分かれています。

Simulation GroupにはSimulation Option1、Simulation Option2、Simulation Allの3つのOptionsがあります、Group内のProfinet・EtherCAT Interfaceは無効され、OptionsによりOPCUA Clientを切り替えます。

Real GroupはNoSimulation VariantのみでProfinetとEtherCATをEnableしてる。


Activate Toolbars

View>Toolbars>TwinCAT XAE Project VariantsでVariantsのToolbarsを有効にします。

Toolsbarから赤枠のIconが表示されます。

Manage Project Variants

まず赤枠の青いICONをクリックします。

VariantsやGroupsを作成するManage Project Variants画面が出てきます。

Create Variants

Nameの列で直接入力すればVariantsを作成できます。

今回は4つのVariantsを作りましょう。

Description

いわゆるコメントのようなものです。該当するVariantsはどんな特徴あるかを簡単で書きましょう。

Create Groups

GroupsのTabを開きます。

列に入力するとGroupsを作成できます。

今回はSimulationとReal2つのGroupsを作成します。

Assign Member

次はGroupsのメンバーを設定します。

Groussを選択すればとなりのMemberがCheckboxに入るようになります。

Simulation

Simulation Groupを選び>Memberの列にSimulateFullFreatures/SimulateOptions1/SimulateOptions2をCheck入れます。


Real

Verification

一度Drop ListからVariantsやGroupを確認しましょう。

[ ]内のはGroupです。いまはSimulationとReal2つのGroupがあります。

そして4つのVariantが作成されています。

Add some Fields IO

[All]のGroup選び>OPCUA Virtual/EtherCAT/Profinet Controller3つのField busを追加します。

Configure 

次は各GroupやVariantを構築します。

Simulation Group

[Simulation] Groupを設定します。

SimulationではOPC UA Clientを使用しますね。

OPCUA Clientを選択します。

View>Properties Windowします。

右側にProperties 設定画面出てきますね。

今度はOPC UA Clientを展開します。

Client#1をダブルクリックします。

右側のProperties>Project VariantsをTrueします。

同じくClient #2をダブルクリックします。

Properties>Disableを同じくTrueします。

そうするとClient#1とClient#2もVariantにより設定が変わるようになります。

SimulateOptions1

次はSimulateOptions1をDrop-Listから設定します。

Misc>EnableからClient #1をDisableします。

SimulationOptions2

次はSimulateOptions2です。

Misc>EnableからClient #2をDisableします。

Disable EtherCAT Group

SimulationではEtherCAT Field Busを使用しませんので[Simulation]Groupを選びます。

Device2(EtherCAT)をダブルクリックします。

Misc>直接Disableします。

Disable Profinet Group

SimulationではProfinet Field Busを使用しませんので[Simulation]Groupを選びます。

Misc>DsiabledをDisabledにします。

それでDevice2/Device3が無効してる状態になりました。

Real Group

[Real] Groupを設定します。


NoSimulations 

次はNo Simulations を選択します。

Device1 のOPCUA Clientを選択します。

Project Variants>DisbaleをTrueにします。

Enable EtherCAT

EtherCATのFieldbus>Misc>DisabledをEnabledに変更します。

Enable Profinet

ProfinetのFieldbus>Misc>DisabledをEnabledに変更します。

ICON Display

Variantsの設定に影響されるObjectが右上では小さな緑三角が表示されます。

Verification

ここで一回検証してみましょう。

Group-Simulation

まずGroup Simulationを選ぶと

Group-Real 

Variants-SimulateFullFreature

では実際にVariantでSimulateFullFreatureを選ぶと、OPCUA Client#1 Client#2が有効されましたが、EtherCATとProfinetが無効しました。

Variants-SimulationOptions1

SimulationOptions1 Variantを選択するとOPCUA Client#1さらに無効になりますね。

Variants-SimulationOptions2

SimulationOptions2 Variantを選択すると今度はOPCUA Client#2だけ無効になりますね。

Variants-NoSimulations

NoSimulation設定するとOPC UA Client自体が無効になる代わりにEtherCATとProfinetが有効になる状態です。

Play with PLC

今度は実際Variantの設定をPLCに取り込んでみます。まずPLCを選択します。

Properties Setup

次はView>Properties Windowをクリックします。

Project Variants>DefinesをTrueにします。

ProjectのTabを開きます。

下にCompiler Definesの項目がでてきます。

Choose your Variants

次は作業するVariants環境を設定します。今度は仮にSimulateOptions1を選びますね。

ImplicitのCheckBoxを入れます。

そうするとSimulateOptions1.Simulationが表示されます。

今度は別のVariants環境を試してみます。

そのImplicitにちゃんと反映されますね。

Test Program1

テストプログラムを作ります。今回はConditional Compliationも一緒に使用します。難しくないので単に文法とSTが少し違うだけです。

Program

いまが使用してるVariant環境を判断し、書き込みのDevice値が変わります。

PROGRAM MAIN
VAR
SimOptions:Int;
END_VAR



{IF (defined (SimulateOptions1)) }
{info ‘Simulate Options1’}
SimOptions:=1;
{END_IF}

{IF (defined (SimulateOptions2))}
{info ‘Simulate Options2’}
SimOptions:=2;
{END_IF}

Result

もしSimulateOptions2環境だと。

SimOptionsはいま2になります。

今度はSimulateOptions1にします。

SimOptionsはいま1になります。

Test2

GVL

Test1とあまり変わりなく、今回はGlobal Varaible Listから定義します。

{attribute ‘qualified_only’}
VAR_GLOBAL

{IF (defined (SimulateOptions1)) }
{info ‘Simulate Options1’}
bConfingsSimOptions1:BOOL:=TRUE;
{ELSE}
bConfingsSimOptions1:BOOL:=FALSE;
{END_IF}

{IF (defined (SimulateOptions2)) }
{info ‘Simulate Options1’}
bConfingsSimOptions2:BOOL:=TRUE;
{ELSE}
bConfingsSimOptions2:BOOL:=FALSE;
{END_IF}

END_VAR

PROGRAM

実際アプリケーションではそのデバイスの状態により実行するプログラムを分岐できます。

PROGRAM MAIN
VAR
SimOptions:Int;
END_VAR


IF GVL_MyConfigs.bConfingsSimOptions1 THEN
//your Code
SimOptions:=1;
END_IF

IF GVL_MyConfigs.bConfingsSimOptions2 THEN
//your Code
SimOptions:=2;
END_IF

Result-1

SimulateOptions1 Variant環境を設定するとSimOptionsは1になります。

Result-2

SimulateOptions2 Variant環境を設定するとSimOptionsは2になります。

以上になります。

次回はVariantを使用しさらにパラメータを分けれるような構築方法を紹介します。

よろしくお願いします。

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

シェアする

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

フォローする