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

Einfache und komplexe Datentypen in C++ verwenden

Hallo zusammen,

In diesem Blogbeitrag untersuchen wir einfache und komplexe Datentypen in C++ und PLCnext Engineer. Es wird zwei unterschiedliche Teile enthalten, eine einfache und eine komplexe Übung.

Dieses Tutorial setzt voraus, dass Sie bereits Erfahrung mit C++ und PLCnext Engineer haben.

starten

Zunächst benötigen Sie die richtigen Tools für die Aufgabe, einen C++-Editor, die Software PLCnext Engineer und eine SPS von Phoenix Contact, auf der dies ausgeführt werden kann. Dies sind die Materialien, die ich verwendet habe:

Ich persönlich habe Visual Studio als meinen C++-Editor gewählt, aber Eclipse kann auch verwendet werden. Die Links zu den Tutorials finden Sie hier:

Den PLCnext Engineer finden Sie auf unserer Website.

Einfache Übung

Für dieses erste Beispiel erstellen wir eine kleine Anwendung, die überprüft, ob die richtige Nummer von der SPS gesendet wird. Erstellen Sie zuerst ein neues C++-Projekt. Dann gehen wir zur Header-Datei, der Name sollte etwa so aussehen [NameOfTheProject].hpp, es gibt auch Dateien mit dem Namen [NameOfTheProject]component.hpp, wir werden diese nicht verwenden. Sobald Sie sich in der Header-Datei befinden, wird vor Ihnen eine Wand aus Code angezeigt, aber keine Sorge, es wird einfach sein. Zunächst definieren wir die Ports, einen IN und einen OUT. Sie können wie folgt definiert werden, denken Sie daran, dass dies nur für einfache Datentypen gilt:

//#port
//#attributes(input)
//#Name(InputTest)
int64 InputTest =0;


//#port
//#Attribute(Ausgabe)
//#Name(Ausgangstest)
int64 OutputTest =0;

Dann gehen wir zur nächsten Datei über, wo wir die eigentliche Codierung vornehmen. Diese sollte [NameOfTheProject].cpp heißen und nicht viel enthalten. Das werden wir bald ändern. Lassen Sie uns einen Code hinzufügen, um nach Zahlen zu suchen, entweder mithilfe von If oder einem Wechselfall, das liegt bei Ihnen. Ich habe if-Strukturen in diesem hier verwendet:

