PLCNEXT#Create and import your C++ Program

前回はPLCNextでC++プログラムを作成するための下準備をしました。今回はどうやってPLCNext EngineeringにImportするかを説明します。よろしくおねがいします。

ではその前に、WindowsにインストールしたPLCnext CLIとPLCnext Technology SDKは一体なんなのかすこし見ていきましょう。

PLCnext CLI

PLCnext CLI はCommand Line Interface以下の役割があります。

  • Metaデータ生成
  • C++ Header Files生成
  • PLCnext Engineer ライブラリ生成

これらの機能は簡単なコマンドで実装されますが、また今度説明したいと思います。

*ちなみにCLIはCommand Line Interfaceです。(前回もCommand LineからSDKをインストールしたこと覚えていますか?)

plcncli install sdk -p “C:\sdk\pxc-glibc-x86_64-mingw32-axcf2152-image-mingw-cortexa9t2hf-neon-axcf2152-toolchain-2021.0.tar.xz” -d C:\SDKs\AXF2152\2121.0\

PLCnext Technology SDK

SDKはPLCNEXTでC++ プログラムを作成するのに必要なToolchainsとライブラリが揃えています。そのSDKはPLCnext CLI ツール経由でインストールされ、EclipseのAdd-inとなっています。

*ちなみにCLIはSoftware development kitです。

Reference Link

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

New Project

EclipseIDを起動します。

File>New>Projectで新規プロジェクトを作成。

PLCnext Technology>PLCnext Projectを選択>Nextします。

PLCnext C++ Projectを選び>Nextします。

Component Name/Program name/Project namespaceを入力しNextします。

Support Targetsの画面が出てきます。

自分がAXCF2152.2021.0.2 LTSしか入れていないので。それを選び>Addします。

TargetがAXCF2152になり>Finishします。

しばらく待ちます…

それでOKです!


Project Structure

プロジェクトが作成されたら以下のStructeになります。

LibraryLibraryBase classそれはDownloadできる最小のUnitです。(.soに変換します)一つのライブラリに複数のComponents Instanceが生成できます。
ComponentComponentBase classPLCnext Technology platformの関数群です。
ProgramProgramBase classPLCnext Technologyで実行するリアルタイムプログラム、IN/OUT portsは振り分ける。

実際プロジェクトを開くComponent・Programの部品もすでにありますね。

Templateもついています。


Build port

.hppを開きます。

これからPortを定義します。

Commentにも説明していますが、ここでもう一度簡単に紹介しますね。

まずExampleとしてmyIntVariableを定義します。

注意するのはnameはo_i16だと書いてるので実際PLCNEXT Engineerからみると変数の名前はmyIntVariableではなくo_i16です。

What is Port?

.hppの中にあるC++ Header FileはPortの定義が含まれています。定義されあPortはPublic classとして生成され、PLCNEXT Enginneringにも使えるようになります。

そのPortはAttrbuteによって詳しい定義ができます。

AttributeDescription
InputIN Portとして定義します。
OutputOUT Portとして定義します。
RetainRetain属性があり、Warm/hot Restartでも保持します。
OpcOpc Clientからアクセス可能。
EhmiPLCnext Engineer  HMIからアクセス可能。(2022-05-28時点で実装してない)
ProficloudProficloudからアクセス可能。
Redundant二重化属性、RFC 4072RなどおRCPUのみ

How to define?

以下は定義のExampleです。

Attributeは複数ある場合、| で分けます。PLCnext CLIはAttrbutesに沿ってMetadataを生成します。もし変数はAttrbutes含まれていないなら、プログラム内部だけの使用になります。

public:
//#port
//#attributes(Input|…)
//#name(…)
int16 myInPort;

Save

もちろんSaveを忘れずに。

Build

Buildします。

Errorがないか確認しましょう。


PLCNext Side

C++のアプリケーション用意が終わりましたので、次はPLCNEXT Enginnering側ですね。

Import library

まずPLCNext Engineeringを起動します。

右側にあるCOMPONENTS>Librariesで右クリック>Add User Libraryします。

先C++ Project内のBin FolderにあるPCWLX Filesを選び>Openします。

Import成功しました。

次はPLCNext Components & Programs>MyPLCNextProject>MyPLCNextComponentにMyPLCNextProgramがありますね。

Call in ESM

MyPLCNextProgramをReal Timeで実行したいのでESMの中にそのMyPLCNextProgramを呼び出すように追加します。

これでOK。

次はGDS Port ListのTabを開いてみます。

そのo_i16は先Attrbuteで定義したOUT Portですね!

Implement in MAIN Program

最後はMainでそのC++ のアプリケーションのOutput Portと繋がります。

変数を追加し、In Portを定義します。

これでOK。

最後はC++アプリケーションのOut portをそのIN PortとつながればOKです。

Test

PLCにプロジェクトをDownloadし、ちゃんと実行されましたね!

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

シェアする

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

フォローする