Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

PLCnext CLI-sjablonen

Dit artikel is van toepassing op PLCnext CLI versie 22.0.0 LTS.

Als u PLCnext Control-apparaten met C++ programmeert, heeft u waarschijnlijk codesjablonen gebruikt die met de PLCnext CLI zijn geïnstalleerd.

In Visual Studio en Eclipse moet u de projectsjabloon kiezen die u wilt gebruiken bij het maken van een nieuw project met de PLCnext-projectwizard (geïnstalleerd met de PLCnext IDE-extensie).

Bij het genereren van een nieuw C++-project op de opdrachtregel met de PLCnext CLI, moet u ook een projectsjabloon opgeven.

De drie standaard projectsjablonen zijn:

  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.

De bovenstaande informatie kan worden bekeken door het uitvoeren van de plcncli new opdracht. Meer informatie over dit soort projecten vindt u in het PLCnext Info Center:

  • Afbakening van ACF en PLM
  • Gedeelde bibliotheken maken en gebruiken

In dit artikel wordt beschreven hoe u aanvullende projectsjablonen activeert en gebruikt die met de PLCnext CLI zijn geïnstalleerd, en hoe u uw eigen projectsjabloon maakt en gebruikt.

Maar laten we eerst eens kijken hoe het PLCnext CLI Template-systeem werkt.

Het PLCnext CLI Template-systeem

De PLCnext CLI bevat een standaardinstelling genaamd TemplateLocations , dat vertelt waar codesjablonen te vinden zijn. U kunt de waarde van deze instelling zien met het volgende commando:

user@machine:~$ plcncli get setting TemplateLocations

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

Het pad naar het xml-bestand is relatief aan de plcncli installatiepad.

Als u bladert naar de ./Templates directory, ziet u de Templates.xml bestand, en een aantal submappen.

De inhoud van de Templates.xml . weergeven bestand ...

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>

... je kunt zien dat er verwijzingen zijn naar TemplateDescription.xml bestanden van verschillende typen in de mappen onder de Templates map. Deze bevatten instructies die de PLCnext CLI vertellen wat te doen als dat sjabloon wordt gebruikt.

De hierboven getoonde sjabloonbeschrijvingsbestanden implementeren de drie standaard projectsjablonen waarmee u al bekend bent.

Hoe extra sjablonen te activeren

Er is standaard één "verborgen" projectsjabloon geïnstalleerd met de PLCnext CLI, die niet standaard beschikbaar is:

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

We kunnen dit sjabloon beschikbaar stellen aan de PLCnext CLI door de MinimalAcfTemplates.xml . toe te voegen bestand - wat je misschien al is opgevallen in de Templates directory - naar de instelling voor sjabloonlocaties:

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

Het nieuwe XML-bestand is nu toegevoegd aan de sjabloonlocaties:

user@machine:~$ plcncli get setting TemplateLocations

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

... en wanneer de plcncli new commando wordt uitgevoerd, minimumproject verschijnt nu in de lijst met opties. Deze sjabloon kan nu worden gebruikt om een ​​nieuw C++-project te maken vanaf de opdrachtregel.

Opmerking: Het toevoegen van een projectsjabloon aan de PLCnext CLI voegt de projectsjabloon niet automatisch toe aan de Visual Studio- of Eclipse-projectwizards.

Hoe u uw eigen PLCnext CLI-sjabloon maakt

Het maken van aangepaste PLCnext CLI-sjablonen wordt gedemonstreerd aan de hand van een eenvoudig voorbeeld. Er wordt een PLCnext CLI-sjabloon gemaakt die een "Hello World!" genereert. console-applicatie in C++.

