Herunterladen Inhalt Inhalt Diese Seite drucken

Beispiel Eines Mappings; Out.controlword = 1; U16 Tmpvar = In.statusword; Inout.modeofoperation = Tmpvar - Nanotec CL3-E Technisches Handbuch

Feldbus: canopen, usb, modbus rtu
Vorschau ausblenden Andere Handbücher für CL3-E:
Inhaltsverzeichnis

Werbung

10 Programmierung mit NanoJ
Die Schreib- und Leseberechtigung einer Variable: Eine Variable kann entweder als input, output
oder inout deklariert werden. Damit wird festgelegt, ob eine Variable lesbar (input), schreibbar
(output) oder beides ist (inout) und über welche Struktur sie im Programm angesprochen werden
muss.
<INDEX>:<SUBINDEX>
Index und Subindex des zu mappenden Objekts im Objektverzeichnis.
Jede deklarierte Variable wird im Benutzerprogramm über eine der drei Strukturen In, Out oder InOut
angesprochen, je nach definierter Schreib- und Leserichtung.
Ein Kommentar ist nur oberhalb der jeweiligen Mapping-Deklaration im Code erlaubt, nicht in
derselben Zeile.

10.2.2 Beispiel eines Mappings

Beispiel eines Mappings und der zugehörigen Variablenzugriffe:
// 6040
:00
is UNSIGNED16
h
h
map U16 controlWord as output 0x6040:00
// 6041
:00
is UNSIGNED16
h
h
map U16 statusWord as input 0x6041:00
// 6060
:00
is SIGNED08 (INTEGER8)
h
h
map S08 modeOfOperation as inout 0x6060:00
#include "wrapper.h"
void user()
{
[...]
Out.controlWord = 1;
U16 tmpVar = In.statusword;
InOut.modeOfOperation = tmpVar;
[...]
}
10.2.3 Möglicher Fehler bei od_write()
Eine mögliche Fehlerquelle ist ein schreibender Zugriff mittels der Funktion od_write() (siehe NanoJ-
Funktionen im NanoJ-Programm
angelegt wurde. Nachfolgend aufgelisteter Code ist fehlerhaft:
map U16 controlWord as output 0x6040:00
#include " wrapper.h"
void user()
{
[...]
Out.controlWord = 1;
[...]
od_write(0x6040, 0x00, 5 ); // der Wert wird durch das Mapping überschrieben
[...]
}
Die Zeile mit dem Befehl od_write(0x6040, 0x00, 5 ); ist wirkungslos. Wie in der Einleitung
beschrieben, werden alle Mappings am Ende jeder Millisekunde in das Objektverzeichnis kopiert.
Damit ergibt sich folgender Ablauf:
Version: 3.4.0 / FIR-v2213
HINWEIS
) auf ein Objekt im Objektverzeichnis, welches gleichzeitig als Mapping
180

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis