工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

PLCnext CLI テンプレート

この記事は、PLCnext CLI バージョン 22.0.0 LTS に適用されます。


C++ を使用して PLCnext Control デバイスをプログラムする場合、おそらく PLCnext CLI でインストールされたコード テンプレートを使用したことがあるでしょう。

Visual Studio と Eclipse では、PLCnext プロジェクト ウィザード (PLCnext IDE 拡張機能と共にインストールされる) で新しいプロジェクトを作成するときに使用するプロジェクト テンプレートを選択する必要があります。

PLCnext CLI を使用してコマンドラインで新しい C++ プロジェクトを生成する場合、プロジェクト テンプレートも指定する必要があります。

3 つのデフォルト プロジェクト テンプレートは次のとおりです。

  project              The project is a template for user programs.
                       They are managed by the PLM (Program Library Manager).

  acfproject           The acfproject is a template for component based platform development.
                       The resulting component will be managed by the ACF
                       (Application Component Framework).

  consumablelibrary    The consumable library is a template, that creates a library
	                   which can be used by other projects.

上記の情報は、plcncli new を実行することで確認できます。 指図。これらのタイプのプロジェクトの詳細については、PLCnext Info Center をご覧ください:

この記事では、PLCnext CLI でインストールされる追加のプロジェクト テンプレートを有効にして使用する方法、および独自のプロジェクト テンプレートを作成して使用する方法について説明します。

しかし、最初に、PLCnext CLI テンプレート システムがどのように機能するかを見てみましょう。

PLCnext CLI テンプレート システム

PLCnext CLI には、TemplateLocations というデフォルト設定が含まれています。 、コード テンプレートの場所を示します。この設定の値は、次のコマンドで確認できます:

user@machine:~$ plcncli get setting TemplateLocations

{
  "setting": {
    "TemplateLocations": "./Templates/Templates.xml"
  }
}

xml ファイルへのパスは、plcncli に対する相対パスです。 インストール パス。

./Templates をブラウズすると ディレクトリ、Templates.xml が表示されます ファイル、およびいくつかのサブディレクトリ。

Templates.xml の内容の一覧表示 ファイル ...

user@machine:~/plcncli/Templates$ cat Templates.xml 
<?xml version="1.0" encoding="utf-8"?>
<Templates xmlns="http://www.phoenixcontact.com/schema/clitemplates">
  <Include type="Template">ProjectTemplate/TemplateDescription.xml</Include>
  <Include type="Template">ProgramTemplate/TemplateDescription.xml</Include>
  <Include type="Format">ProjectTemplate/FormatTemplates.xml</Include>
  <Include type="Template">ComponentTemplate/TemplateDescription.xml</Include>
  <Include type="Template">BaseTemplates/BaseTemplateDescription.xml</Include>
  <Include type="Template">BaseTemplates/CodeTemplateDescription.xml</Include>
  <Include type="Fields">BaseTemplates/FieldTemplates.xml</Include>
  <Include type="Types">BaseTemplates/TypeTemplates.xml</Include>
  <Include type="Format">BaseTemplates/FormatTemplates.xml</Include>
  <Include type="Template">AcfProjectTemplate/TemplateDescription.xml</Include>
  <Include type="Template">BaseProjectTemplate/TemplateDescription.xml</Include>
  <Include type="Template">AcfComponentTemplate/TemplateDescription.xml</Include>
  <Include type="Template">BaseComponentTemplate/TemplateDescription.xml</Include>
  <Include type="Template">ConsumableLibraryTemplate/TemplateDescription.xml</Include>
</Templates>

... TemplateDescription.xml への参照があることがわかります Templates の下のディレクトリにあるさまざまな種類のファイル ディレクトリ。これらには、そのテンプレートが使用されたときに何をすべきかを PLCnext CLI に伝える指示が含まれています。

上記のテンプレート記述ファイルは、既に使い慣れた 3 つのデフォルト プロジェクト テンプレートを実装しています。

追加のテンプレートを有効にする方法

PLCnext CLI とともにデフォルトでインストールされる「隠し」プロジェクト テンプレートが 1 つありますが、これはデフォルトでは使用できません:

  minimumproject    This is the same as acfproject, but without the capability to create 
	                Port variables in the Global Data Space.

MinimalAcfTemplates.xml を追加することで、このテンプレートを PLCnext CLI で利用できるようにすることができます。 ファイル - Templates ですでに気づいているかもしれません ディレクトリ - テンプレートの場所の設定へ:

user@machine:~$ plcncli set setting TemplateLocations ./Templates/MinimalAcfTemplates.xml --add

新しい XML ファイルがテンプレートの場所に追加されました:

user@machine:~$ plcncli get setting TemplateLocations

{
  "setting": {
    "TemplateLocations": "./Templates/Templates.xml;./Templates/MinimalAcfTemplates.xml"
  }
}

...そして plcncli new コマンドが実行されます、minimumproject オプションのリストに表示されるようになりました。このテンプレートを使用して、コマンド ラインから新しい C++ プロジェクトを作成できるようになりました。

注: プロジェクト テンプレートを PLCnext CLI に追加しても、プロジェクト テンプレートが Visual Studio または Eclipse プロジェクト ウィザードに自動的に追加されるわけではありません。

独自の PLCnext CLI テンプレートを作成する方法

カスタム PLCnext CLI テンプレートの作成は、簡単な例を使用して実演されます。 「Hello World!」を生成する PLCnext CLI テンプレートが作成されます。 C++ のコンソール アプリケーション。

手順は次のとおりです。

<オール>
  • 新しい PLCnext CLI プロジェクト テンプレートのディレクトリを作成します。

    Linux の場合:

    user@machine:~/plcncli/Templates$ mkdir ExeTemplate && cd ExeTemplate
    
  • テンプレート C++ コードを含むファイルを作成します。このファイルは、このタイプのすべての新しいプロジェクトの開始点として使用できます。

    user@machine:~/plcncli/Templates/ExeTemplate$ touch Main.cpp
    

    この例で使用されている C++ コードは次のとおりです。

    #include 
    
    int main() {
       std::cout << "Hello World!" << std::endl;
       return 0;
    }   
    
  • テンプレート cmake ソース ファイルを作成します。

    user@machine:~/plcncli/Templates/ExeTemplate$ touch CMakeLists.txt
    

    この例で使用される CMake コードは次のとおりです:

    cmake_minimum_required(VERSION 3.13)
    
    project($(name))
    
    if(NOT CMAKE_BUILD_TYPE)
      set(CMAKE_BUILD_TYPE Release)
    endif()
    
    ################# create target #######################################################
    
    file(GLOB_RECURSE Headers CONFIGURE_DEPENDS src/*.h src/*.hpp src/*.hxx)
    file(GLOB_RECURSE Sources CONFIGURE_DEPENDS src/*.cpp)
    add_executable(${CMAKE_PROJECT_NAME} ${Headers} ${Sources})
    
    #######################################################################################
    
    ################# set install directories #############################################
    
    string(REGEX REPLACE "^.*\\(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*$" "\\1" _ARP_SHORT_DEVICE_VERSION ${ARP_DEVICE_VERSION})
    set(BIN_INSTALL_DIR ${ARP_DEVICE}_${_ARP_SHORT_DEVICE_VERSION}/${CMAKE_BUILD_TYPE})
    
    #######################################################################################
    
    ################# project include-paths ###############################################
    
    target_include_directories(${CMAKE_PROJECT_NAME}
        PRIVATE
        $)
    
    #######################################################################################
    
    ################# include arp cmake module path #######################################
    
    list(INSERT CMAKE_MODULE_PATH 0 "${ARP_TOOLCHAIN_CMAKE_MODULE_PATH}")
    
    #######################################################################################
    
    ################# set link options ####################################################
    # WARNING: Without --no-undefined the linker will not check, whether all necessary    #
    #          libraries are linked. When a library which is necessary is not linked,     #
    #          the firmware will crash and there will be NO indication why it crashed.    #
    #######################################################################################
    
    target_link_options(${CMAKE_PROJECT_NAME} PRIVATE LINKER:--no-undefined)
    
    #######################################################################################
    
    ################# add link targets ####################################################
    
    find_package(ArpDevice REQUIRED)
    find_package(ArpProgramming REQUIRED)
    
    target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ArpDevice ArpProgramming)
    
    #######################################################################################
    
    ################# install #############################################################
    
    install(TARGETS ${CMAKE_PROJECT_NAME} RUNTIME DESTINATION ${BIN_INSTALL_DIR})
    unset(_ARP_SHORT_DEVICE_VERSION)
    
    #######################################################################################	
    

    CMake コードにはプレースホルダー $(name) が含まれていることに注意してください。 plcncli new に渡されるプロジェクトの名前に置き換えられます。 コマンド。

  • オプション:README ファイルを新しいテンプレート ディレクトリに追加します。これは、このテンプレートから作成された新しいプロジェクトごとに README ファイルを作成するためにも使用できます。

  • PLCnext CLI プロジェクト構成ファイルを作成します。

    このファイルは、PLCnext CLI のプロジェクト構成情報を保存するために使用されます。プロジェクトをビルドするターゲットのリスト。

    この例では、.proj ファイルは ConsumableLibraryTemplate からコピーされました ディレクトリを編集して、以下を生成します:

    <?xml version="1.0" encoding="utf-8"?>
    <ProjectSettings xmlns="http://www.phoenixcontact.com/schema/cliproject">
      <Type>exeproject</Type>
      <Version>0.1</Version>
      <Name>$(name)</Name>
    </ProjectSettings>
    

    Type フィールドには、このプロジェクト テンプレートの一意の名前が含まれている必要があります。これは、次のステップでテンプレート記述ファイルにも含まれます。

    Name フィールドにはプレースホルダー $(name) が含まれます これは、新しいプロジェクトを作成するたびにプロジェクト名に置き換えられます。

  • テンプレート記述ファイルを作成します。

    この例では、TemplateDescription.xml ファイルは ConsumableLibraryTemplate からコピーされました ディレクトリを編集して、以下を生成します:

    <?xml version="1.0" encoding="utf-8"?>
    <TemplateDescription name="exeproject" isRoot="true" basedOn="baseproject" supportedFirmwareVersions="19.0.0.16199" requiredCliVersion="19.0.0.660" version="1.0" 
                         xmlns="http://www.phoenixcontact.com/schema/clitemplates" identifier="ProjectSettingsIdentifier">
      <File name="plcnext.proj" template=".proj"/>
      <File name="CMakeLists.txt" template="CMakeLists.txt"/>
      <File name="README.md" template="README.md"/>
      <File name="$(name)Main.cpp" template="Main.cpp" path="src"/>
      <Description>Create a new stand-alone executable project.</Description>
      <Example>
        <Arguments>
          <Argument name="name" value="MyExe"/>
        </Arguments>
        <Description>creates a new stand-alone executable project in the directory 'MyExe'</Description>
      </Example>
    </TemplateDescription>
    

    テンプレートの説明には次のフィールドが含まれます:

    • name="exeproject" :コマンド plcncli new exeproject を使用して、このテンプレートからプロジェクトを作成できるようにします .
    • File name="A" template="B" path="C" :指定したテンプレート ファイルに基づいて、指定したパスの新しいプロジェクトにファイルを作成します。ファイル名には、$(name) のようなプレースホルダーを含めることもできます 。これは、新しいプロジェクトを作成するたびにプロジェクト名に置き換えられます。
    • DescriptionExample plcncli の関連セクションに表示されるフィールド ヘルプ システム。
  • 新しいテンプレート ファイルを作成します。これは、新しいテンプレートについて PLCnext CLI に伝えるために使用されます。

    この例では、MinimalAcfTemplates.xml Templates のファイル ディレクトリは CustomTemplates.xml という名前のファイルにコピーされました であり、そのファイルは次のように編集されました:

    <?xml version="1.0" encoding="utf-8"?>
    <Templates xmlns="http://www.phoenixcontact.com/schema/clitemplates">
             <Include type="Template">ExeTemplate/TemplateDescription.xml</Include>
    </Templates>
    
  • カスタム テンプレートを PLCnext CLI に登録します

    user@machine:~$ plcncli set setting TemplateLocations ./Templates/CustomTemplates.xml --add
    

    パスは、PLCnext CLI インストール ディレクトリに対する相対パスです。

  • 試してみてください!

    次の bash コマンドのリストは、新しいテンプレートの機能を示しています:

    plcncli new                                   # The help text includes the new template and description
    plcncli new exeproject --help                 # Displays the example showing how to use this template
    plcncli new exeproject --name "HelloWorld"    # Creates a new project based on the template
    cd HelloWorld
    plcncli set target -n AXCF2152 -v 2022 --add  # Sets the build target
    plcncli build                                 # Builds the project with the default template code
    scp bin/AXCF2152_22.0.3.129/Release/HelloWorld [email protected]:~  # Copies the executable to the device
    ssh [email protected]
    ./HelloWorld                                  # Runs the executable!
    
  • 貢献する

    将来的には、Github の PLCnext CLI Templates プロジェクトへのコントリビューションが可能になる予定です。それまでは、新しいテンプレートのアイデア、または自分で作成したテンプレートの例について問題を開くことができます。

    質問またはコメント?

    以下にコメントを投稿するか、PLCnext コミュニティ フォーラムで質問してください。


    産業技術

    1. C++ クラス テンプレート
    2. C++ テンプレート
    3. Python-XML 処理
    4. PLCnext Technology での VLAN セットアップ
    5. grpcurl を使用したリモート gRPC
    6. Alibaba Cloud コネクタの使用方法
    7. DHCP 上の PlcNext Web サーバーへのアクセス
    8. PLCnext を使って PC を WakeOnLan (WoL) にする
    9. PLCnextでのクラスタ管理?
    10. PLCnext Tableau ダッシュボード
    11. PLCnext Power BI レポート