void PLMProjectReadInputProgram::Execute()void PLMProjectReadInputProgram::Execute(){
if (InputTest ==1) {
Ausgangstest =15;


if (InputTest ==2) {
Ausgangstest =150;


if (InputTest ==3) {
Ausgangstest =1500;


if (InputTest ==4) {
Ausgangstest =15000;

}

Bevor wir zum PLCnext-Ingenieur übergehen, müssen wir dieses C++-Projekt in eine Bibliothek umwandeln, damit die SPS es versteht. Klicken Sie dazu einfach oben auf dem Bildschirm auf Erstellen. Dies sollte eine Weile laufen und wird Ihnen mitteilen, wann die Bibliothek vollständig ist. Wenn dieser Schritt unklar ist, empfehle ich Ihnen dringend, die oben aufgeführten Tutorials zu lesen.

Navigieren Sie zum Hauptprogramm auf der Registerkarte „Komponenten“ unter „Programmierung“ im Ordner „Lokal“ und wählen Sie dann „Variablen“ im Hauptbildschirm aus, um die Variablen in der SPS anzuzeigen. Hier können wir einen Namen und einen Datentyp und die Verwendung auswählen. Datentypen in PLCnext engineer müssen dieselben sein wie im C++-Programm. Ein Link zu den verschiedenen Typen und ihren Entsprechungen finden Sie hier. Die Verwendung bestimmt, ob die Variablen lokal sind oder zum Senden und Empfangen von Daten von externen Programmen oder Variablen verwendet werden können.

Danach beginnen wir mit dem Verbinden der Variablen, nachdem wir die neue Bibliothek hinzugefügt haben. Dies kann folgendermaßen erfolgen:

Die von Ihnen erstellte Bibliothek befindet sich im bin-Ordner Ihres Projekts, kopieren Sie diese in den Bibliotheksordner für PLCnext Engineer. Der Speicherort sieht in etwa so aus:

C:\Benutzer\Öffentlich\Dokumente\PLCnext Engineer\Bibliotheken

Danach gehen wir zurück zu PLCnext engineer, um die Bibliothek zu unserem Programm hinzuzufügen. Wir navigieren zur Registerkarte „Komponenten“, öffnen das Feld „Bibliotheken“ und klicken mit der rechten Maustaste auf Bibliotheken. Klicken Sie dann auf "Benutzerbibliothek hinzufügen". Dadurch gelangen Sie zu dem Bibliotheksordner, zu dem wir zuvor gegangen sind. Wählen Sie die Bibliothek aus, die Sie verwenden möchten, und fahren Sie fort.

Sobald dies erledigt ist, müssen wir das Programm zu den Aufgaben hinzufügen, was wie folgt geschieht. Doppelklicken Sie auf der linken Seite des Bildschirms innerhalb des Anlagenbereichs auf PLCnext. Es sollte sich in der Mitte öffnen. Gehen Sie dann auf die Registerkarte "Aufgaben und Ereignisse" und fügen Sie nach der Hauptinstanz ein neues Programm hinzu. Dies kann auf zwei Arten erfolgen, indem Sie entweder den Programmtyp auswählen oder ihn aus dem Komponentenbereich unter „PLCnext-Komponenten &Programme“ ziehen.

Dann sollten die Variablen auf der Registerkarte „Portliste“ neben der Registerkarte „Aufgaben und Ereignisse“ angezeigt werden. Öffnen Sie diese, um von all Ihren Variablen aus C++ und PLCnext begrüßt zu werden. Es sollte etwa so aussehen:

Wenn Sie alles richtig gemacht haben, sollten Sie in der Lage sein, die OUT-Ports Ihrer SPS mit den IN-Ports des C++-Programms zu verbinden, der umgekehrte Weg ist auch möglich und sollte ungefähr so ​​​​aussehen. Wenn dies nicht funktioniert, versuchen Sie, Ihre Datentypen zu überprüfen.

Um unserer Variablen einen Dummy-Wert hinzuzufügen, navigieren wir zum Hauptprogramm auf der Registerkarte Komponenten und wählen dann Code im Hauptbildschirm aus, um den Code anzuzeigen und einige unserer eigenen hinzuzufügen. Wir werden nur die ausgehende Variable auf einen numerischen Wert setzen, in diesem Fall 1.

Lassen Sie uns nun das Projekt auf der SPS bereitstellen und wir sollten 15 als Antwort vom C++-Code erhalten. Sie können die Variablen in der ‚Ports List‘ von vorher sehen.

Komplexe Übung

Für dieses Beispiel erstellen wir eine kleine Anwendung, die ein Array von Strukturen an und von der SPS sendet. Erstellen Sie zuerst ein neues C++-Projekt. Dann gehen wir zur Header-Datei, der Name sollte etwa so aussehen [NameOfTheProject].hpp, es gibt auch Dateien mit dem Namen [NameOfTheProject]component.hpp, wir werden diese nicht verwenden. Sobald Sie sich in der Header-Datei befinden, wird vor Ihnen eine Wand aus Code angezeigt, aber keine Sorge, es wird einfach sein. Zuerst müssen wir eine Struktur für dieses Beispiel erstellen, wir werden eine Struktur für ein Auto erstellen. Dies geschieht wie folgt:

public:// typedefs
struct StrCar{
StaticString<80> Marke;
int16 iHorsepower;
int16 iJahr;
boolean xVersichert;
};

!WICHTIG! Die Namen und Typen in C++ und PLCnext Engineer müssen gleich sein! Datentypen finden Sie hier.

Dann definieren wir die Ports, einen IN und einen OUT, da es sich um Listen von Daten handelt, die sie als solche machen. Wichtig ist auch, eine Liste mit „Autos“ zu erstellen. Das geht so:

//#port
//#attributes(Eingabe)
//#name(CarIn)
StrCar CarToC[2];

//#port
//#attributes(Ausgabe)
//#name(CarOut)
StrCar CarFromC[2];

Dann gehen wir zur nächsten Datei über, wo wir die eigentliche Codierung vornehmen. Diese sollte [NameOfTheProject].cpp heißen und nicht viel enthalten. Das werden wir bald ändern. Hier ändern wir die Werte von Auto eins und Auto zwei.

//Setze das erste Mitglied der Autoliste gleich dem Auto aus der SPS
CarFromC[0].sbrand =CarToC[1].sbrand;
CarFromC[0].iHorsepower =CarToC[1].iHorsepower;
CarFromC[0].iYear =CarToC[1].iYear;
CarFromC[0].xInsured =CarToC[1].xInsured;

//Dummy-Werte zum zweiten Mitglied hinzufügen
CarFromC[1].sbrand =CarToC[0].sbrand;
CarFromC[1].iHorsepower =CarToC[0].iHorsepower;
CarFromC[1].iYear =CarToC[0].iYear;
CarFromC[1].xInsured =CarToC[0].xInsured;

Bevor wir zum PLCnext-Ingenieur übergehen, müssen wir dieses C++-Projekt in eine Bibliothek umwandeln, damit die SPS es versteht. Klicken Sie dazu einfach oben auf dem Bildschirm auf Erstellen. Dies sollte eine Weile laufen und wird Ihnen mitteilen, wann die Bibliothek vollständig ist. Wenn dieser Schritt unklar ist, empfehle ich Ihnen dringend, die oben aufgeführten Tutorials zu lesen.

Bevor wir jetzt Variablen in PLCnext engineer erstellen können, müssen wir einen eigenen Datentyp erstellen, in diesem Fall ein Struct-Auto und eine Liste von Autos. Dazu benötigen wir eine Datatypes-Datei, die hier gefunden und erstellt werden kann:

Öffnen Sie diese Datei, falls noch nicht geschehen, dann können wir damit beginnen, unsere eigene Struktur wie folgt zu erstellen:

TYP

StrCar:

STRUKTUR

sMarke:STRING;
iPferdestärke:INT;
iYear:int;
xVersichert:BOOL;

END_STRUCT

END_TYPE

!WICHTIG! Die Namen und Typen in C++ und PLCnext Engineer müssen gleich sein! Datentypen finden Sie hier.

Nachdem wir die Struktur erstellt haben, müssen wir ein Array dieses Typs erstellen und das wird so gemacht und in der gleichen Datei, in der wir uns gerade befinden:

TYP

carList:ARRAY[0..1] OF StrCar;

END_TYPE

Um eine Variable mit dem Typ „carList“ zu erstellen, navigieren Sie zum Hauptprogramm auf der Registerkarte „Komponenten“ unter „Programmierung“, dann in den Ordner „Programme“ und wählen Sie dann Variablen im Hauptbildschirm aus, um die Variablen in der SPS anzuzeigen. Hier können wir einen Namen und einen Datentyp und die Verwendung auswählen. Als Datentyp wählen Sie unseren maßgeschneiderten:

Danach beginnen wir mit dem Verbinden der Variablen, nachdem wir die neue Bibliothek hinzugefügt haben. Dies kann folgendermaßen erfolgen:

Die von Ihnen erstellte Bibliothek befindet sich im bin-Ordner Ihres Projekts, kopieren Sie diese in den Bibliotheksordner für PLCnext Engineer. Der Speicherort sieht in etwa so aus:

C:\Benutzer\Öffentlich\Dokumente\PLCnext Engineer\Bibliotheken

Danach gehen wir zurück zu PLCnext engineer, um die Bibliothek zu unserem Programm hinzuzufügen. Wir navigieren zur Registerkarte „Komponenten“, öffnen das Feld „Bibliotheken“ und klicken mit der rechten Maustaste auf Bibliotheken. Klicken Sie dann auf "Benutzerbibliothek hinzufügen". Dadurch gelangen Sie zu dem Bibliotheksordner, zu dem wir zuvor gegangen sind. Wählen Sie die Bibliothek aus, die Sie verwenden möchten, und fahren Sie fort.

Sobald dies erledigt ist, müssen wir das Programm zu den Aufgaben hinzufügen, was wie folgt geschieht. Doppelklicken Sie auf der linken Seite des Bildschirms innerhalb des Anlagenbereichs auf PLCnext. Es sollte sich in der Mitte öffnen. Gehen Sie dann auf die Registerkarte "Aufgaben und Ereignisse" und fügen Sie nach der Hauptinstanz ein neues Programm hinzu. Dies kann auf zwei Arten erfolgen, indem Sie entweder den Programmtyp auswählen oder ihn aus dem Komponentenbereich unter „PLCnext-Komponenten &Programme“ ziehen.

Dann sollten die Variablen auf der Registerkarte „Portliste“ neben der Registerkarte „Aufgaben und Ereignisse“ angezeigt werden. Öffnen Sie diese, um von all Ihren Variablen aus C++ und PLCnext begrüßt zu werden. Es sollte in etwa so aussehen.

Wenn Sie alles richtig gemacht haben, sollten Sie in der Lage sein, die OUT-Ports Ihrer SPS mit den IN-Ports des C++-Programms zu verbinden, der umgekehrte Weg ist auch möglich und sollte ungefähr so ​​​​aussehen. Wenn dies nicht funktioniert, überprüfen Sie die Datentypen und Namen Ihrer Variablen.

Um unserer Variablen einen Dummy-Wert hinzuzufügen, navigieren wir zum Hauptprogramm auf der Registerkarte Komponenten und wählen dann Code im Hauptbildschirm aus, um den Code anzuzeigen und einige unserer eigenen hinzuzufügen. Wir werden nur die Variable setzen, die auf einige Fahrzeugspezifikationen hinausgeht. Diese können zufällig ausgewählt werden, müssen aber mit den Datentypen übereinstimmen. (je nachdem, was Sie ausgewählt haben, verwenden Sie Zeichenfolgen, wo Sie Zeichenfolgen usw. verwendet haben)

CarToC[0].sBrand :=‘Audi’;
CarToC[0].iHorsepower :=200;
CarToC[0].iYear :=2020;
CarToC[0].xInsured :=TRUE;

CarToC[1].sBrand :=‘Mazda’;
CarToC[1].iHorsepower :=120;
CarToC[1].iYear :=2001;
CarToC[1].xInsured :=FALSE;

Sobald wir dieses Beispiel bereitgestellt haben, sollte die ausgehende Liste in der eingehenden Liste ausgetauscht werden. Sie können die Variablen in der ‚Ports List‘ von vorher sehen.


Industrietechnik

  1. Zu Cloud Infinity und darüber hinaus
  2. Komplexe Spannungs- und Stromberechnungen
  3. C# Grundlegende Ein- und Ausgabe
  4. C++-Klassen und -Objekte
  5. Strukturen und Klassen in C++
  6. C++ Datum und Uhrzeit
  7. Schreibverfahren:einfach und effizient durch Digitalisierung
  8. Remote-gRPC mit grpcurl
  9. So erstellen Sie eine einfache PLCnext-Konsolenanwendung in C#
  10. apt(-get) Paketmanager auf PLCnext installieren