Grundregeln für das Arbeiten
Dieser Artikel enthält eine Übersicht der Punkte, die Sie beim Arbeiten mit logi.CAD 3 beachten müssen:
Falls Sie Details zu einem Punkt benötigen, klicken Sie auf den danebenstehenden Link. Dadurch gelangen Sie zu einem Artikel, in dem üblicherweise der Punkt durch eine Warnung oder einen Hinweis präzisiert wird (durch das Zeichen
Falls Sie weitere Fragen zu einem Punkt haben und keine Informationen in der Benutzerdokumentation von
logi.CAD 3
finden, kontaktieren Sie das Support-Team von
logi.cals
.
oder
identifizierbar).
Andere nützliche Links:
Schritt-für-Schritt-Anleitungen vom Installieren bis zum Testen Ihrer ersten Anwendung | Kurzanleitungen |
weitere Aktionen | Referenzdokumentation |
schnelles Suchen in der Benutzerdokumentation | Wie finde ich schnell einen bestimmten Befehl? |
Beim Installieren
Zu beachten: | Details unter: |
---|---|
keine Sonderzeichen im Installationspfad von logi.CAD 3 | Installieren |
kein Installationspfad inkl. Pfad des Compilers, der mehr als 255 Zeichen hat | Installieren |
Bei Zielsystemen zusätzlich zu beachten:
falls Raspberry Pi als SPS verwendet wird: zu installierende Version für →Laufzeitsystem | Für Kurzanleitung benötigte Hardware/Software |
falls ein 64-Bit-System von Linux verwendet wird: bestimmte Befehle im Terminal-Fenster ausführen | 64 Bit Linux |
Beim Starten
Zu beachten: | Details unter: |
---|---|
Zugriff zulassen, falls Windows-Sicherheitshinweise angezeigt werden | Entwicklungsumgebung und Laufzeitumgebung starten |
je einen neuen Arbeitsbereich pro Start von logi.CAD 3 verwenden (außerhalb des Installationsverzeichnisses von logi.CAD 3 ) | Entwicklungsumgebung und Laufzeitumgebung starten, Arbeitsbereich wählen/wechseln |
logi.CAD 3 in anderer Sprache starten | Wie ändere ich die Sprache für die Benutzeroberfläche?, |
Beim Erstellen von Projekten
Zu beachten: | Details unter: |
---|---|
keine Leerzeichen und Sonderzeichen im Projektnamen und der Position | Neues Projekt erstellen |
Projekte nicht im Arbeitsbereich erstellen | Neues Projekt erstellen |
verlinkte Ordner nach Importieren zu "eigentlichen" Ordner geworden | Projekt importieren |
Beim Arbeiten im Projektexplorer
Zu beachten: | Details unter: |
---|---|
→Bibliotheken nicht manipulieren | Mit Projektexplorer verwalten |
Dateierweiterungen nicht ändern | Ressourcen umbenennen |
verlinkte Ordner in Archivdatei nicht mitexportieren | Ressourcen exportieren |
Änderungen außerhalb logi.CAD 3 – Aktualisierung erforderlich | Über Status der SPS informieren, Wann ist die auf die SPS geladene Anwendung nicht mehr aktuell? |
Blenden Sie die Ordner src-gen oder target nur für Problembehebungen ein. | für allgemeine Informationen: Mit Projektexplorer verwalten |
Beim Erstellen der Anwendung
Allgemeine Programmierrichtlinien
Keine Erkennung von Endlosschleifen bzw. von fehlenden Abbruchbedingungen
Endlosschleifen sowie fehlende Abbruchbedingungen werden von
logi.CAD 3
nicht erkannt. Achten Sie auf korrekte Abbruchbedingungen (z.B. mit Hilfe von IF
-Anweisungen), mit denen Endlosschleifen verhindert werden.
Beispiel für Endlosschleife ohne Abbruchbedingung | Beispiel für Endlosschleife mit einer Abbruchbedingung |
---|---|
PROGRAM Test1 MyFun(1); END_PROGRAM FUNCTION MyFun VAR_INPUT In : INT; END_VAR MyFun(In + 1); END_FUNCTION Falls Sie solche Anwendungen auf die SPS dennoch laden, wird u.U. das →Laufzeitsystem beendet. In diesem Fall erscheint ein Fenster mit diesem Text: | PROGRAM Test1 MyFun(1); END_PROGRAM FUNCTION MyFun VAR_INPUT In : INT; END_VAR IF In < 10 THEN MyFun(In + 1); END_IF; END_FUNCTION |
Keine Prüfung von Rekursionen
Rekursionen bei →Funktionen und →Methoden werden von
logi.CAD 3
nicht verboten oder geprüft. Erstellen Sie trotzdem keine Selbstaufrufe und vermeiden Sie einen gegenseitigen Aufruf von 2 (oder mehr) Funktionen/Methoden in Ihrer Anwendung.
Beachten Sie, dass Rekursionen von Funktionen/Methoden in Ihrer Anwendung unerwartete Ereignisse beim Ausführen der Anwendung verursachen können, z.B. könnte die Anwendung in einer Endlosschleife ausgeführt werden und/oder das →Laufzeitsystem reagiert nicht mehr.
Im Gegensatz dazu werden Rekursionen bei →Funktionsbausteinen erkannt und als fehlerhaft markiert.
Beim Erstellen der Anwendung in ST
Zu beachten: | Details unter: |
---|---|
keine Prüfung von ungültigen Beschaltungen durch logi.CAD 3 (z.B. bei der Verwendung von Numeric-Funktionen, wie z.B. des | Numeric-Funktionen |
keine Schlüsselwörter für Bezeichner verwenden | Reservierte Schlüsselwörter in ST |
aktuell unterstützte ST-Elemente | Artikel im Abschnitt "Unterstützte ST-Syntax" |
Ausdrücke mit über 20 Operanden/Operatoren beeinflussen die Performance. | Ausdrücke in ST |
beim Zuweisen von Ausdrücken: keine Erkennung von mathematischen Fehlern | Ausdrücke in ST |
Folgende ST-Elemente werden mit Einschränkungen unterstützt:
|
|
Verschiedenes für die Verwendung von Ein-/Ausgangsvariablen (= | |
Bei
| Deklaration von STRING-Variablen (inkl. Zugriff) |
keine Erkennung von Endlosschleifen bei REPEAT - und WHILE -Anweisungen | WHILE-Anweisung in ST, REPEAT-Anweisung in ST |
Folgende Datentypen werden nicht unterstützt:
| →allgemeiner Datentyp |
Ungenauigkeiten bei Gleitkommazahlen (REAL - und LREAL -Werte) | Unterstützte Datentypen |
Je nach dem verwendeten Zielsystem:
Zu beachten: | Details unter: |
---|---|
Andere verfügbare Systembausteine |
Beim Erstellen der Anwendung in FBS
Zu beachten: | Details unter: |
---|---|
Deklaration einer POE in einem FBS-Objekt möglich | POE in FBS erstellen |
andere angezeigte Farben für Datentypen und/oder anders angezeigte FBS-Elemente (als in der IDE-Dokumentation illustriert) | Farbe/Stil für FBS-Elemente durch Datentyp bestimmt |
Beachten Sie auch die Punkte unter "Beim Erstellen der Anwendung in ST". Diese können auch für eine FBS-Logik gelten.
Beim Erstellen der Anwendung in KOP
Zu beachten: | Details unter: |
---|---|
Deklaration einer POE in einem FBS-Objekt möglich | POE in KOP erstellen |
Kontakte/Spulen, die nicht in Funktionen zur Verfügung stehen | Kontakte in KOP und Spulen in KOP |
Beachten Sie auch die Punkte unter "Beim Erstellen der Anwendung in ST". Diese können auch für einen Kontaktplan gelten.
Beim Erstellen von Bausteinen mit C-Code
Mögliche Probleme für eine Anwendung durch Namenskonflikte im C-Code (z.B. bei Vendor-Bausteine und Import eines Simulink-Modells).
Falls Sie nicht-eindeutige Namen im →C-Code verwenden und diese sind im globalen Namespace verfügbar, ist es möglich, dass Konflikte bei der Verwendung von mehreren Bausteinen mit solchem C-Code verursacht werden. Diese Konflikte verursachen jedoch nicht immer Fehler/Warnungen beim Erstellen der Anwendung. In Folge ist es möglich, dass das Laufzeitverhalten auf eine unerwünschte Weise beeinflusst wird.
Beispiel: Die Sicht Variablenwerte zeigt 2 Variablen, denen der Ergebniswert von POU1
bzw. POU2
zugewiesen ist. Der Wert für Program1.rc2
zeigt den unerwarteten Wert 1
, während im C-Code tatsächlich der Wert 2 zugewiesen ist. Das Problem wird aufgrund des gleichen Namen RESULT
im C-Code der 2 Vendor-Bausteine POU1
bzw. POU2
verursacht.
Zusätzliche Information: Dieses Problem betrifft:
- →Vendor-Bausteine, die Sie selbst erstellen
- Vendor-Bausteine, die beim Import eines Simulink-Modells erstellt werden
- Vendor-Bausteine, die beim Migrieren des Vorgängerprodukts logi.CAD/32 auf logi.CAD 3 erstellt werden
- Bausteine mit C-/C++-Code, die Sie auf Basis einer ST-Schnittstelle erstellen (siehe "Schnittstelle für C-Baustein oder C++-Baustein erstellen (Deprecated)")
Abhilfe 1:
Verwenden Sie POE-eindeutige Namen (wenn möglich, sogar projekt- und POE-eindeutig) für alle C-Identifier, die in einem globalen Namespace verfügbar sind.
Falls Sie ein Simulink-Modell importieren, verwenden Sie am besten die eindeutigen Namen bereits im Simulink-Modell.
Abhilfe für das obige Beispiel: Die Sicht Variablenwerte zeigt nun den erwarteten Wert 2
für Program1.rc2
, da nun POE-eindeutige Namen im C-Code verwendet werden.
Abhilfe 2: Falls Sie die Bausteine mit C-Code in einer Bibliothek zur Verfügung stellen, geben Sie die Bausteine in der Bibliothekskonfiguration mit DEPLOY:=OBJECT
an (siehe unter "Deklaration des Inhalts für die Bibliothek" für Details zu DEPLOY:=OBJECT
). In Folge wird beim Erstellen der Bibliothek der Binärcode für die POE getrennt erstellt.
Verwendete Systembausteine
Genauigkeit und Verhalten von mathematischen Funktionen
Mathematische Funktionen, die Gleitkommazahlen (REAL
, LREAL
) verarbeiten, können unterschiedliche Ergebnisse auf den unterschiedlichen Zielsystem liefern – vor allem, wenn das Ergebnis der Funktion im Grenzbereich des Datentyps liegt. Diese unterschiedliche Genauigkeit der mathematischen Funktionen wird durch die folgenden Faktoren verursacht:
- das →Zielsystem selbst,
- der dafür verwendete Compiler und
- die konfigurierten Optimierungseinstellungen des Compilers.
Bausteine/Variablen mit LREAL nicht für Controllino oder Arduino Nano verwenden
Falls Sie eine Anwendung für einen →Controllino oder →Arduino Nano erstellen, vermeiden Sie die Verwendung von Bausteinen/Variablen, die LREAL
-Werte verarbeiten/liefern. Die Verwendung solcher Bausteine/Variablen ist zwar möglich, die LREAL
-Werte werden jedoch mit der Genauigkeit von REAL
-Werten abgearbeitet.
Bekannte Beispiele:
Zielsystem | Ergebnis der mathematischen Funktion TRUNC_DINT(REAL#3.402823466e+38); |
---|---|
→logi.RTS für Windows | -2147483648 |
→Raspberry Pi | 2147483647 |
Der RTOS32-Compiler meldet einen Fehler, wenn die Anwendung eine bestimmte Division enthält.
Falls Sie den RTOS32-Compiler verwenden, vermeiden Sie eine bestimmte Division (siehe das folgende Beispiel) in der Anwendung.
PROGRAM Program1 DIV(DINT#-2_147_483_648, DINT#-1); END_PROGRAM
Beim Erstellen der Anwendung melden die Compiler die erwartete Warnung overflow in constant division, undefined behavior
. Der RTOS32-Compiler meldet jedoch auch einen Fehler divide or mod by zero
. Andere Compiler akzeptieren den Code – nur die erwähnte Warnung wird gemeldet. Damit der Fehler beim RTOS32-Compiler nicht gemeldet wird, dürfen Sie eine Division mit den oben erwähnten negativen Integers nicht in der Anwendung verwenden.
Zu beachten: | Details unter: |
---|---|
Systembausteine, basierend auf der →IEC-Norm aber mit Einschränkungen:
|
|
Systembausteine, basierend auf der →IEC-Norm aber mit Erweiterungen:
|
|
Systembausteine in Erweiterung der →IEC-Norm:
|
Beim Definieren von Einstellungen für die SPS
Zu beachten: | Details unter: |
---|---|
max. 32 Tasks pro Ressource | Mehrere Tasks im SPS-Objekt deklarieren |
Einschränkungen bei der Ausführung von mehreren Programmtypen | Mehrere Programmtypen zuordnen (= neue Instanzen erstellen) |
Einschränkungen für VAR_CONFIG -Abschnitte | VAR_CONFIG-Abschnitte im SPS-Objekt deklarieren |
Beim Testen der Anwendung
Zu beachten: | Details unter: |
---|---|
Anzeige in Sicht Instanzen: nur Basis-Typ für ARRAY-Variablen | Variablen einfügen und Werte beobachten |
Wert für Variable ändern ≠ Forcen | Wert für Variable ändern (Wert auf SPS schreiben) |
eingesetztes Zielsystem beeinflusst evtl. in logi.CAD 3 eingegebene/dargestellte Literale | Anwendung testen oder Daten debuggen |
Bei Zielsystemen zusätzlich zu beachten:
Standard-Timer-Auflösung für Linux-Betriebssysteme | Zykluszeit im SPS-Objekt eingeben |
Beim Debuggen der Anwendung
Zu beachten: | Details unter: |
---|---|
| Kontrollfluss-Debuggen: Anwendung mit Unterbrechungspunkte debuggen |
| Debugging beenden |
Beim Erstellen der Anwendung in →C oder →C++
Zu beachten: | Details unter: |
---|---|
beim Erstellen von Projekten eine andere Position für C/C++-Projekte verwenden | Die gleiche Positon für C-/C++-Projekte bzw. andere Projekte verursacht Probleme |
|
Beim Verwenden eines Raspberry Pis
Zu beachten: | Details unter: |
---|---|
Voraussetzungen für SD-Karte | Für Kurzanleitung benötigte Hardware/Software |
zu installierende Version für Laufzeitsystem | Für Kurzanleitung benötigte Hardware/Software |
Spannungsversorgung für Raspberry Pi | Raspberry Pi zusammenstecken und IP-Adresse ermitteln |
Standardeinstellung en_GB.UTF-8 UTF-8 aktiviert | Raspberry Pi konfigurieren |
bei Datenübertragung via MQTT: Verbindung für TCP-Port steuern | Datenübertragung via MQTT vorbereiten/durchführen |
Standard-Timer-Auflösung für Linux-Betriebssysteme (z.B. Raspbian) | Zykluszeit im SPS-Objekt eingeben |
Bei Zugriff auf Hardware-IOs via EC-Master und EC-Engineer
Zu beachten: | Details unter: |
---|---|
beim Vorbereiten der Umgebung: Voraussetzungen für Netzwerkkarte | Umgebung für Zugriff auf Hardware-IOs vorbereiten |
Laufzeitsystem unter Windows installieren (enthält eine Evaluierungsversion des EC-Masters) | Umgebung für Zugriff auf Hardware-IOs vorbereiten |
Keine der Ressource-globalen Variablen ändern | Auf Hardware-IOs via EC-Engineer zugreifen |
Beim Ändern des Layouts
Zu beachten: | Details unter: |
---|---|
unterschiedliche Schritte zum Verschieben/Andocken von Sichten/Editoren | Sichten und Editoren verschieben oder andocken, Fenster nach dem Verschieben verschwunden |
Performance
Zu beachten: | Details unter: |
---|---|
bei Problemen mit der Performance | Was kann ich tun, um die Performance zu erhöhen? |