Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

PLCnext CLI-Vorlagen

Dieser Artikel gilt für die PLCnext-CLI-Version 22.0.0 LTS.


Wenn Sie PLCnext Control-Geräte mit C++ programmieren, haben Sie wahrscheinlich Code-Vorlagen verwendet, die mit der PLCnext-CLI installiert werden.

In Visual Studio und Eclipse müssen Sie die Projektvorlage auswählen, die Sie verwenden möchten, wenn Sie ein neues Projekt mit dem PLCnext-Projektassistenten erstellen (wird mit der PLCnext-IDE-Erweiterung installiert).

Beim Generieren eines neuen C++-Projekts auf der Befehlszeile mit der PLCnext-CLI müssen Sie auch eine Projektvorlage angeben.

Die drei Standardprojektvorlagen sind:

  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.

Die obigen Informationen können durch Ausführen von plcncli new eingesehen werden Befehl. Weitere Informationen zu solchen Projekten finden Sie im PLCnext Info Center:

Dieser Artikel beschreibt, wie Sie zusätzliche Projektvorlagen aktivieren und verwenden, die mit der PLCnext CLI installiert werden, und wie Sie Ihre eigene Projektvorlage erstellen und verwenden.

Aber zuerst schauen wir uns an, wie das PLCnext CLI Template System funktioniert.

Das PLCnext CLI Template-System

Die PLCnext-CLI enthält eine Standardeinstellung namens TemplateLocations , die ihm mitteilt, wo Codevorlagen zu finden sind. Sie können den Wert dieser Einstellung mit dem folgenden Befehl anzeigen:

user@machine:~$ plcncli get setting TemplateLocations

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

Der Pfad zur XML-Datei ist relativ zu plcncli Installationspfad.

Wenn Sie zu ./Templates navigieren Verzeichnis, sehen Sie die Templates.xml Datei und eine Reihe von Unterverzeichnissen.

Auflisten des Inhalts von Templates.xml Datei ...

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>

... Sie sehen, dass es Verweise auf TemplateDescription.xml gibt Dateien verschiedener Typen in den Verzeichnissen unterhalb von Templates Verzeichnis. Diese enthalten Anweisungen, die der PLCnext-CLI mitteilen, was zu tun ist, wenn diese Vorlage verwendet wird.

Die oben gezeigten Vorlagenbeschreibungsdateien implementieren die drei Standardprojektvorlagen, mit denen Sie bereits vertraut sind.

So aktivieren Sie zusätzliche Vorlagen

Es gibt eine "versteckte" Projektvorlage, die standardmäßig mit der PLCnext CLI installiert wird, die standardmäßig nicht verfügbar ist:

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

Wir können diese Vorlage der PLCnext CLI zur Verfügung stellen, indem wir den MinimalAcfTemplates.xml hinzufügen -Datei - was Ihnen vielleicht schon beim Templates aufgefallen ist Verzeichnis - zur Einstellung der Vorlagenspeicherorte:

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

Die neue XML-Datei wurde nun zu den Vorlagenspeicherorten hinzugefügt:

user@machine:~$ plcncli get setting TemplateLocations

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

... und wenn die plcncli new Befehl wird ausgeführt, minimumproject erscheint nun in der Liste der Optionen. Diese Vorlage kann nun verwendet werden, um ein neues C++-Projekt über die Befehlszeile zu erstellen.

Hinweis: Durch das Hinzufügen einer Projektvorlage zur PLCnext CLI wird die Projektvorlage nicht automatisch zu den Visual Studio- oder Eclipse-Projektassistenten hinzugefügt.

So erstellen Sie Ihre eigene PLCnext-CLI-Vorlage

Anhand eines einfachen Beispiels wird die Erstellung eigener PLCnext-CLI-Templates demonstriert. Es wird ein PLCnext-CLI-Template erstellt, das ein "Hello World!" Konsolenanwendung in C++.