De procedure is als volgt:

  1. Maak een directory aan voor de nieuwe PLCnext CLI-projectsjabloon.

    Op Linux:

    user@machine:~/plcncli/Templates$ mkdir ExeTemplate && cd ExeTemplate
    
  2. Maak een bestand met sjabloon C++-code, dat kan worden gebruikt als startpunt voor elk nieuw project van dit type.

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

    De C++-code die in dit voorbeeld wordt gebruikt, is:

    #include 
    
    int main() {
       std::cout << "Hello World!" << std::endl;
       return 0;
    }   
    
  3. Maak een sjabloon-cmake-bronbestand.

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

    De CMake-code die in dit voorbeeld wordt gebruikt, is:

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

    Merk op dat de CMake-code de tijdelijke aanduiding $(name) . bevat , die zal worden vervangen door de naam van het project dat wordt doorgegeven aan de plcncli new commando.

  4. Optioneel:voeg een README-bestand toe aan de nieuwe sjabloonmap, die ook kan worden gebruikt om een ​​README-bestand te maken in elk nieuw project dat met deze sjabloon wordt gemaakt.

  5. Maak een PLCnext CLI-projectconfiguratiebestand.

    Dit bestand wordt gebruikt om projectconfiguratie-informatie voor de PLCnext CLI op te slaan, b.v. de lijst met doelen waarvoor het project moet worden gebouwd.

    Voor dit voorbeeld is de .proj bestand is gekopieerd van de ConsumableLibraryTemplate directory en bewerkt om het volgende te produceren:

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

    De Type veld moet de unieke naam van deze projectsjabloon bevatten, die ook zal worden opgenomen in het sjabloonbeschrijvingsbestand in de volgende stap.

    De Name veld bevat de tijdelijke aanduiding $(name) , die tijdens het maken van elk nieuw project wordt vervangen door de projectnaam.

  6. Maak een sjabloonbeschrijvingsbestand.

    Voor dit voorbeeld is de TemplateDescription.xml bestand is gekopieerd van de ConsumableLibraryTemplate directory en bewerkt om het volgende te produceren:

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

    De velden in de sjabloonbeschrijving omvatten:

    • name="exeproject" :Hiermee kunnen projecten worden gemaakt op basis van deze sjabloon met het commando plcncli new exeproject .
    • File name="A" template="B" path="C" :Maakt een bestand in het nieuwe project, in het opgegeven pad, op basis van het opgegeven sjabloonbestand. De bestandsnaam kan ook tijdelijke aanduidingen bevatten, zoals $(name) , die zal worden vervangen door de projectnaam tijdens het maken van elk nieuw project.
    • Description en Example velden, die worden weergegeven in de relevante secties van de plcncli helpsysteem.
  7. Maak een nieuw Templates-bestand aan, dat zal worden gebruikt om de PLCnext CLI te informeren over onze nieuwe template(s).

    Voor dit voorbeeld is de MinimalAcfTemplates.xml bestand in de Templates directory is gekopieerd naar een bestand met de naam CustomTemplates.xml , en dat bestand is bewerkt om het volgende te produceren:

    <?xml version="1.0" encoding="utf-8"?>
    <Templates xmlns="http://www.phoenixcontact.com/schema/clitemplates">
             <Include type="Template">ExeTemplate/TemplateDescription.xml</Include>
    </Templates>
    
  8. Registreer de aangepaste sjablonen met de PLCnext CLI

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

    Het pad is relatief aan de installatiemap van PLCnext CLI.

  9. Probeer het uit!

    De volgende lijst met bash-commando's demonstreert de functies van de nieuwe sjabloon:

    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!
    

Bijdragen

Het is de bedoeling dat in de toekomst bijdragen aan het PLCnext CLI Templates-project op Github mogelijk zullen zijn. Tot die tijd kun je een uitgave openen met ideeën voor nieuwe sjablonen, of met voorbeelden van sjablonen die je zelf hebt gemaakt.

Vragen of opmerkingen?

Plaats hieronder een reactie of stel vragen op het PLCnext Community Forum.


Industriële technologie

  1. C++-klassesjablonen
  2. C++-sjablonen
  3. Python - XML-verwerking
  4. VLAN-configuratie in PLCnext Technology
  5. Externe gRPC met behulp van grpcurl
  6. Hoe Alibaba Cloud Connector te gebruiken?
  7. Toegang tot PlcNext webserver op DHCP
  8. Gebruik PLCnext to WakeOnLan (WoL) Uw pc
  9. Clusterbeheer op PLCnext?
  10. PLCnext Tableau-dashboard
  11. PLCnext Power BI-rapporten