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  oder  identifizierbar).
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

Andere nützliche Links: 

Schritt-für-Schritt-Anleitungen
vom Installieren bis zum Testen Ihrer ersten Anwendung
Kurzanleitungen
weitere AktionenReferenzdokumentation
schnelles Suchen in der BenutzerdokumentationWie 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 hatInstallieren

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 werdenEntwicklungsumgebung 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?,
Elemente und Meldungen nach Start in englischer Sprache 

Beim Erstellen von Projekten

Zu beachten:Details unter:
keine Leerzeichen und Sonderzeichen im Projektnamen und der PositionNeues Projekt erstellen
Projekte nicht im Arbeitsbereich erstellenNeues Projekt erstellen 
verlinkte Ordner nach Importieren zu "eigentlichen" Ordner gewordenProjekt importieren

Beim Arbeiten im Projektexplorer

Zu beachten:Details unter:
→Bibliotheken nicht manipulierenMit Projektexplorer verwalten
Dateierweiterungen nicht ändernRessourcen umbenennen
verlinkte Ordner in Archivdatei nicht mitexportierenRessourcen 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
für Anweisungen zum Einblenden der Ordner: Sind meine Projekte aufwärts- und abwärtskompatibel?

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 AbbruchbedingungBeispiel 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:  RTSLoader.exe funktioniert nicht mehrLösungen finden Sie im Troubleshooting-Artikel: Die SPS ist nicht ansprechbar. Das Laufzeitsystem reagiert langsam oder gar nicht.

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.

(info) 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 EXPT-Bausteins, aber auch bei Verwendung des MUL_TIME-Bausteins) 

Numeric-Funktionen
(z.B. EXPT-Baustein und MUL_TIME-Baustein)



keine Schlüsselwörter für Bezeichner verwendenReservierte 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 FehlernAusdrücke in ST

Folgende ST-Elemente werden mit Einschränkungen unterstützt:

  • direkt abgeleitete Datentypen (z.B. max. 10 Ebenen für Verschachtelungen)
  • ARRAY-Datentyp (keine Referenz-Typen,
    ARRAY-Datentypen mit bis zu 4 Dimensionen,
    keine Prüfung bei Verwendung von Variablen und/oder Operatoren für ARRAY-Indizes)
  • strukturierter Datentyp (keine Initialisierung bei Funktionsbausteinen, keine Referenzen auf Funktionsbausteine)
  • ARRAY-Variablen (wie ARRAY-Datentyp)
  • Referenz-Variablen (z.B. keine Referenzen auf Typ eines Funktionsbausteins)
  • CASE-Anweisung (nur ANY_INT-Ausdrücke für den Selektor)


Verschiedenes für die Verwendung von Ein-/Ausgangsvariablen (= VAR_IN_OUT)

Deklaration von Ein-/Ausgangsvariablen in ST

Bei STRING-Variablen:

  • maximale Länge = 32.767
  • Zeichenkombination '$00'beendet die Zeichenfolge einer STRING-Variable.
Deklaration von STRING-Variablen (inkl. Zugriff)
keine Erkennung von Endlosschleifen bei REPEAT- und WHILE-AnweisungenWHILE-Anweisung in ST, REPEAT-Anweisung in ST

Folgende Datentypen werden nicht unterstützt:

LTIMEWSTRINGWCHARLDATE_AND_TIME, LTIME_OF_DAY und LDATE 

→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öglichPOE 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öglichPOE in KOP erstellen
Kontakte/Spulen, die nicht in Funktionen zur Verfügung stehenKontakte 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:

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 (REALLREAL) 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:

