Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Modèles CLI PLCnext

Cet article s'applique à PLCnext CLI version 22.0.0 LTS.


Si vous programmez des équipements PLCnext Control en C++, vous avez probablement utilisé des modèles de code installés avec la CLI PLCnext.

Dans Visual Studio et Eclipse, vous devez choisir le modèle de projet que vous souhaitez utiliser lors de la création d'un nouveau projet avec l'assistant de projet PLCnext (installé avec l'extension IDE PLCnext).

Lors de la génération d'un nouveau projet C++ en ligne de commande avec la CLI PLCnext, vous devez également spécifier un modèle de projet.

Les trois modèles de projet par défaut sont :

  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.

Les informations ci-dessus peuvent être vues en exécutant le plcncli new commande. Vous trouverez plus d'informations sur ces types de projets dans le centre d'informations PLCnext :

Cet article décrit comment activer et utiliser des modèles de projet supplémentaires installés avec la CLI PLCnext, et comment créer et utiliser votre propre modèle de projet.

Mais d'abord, regardons comment fonctionne le système PLCnext CLI Template.

Le système de modèles CLI PLCnext

La CLI PLCnext inclut un paramètre par défaut appelé TemplateLocations , qui lui indique où trouver les modèles de code. Vous pouvez voir la valeur de ce paramètre avec la commande suivante :

user@machine:~$ plcncli get setting TemplateLocations

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

Le chemin vers le fichier xml est relatif au plcncli chemin d'installation.

Si vous naviguez jusqu'au ./Templates répertoire, vous verrez le Templates.xml file, et un certain nombre de sous-répertoires.

Lister le contenu du Templates.xml fichier ...

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>

... vous pouvez voir qu'il y a des références à TemplateDescription.xml fichiers de différents types dans les répertoires sous le Templates annuaire. Ceux-ci contiennent des instructions qui indiquent à PLCnext CLI ce qu'il faut faire lorsque ce modèle est utilisé.

Les fichiers de description de modèle présentés ci-dessus implémentent les trois modèles de projet par défaut que vous connaissez déjà.

Comment activer des modèles supplémentaires

Il existe un modèle de projet "caché" installé par défaut avec la CLI PLCnext, qui n'est pas disponible par défaut :

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

Nous pouvons mettre ce modèle à disposition de la CLI PLCnext en ajoutant le MinimalAcfTemplates.xml fichier - que vous avez peut-être déjà remarqué dans le Templates répertoire - vers le paramètre d'emplacement des modèles :

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

Le nouveau fichier XML a maintenant été ajouté aux emplacements des modèles :

user@machine:~$ plcncli get setting TemplateLocations

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

... et quand le plcncli new la commande est exécutée, minimumproject apparaît maintenant dans la liste des options. Ce modèle peut maintenant être utilisé pour créer un nouveau projet C++ à partir de la ligne de commande.

Remarque : L'ajout d'un modèle de projet à la CLI PLCnext n'ajoute pas automatiquement le modèle de projet aux assistants de projet Visual Studio ou Eclipse.

Comment créer votre propre modèle CLI PLCnext

La création de modèles CLI PLCnext personnalisés sera démontrée à l'aide d'un exemple simple. Un modèle PLCnext CLI sera créé et générera un "Hello World!" application console en C++.

La procédure est la suivante :

  1. Créez un répertoire pour le nouveau modèle de projet PLCnext CLI.

    Sous Linux :

    user@machine:~/plcncli/Templates$ mkdir ExeTemplate && cd ExeTemplate
    
  2. Créez un fichier contenant le modèle de code C++, qui peut être utilisé comme point de départ pour chaque nouveau projet de ce type.

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

    Le code C++ utilisé dans cet exemple est :

    #include 
    
    int main() {
       std::cout << "Hello World!" << std::endl;
       return 0;
    }   
    
  3. Créez un modèle de fichier source cmake.

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

    Le code CMake utilisé dans cet exemple est :

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

    Notez que le code CMake inclut l'espace réservé $(name) , qui sera remplacé par le nom du projet passé au plcncli new commande.

  4. Facultatif :ajoutez un fichier README au nouveau répertoire de modèles, qui peut également être utilisé pour créer un fichier README dans chaque nouveau projet créé à partir de ce modèle.

  5. Créez un fichier de configuration de projet PLCnext CLI.

    Ce fichier est utilisé pour stocker les informations de configuration du projet pour PLCnext CLI, par ex. la liste des cibles pour lesquelles le projet doit être construit.

    Pour cet exemple, le .proj le fichier a été copié depuis le ConsumableLibraryTemplate répertoire et modifié pour produire ce qui suit :

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

    Le Type Le champ doit contenir le nom unique de ce modèle de projet, qui sera également inclus dans le fichier de description du modèle à l'étape suivante.

    Le Name le champ contient l'espace réservé $(name) , qui sera remplacé par le nom du projet lors de la création de chaque nouveau projet.

  6. Créez un fichier de description de modèle.

    Pour cet exemple, le TemplateDescription.xml le fichier a été copié depuis le ConsumableLibraryTemplate répertoire et modifié pour produire ce qui suit :

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

    Les champs de la description du modèle incluent :

    • name="exeproject" :Permet de créer des projets à partir de ce modèle à l'aide de la commande plcncli new exeproject .
    • File name="A" template="B" path="C" :Crée un fichier dans le nouveau projet, dans le chemin spécifié, basé sur le fichier modèle spécifié. Le nom du fichier peut également inclure des espaces réservés comme $(name) , qui sera remplacé par le nom du projet lors de la création de chaque nouveau projet.
    • Description et Example champs, qui sont affichés dans les sections pertinentes du plcncli système d'aide.
  7. Créez un nouveau fichier Templates, qui sera utilisé pour informer la PLCnext CLI de nos nouveaux templates.

    Pour cet exemple, le MinimalAcfTemplates.xml fichier dans le Templates répertoire a été copié dans un fichier nommé CustomTemplates.xml , et ce fichier a été modifié pour produire ce qui suit :

    <?xml version="1.0" encoding="utf-8"?>
    <Templates xmlns="http://www.phoenixcontact.com/schema/clitemplates">
             <Include type="Template">ExeTemplate/TemplateDescription.xml</Include>
    </Templates>
    
  8. Enregistrez les modèles personnalisés avec la CLI PLCnext

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

    Le chemin est relatif au répertoire d'installation PLCnext CLI.

  9. Essayez-le !

    La liste suivante de commandes bash illustre les fonctionnalités du nouveau modèle :

    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!
    

Contribuer

A l'avenir, il est prévu que des contributions au projet PLCnext CLI Templates sur Github soient possibles. En attendant, vous pouvez ouvrir un ticket avec des idées de nouveaux modèles ou avec des exemples de modèles que vous avez créés vous-même.

Questions ou commentaires ?

Postez un commentaire ci-dessous ou posez des questions sur le forum de la communauté PLCnext.


Technologie industrielle

  1. Modèles de classe C++
  2. Modèles C++
  3. Python - Traitement XML
  4. Configuration VLAN dans PLCnext Technology
  5. gRPC distant à l'aide de grpcurl
  6. Comment utiliser Alibaba Cloud Connector
  7. Accès au serveur web PlcNext sur DHCP
  8. Utilisez PLCnext pour WakeOnLan (WoL) sur votre PC
  9. Gestion de cluster sur PLCnext ?