Das Verfahren ist wie folgt:

  1. Erstellen Sie ein Verzeichnis für die neue PLCnext CLI-Projektvorlage.

    Unter Linux:

    user@machine:~/plcncli/Templates$ mkdir ExeTemplate && cd ExeTemplate
    
  2. Erstellen Sie eine Datei mit C++-Vorlagencode, die als Ausgangspunkt für jedes neue Projekt dieses Typs verwendet werden kann.

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

    Der in diesem Beispiel verwendete C++-Code lautet:

    #include 
    
    int main() {
       std::cout << "Hello World!" << std::endl;
       return 0;
    }   
    
  3. Erstellen Sie eine Vorlagen-CMake-Quelldatei.

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

    Der in diesem Beispiel verwendete CMake-Code lautet:

    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)
    
    #######################################################################################	
    

    Beachten Sie, dass der CMake-Code den Platzhalter $(name) enthält , die durch den Namen des Projekts ersetzt wird, das an plcncli new übergeben wird Befehl.

  4. Optional:Fügen Sie dem neuen Vorlagenverzeichnis eine README-Datei hinzu, die auch verwendet werden kann, um eine README-Datei in jedem neuen Projekt zu erstellen, das aus dieser Vorlage erstellt wird.

  5. Erstellen Sie eine PLCnext CLI-Projektkonfigurationsdatei.

    Diese Datei dient zum Speichern von Projektkonfigurationsinformationen für die PLCnext CLI, z. die Liste der Ziele, für die das Projekt erstellt werden soll.

    Für dieses Beispiel die .proj Datei wurde von ConsumableLibraryTemplate kopiert Verzeichnis und bearbeitet, um Folgendes zu erzeugen:

    <?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>
    

    Die Type sollte den eindeutigen Namen dieser Projektvorlage enthalten, der im nächsten Schritt auch in die Vorlagenbeschreibungsdatei aufgenommen wird.

    Die Name enthält den Platzhalter $(name) , die bei der Erstellung jedes neuen Projekts durch den Projektnamen ersetzt wird.

  6. Erstellen Sie eine Vorlagenbeschreibungsdatei.

    Für dieses Beispiel die TemplateDescription.xml Datei wurde von ConsumableLibraryTemplate kopiert Verzeichnis und bearbeitet, um Folgendes zu erzeugen:

    <?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>
    

    Zu den Feldern in der Vorlagenbeschreibung gehören:

    • name="exeproject" :Ermöglicht das Erstellen von Projekten aus dieser Vorlage mit dem Befehl plcncli new exeproject .
    • File name="A" template="B" path="C" :Erstellt eine Datei im neuen Projekt im angegebenen Pfad basierend auf der angegebenen Vorlagendatei. Der Dateiname kann auch Platzhalter wie $(name) enthalten , die bei der Erstellung jedes neuen Projekts durch den Projektnamen ersetzt wird.
    • Description und Example Felder, die in den entsprechenden Abschnitten des plcncli angezeigt werden Hilfesystem.
  7. Erstellen Sie eine neue Vorlagendatei, die verwendet wird, um die PLCnext CLI über unsere neue(n) Vorlage(n) zu informieren.

    Für dieses Beispiel der MinimalAcfTemplates.xml Datei im Templates Verzeichnis wurde in eine Datei namens CustomTemplates.xml kopiert , und diese Datei wurde bearbeitet, um Folgendes zu erzeugen:

    <?xml version="1.0" encoding="utf-8"?>
    <Templates xmlns="http://www.phoenixcontact.com/schema/clitemplates">
             <Include type="Template">ExeTemplate/TemplateDescription.xml</Include>
    </Templates>
    
  8. Registrieren Sie die benutzerdefinierten Vorlagen mit der PLCnext CLI

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

    Der Pfad ist relativ zum Installationsverzeichnis der PLCnext CLI.

  9. Probieren Sie es aus!

    Die folgende Liste von Bash-Befehlen demonstriert die Funktionen der neuen Vorlage:

    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!
    

Beitragen

Zukünftig ist geplant, dass Beiträge zum Projekt PLCnext CLI Templates auf Github möglich sind. Bis dahin können Sie eine Ausgabe mit Ideen für neue Vorlagen oder mit Beispielen für selbst erstellte Vorlagen eröffnen.

Fragen oder Kommentare?

Posten Sie unten einen Kommentar oder stellen Sie Fragen im PLCnext Community Forum.


Industrietechnik

  1. C++-Klassenvorlagen
  2. C++-Vorlagen
  3. Python - XML-Verarbeitung
  4. VLAN-Setup in PLCnext Technology
  5. Remote-gRPC mit grpcurl
  6. So verwenden Sie den Alibaba Cloud Connector
  7. Zugriff auf den PlcNext-Webserver über DHCP
  8. Nutzen Sie PLCnext to WakeOnLan (WoL) Ihren PC
  9. Clusterverwaltung auf PLCnext?
  10. PLCnext Tableau-Dashboard