ZielsystemErgebnis der mathematischen Funktion TRUNC_DINT(REAL#3.402823466e+38);
→logi.RTS für Windows-2147483648
→Raspberry Pi2147483647

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.

Beispiel für ST-Code
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:
  • Bitstring-Funktionen: SHL, SHR, ROL, ROR
  • Compare-Funktionen: EQ, GE, GT, LE, LT, NE
  • Convert-Funktionen: TO_BOOL, TO_DWORD, TO_LREAL, TO_LWORD, TO_REAL, TO_TIME, TO_WORD
  • Numeric-Funktionen: ADD, DIV, EXPT, MODMOVE, MUL, SUB
  • Select-Funktionen: LIMIT, MAX, MIN, MUX_BYTE, MUX_DINT,
    MUX_DWORD, MUX_INT, MUX_SINT, MUX_UDINT,
    MUX_UINT, MUX_USINT, MUX_WORD, SEL
  • String-Funktionen: CONCAT, DELETE, FIND, INSERT, LEN, LEFT, MID, REPLACE, RIGHT
  • Time-Funktionen: ADD_TIME, CONCAT_DATE_TOD, MUL_TIME, SUB_DT_DT, SUB_TIME


Systembausteine, basierend auf der →IEC-Norm aber mit Erweiterungen:
  • Bitstring-Funktionen: ROL, RORSHL, SHR
  • Convert-Funktionen: TO_BOOL, TO_BYTE, TO_DINT,
    TO_DWORD, TO_INT, TO_LINT, TO_LREAL, TO_LWORD,
    TO_REAL, TO_SINT, TO_UDINT, TO_UINT, TO_ULINT,
    TO_USINT, TO_WORD
  • Counter-Funktionsbausteine: CTD_UINT, CTU_UINT, CTUD_UINT
  • Numeric-Funktionen: EXPT
  • Select-Funktionen: MUX_BYTEMUX_DINTMUX_DWORDMUX_INTMUX_SINTMUX_UDINTMUX_UINTMUX_USINTMUX_WORD

Systembausteine in Erweiterung der →IEC-Norm:

  • erweiterte Bitstable-Funktionsbausteine
  • erweiterte Bitstring-Funktionen
  • erweiterte Control-Funktionsbausteine
  • erweiterte Convert-Funktionen
  • erweiterte Numeric-Funktionen
  • erweiterte Select-Funktionen
  • erweiterte Timer-Funktionsbausteine

  • erweiterte Memory-Funktionen

Beim Definieren von Einstellungen für die SPS

Zu beachten:Details unter:
max. 32 Tasks pro RessourceMehrere Tasks im SPS-Objekt deklarieren
Einschränkungen bei der Ausführung von mehreren ProgrammtypenMehrere Programmtypen zuordnen (= neue Instanzen erstellen)
Einschränkungen für VAR_CONFIG-AbschnitteVAR_CONFIG-Abschnitte im SPS-Objekt deklarieren

Beim Testen der Anwendung

Zu beachten:Details unter:
Anzeige in Sicht Instanzen: nur Basis-Typ für ARRAY-VariablenVariablen einfügen und Werte beobachten
Wert für Variable ändern ≠ ForcenWert 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:
  • Das Debuggen ist nur für Anwendungen möglich, die auf die integrierte SPS geladen sind.
  • Änderungen der Source-Dateien (während der Debugging-Sitzung) können unerwartete "Sprünge" in der Debugging-Sitzung verursachen.
Kontrollfluss-Debuggen: Anwendung mit Unterbrechungspunkte debuggen
  • Die Debugging-Sitzung muss beendet werden, bevor logi.CAD 3 beendet wird.
  • Durch das Beenden der Debugging-Sitzung wird die integrierte SPS automatisch gestoppt.
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 verwendenDie gleiche Positon für C-/C++-Projekte bzw. andere Projekte verursacht Probleme
  • Geänderte Schnittstellen für C-/C++-Funktionen ohne Anpassungen verursachen Fehler beim Laden auf SPS.
  • Kommentare in C-Bausteinen nicht im C++-Stil eingeben.

Beim Verwenden eines Raspberry Pis

Zu beachten:Details unter:
Voraussetzungen für SD-KarteFür Kurzanleitung benötigte Hardware/Software

zu installierende Version für Laufzeitsystem 

Für Kurzanleitung benötigte Hardware/Software
Spannungsversorgung für Raspberry PiRaspberry Pi zusammenstecken und IP-Adresse ermitteln
Standardeinstellung en_GB.UTF-8 UTF-8 aktiviertRaspberry Pi konfigurieren
bei Datenübertragung via MQTT: Verbindung für TCP-Port steuernDatenü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 NetzwerkkarteUmgebung 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 ändernAuf Hardware-IOs via EC-Engineer zugreifen

Beim Ändern des Layouts

Zu beachten:Details unter:

unterschiedliche Schritte zum Verschieben/Andocken von Sichten/Editoren
(sofern diese außerhalb von logi.CAD 3
liegen)

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?