8 Programmierung mit NanoJ
Sollte das NanoJ-Programm zu lange die Rechenzeit nicht abgeben, wird es vom Betriebssystem
beendet. In diesem Fall wird in das Statusword bei Objekt 2301
Fehlerregister bei Objekt 2302
2302h NanoJ Error Code.
8.1.2 Sandbox
Durch prozessorspezifische Eigenschaften wird eine sogenannte Sandbox generiert. Ein Benutzerprogramm
in der Sandbox hat nur die Möglichkeit, auf speziell zugewiesene Speicherbereiche und Systemressourcen
zuzugreifen. Beispielsweise wird ein Versuch, auf ein Prozessor-IO-Register direkt zu schreiben, mit
einem MPU Fault quittiert und das Benutzerprogramm wird mit dem entsprechenden Fehlercode im
Objektverzeichnis abgebrochen.
8.1.3 NanoJ-Programm - Kommunikationsmöglichkeiten
Ein NanoJ-Programm hat mehrere Möglichkeiten, mit der Steuerung zu kommunizieren:
■ Lesen und Schreiben von OD-Werten per PDO-Mapping
■ direktes Lesen und Schreiben von OD-Werten über Systemcalls
■ Aufruf sonstiger Systemcalls (z. B. Debug-Ausgabe schreiben)
Über ein PDO-Mapping werden dem Benutzerprogramm OD-Werte in Form von Variablen zur Verfügung
gestellt. Bevor ein Benutzerprogramm die 1 ms-Zeitscheibe erhält, werden dazu von der Firmware die
Werte aus dem Objektverzeichnis in die Variablen des Benutzerprogramms übertragen. Sobald das
Benutzerprogramm Rechenzeit erhält, kann es diese Variablen wie gewöhnliche C-Variablen manipulieren.
Am Ende der Zeitscheibe werden letztendlich die neuen Werte von der Firmware wieder automatisch in die
jeweiligen OD-Einträge kopiert.
Um die Performance zu optimieren, werden dabei drei Arten von Mappings definiert: Input, Output und Input/
Output (In, Out, InOut).
■ Input Mappings lassen sich nur lesen und werden nicht zurück ins Objektverzeichnis übertragen.
■ Output Mappings lassen sich nur schreiben.
■ Input/Output Mappings erlauben hingegen Lesen und Schreiben.
Die gesetzten Mappings können über die GUI bei den Objekten 2310
überprüft werden. Für jedes Mapping sind maximal 16 Einträge erlaubt.
Über die Angabe der Linker-Section wird in NanoJEasy gesteuert, ob eine Variable im Input-, Output- oder
Datenbereich abgelegt wird.
8.1.4 NanoJ-Programm ausführen
Zusammengefasst besteht das NanoJ-Programm bei der Ausführung eines Zyklus hinsichtlich des PDO-
Mappings aus folgenden drei Schritten:
1. Werte aus dem Objektverzeichnis lesen und in die Bereiche Inputs und Outputs kopieren
2. Benutzerprogramm ausführen
3. Werte aus den Bereichen Outputs und Inputs zurück in das Objektverzeichnis kopieren
Die Konfiguration der Kopiervorgänge ist dem CANopen-Standard angelehnt.
Zusätzlich kann über Systemcalls auf Werte des Objektverzeichnisses zugegriffen werden. Dies ist im
Allgemeinen deutlich langsamer und daher sind Mappings vorzuziehen. Die Anzahl an Mappings ist begrenzt
(jeweils 16 Einträge in In/Out/InOut).
Nanotec empfiehlt: Häufig genutzte und veränderte OD-Einträge mappen und auf weniger häufig
genutzte OD-Einträge per Systemcall zuzugreifen.
Version: 2.0.2 / FIR-v1650
Hinweis
wird die Ziffer 5 (Timeout) notiert, siehe 2301h NanoJ Status und
h
Tipp
die Ziffer 4 eingetragen, im
h
, 2320
, und 2330
ausgelesen und
h
h
h
100