Parametrierung des DRIVE-Befehls (A10)

1.1 EinleitungPAGEREF _Toc304468076 \h2

1.2 Beschreibung 3

1.2.1 Programmierung 3

1.2.2 Bitweises Schreiben 3

1.2.2.1 Besonderheiten bei SERCOS-Antrieben 4

1.2.3 Begrenzung des Ausgabewertes 4

1.3 Beispiel 1 5

1.4 Beispiel 2 7

1.5 Parameter 8

1.5.1 Übersicht 8

1.5.2 Beschreibung 8

1.6 Konstanten 14

Mehr:

button Einleitung

button Beschreibung

button Beispiel 1

button Beispiel 2

button Parameter

button Konstanten


Einleitung

Motivation

Abhängig vom verwendeten Antriebstyp werden im allgemeinen Funktionalitäten des Antriebes auf unterschiedliche Art und Weise angesprochen.

Die Umschaltung des Parametersatzes eines Antriebs wird bei SERCOS-Antrieben beispielsweise über die Parameter S-0-216 sowie S-0-217 durchgeführt, bei Profidrive-Antrieben erfolgt die Parametersatzumschaltung durch Steuerbits im STW1 im zyklisch übertragenen Sollwerttelegramm.

Ein weiteres Beispiel ist das Setzen des Drehmomentgrenzwertes:

Bei SERCOS-Antrieben kann die Drehmomentgrenze einerseits durch Schreiben des Parameters S-0-0092 über den Servicekanal gesetzt werden, andererseits kann S-0-0092 auch im zyklischen Telegramm parametriert sein.

Bei PROFIDRIVE-Antrieben wird der Drehmomentgrenzwert über das herstellerspezifische Telegrammelement MomRed (Signalnummer 50101 bei SIEMENS 611u) modifiziert, wobei im Telegrammelement angegeben wird, um wieviel Prozent der Momentengrenzwert zu reduzieren ist (MomRed = 30 -> Reduktion um 30 % auf 70 %).

Um dem Anwender eine antriebstypunabhängige Möglichkeit der Ansteuerung von Antriebsfunktionalitäten zu geben, wurde der NC-Befehl #DRIVE implementiert.

Durch diesen können gleiche Funktionalitäten unterschiedlicher Antriebstypen von Anwender im NC-Programm in einer antriebstypunabhängigen Weise angesprochen werden.

Die Anpassung an den jeweils verwendeten Antiebstyp erfolgt hierbei durch die entsprechende Konfiguration des CNC-Kernes.

Diese Funktionalität wird aktuell nur für die Antriebstypen SERCOS und Profidrive unterstützt.


Beschreibung

Mehr:

button Programmierung

button Bitweises Schreiben

button Begrenzung des Ausgabewertes


Programmierung

Programmierung

Die Antriebsfunktionen werden im NC-Programm durch den NC-Befehl #DRIVE WR SYN angesteuert. Die Auswahl der Antriebsfunktion wird durch den Aufrufparameter KEY durchgeführt.

Beispiel:

#DRIVE WR SYN [AX=X KEY=MOMRED, VAL=437]

In der obenstehenden NC-Zeile wird für die X-Achse die Antriebsfunktion MOMRED mit dem Wert 437 aufgerufen.

Beim übergebenen Wert kann parametriert werden, ob der Wert unverändert an den Antrieb übertragen werden soll, ob eine parametrierte Umrechnung auf den Wert angewendet werden soll oder ob durch den programmierten Wert eine Bitmaske an den Antrieb übertragen werden soll.

Durch die Parametrierung des CNC-Kernes ist nun abhängig vom jeweils verwendeten Antriebstyp dafür zu sorgen, dass diese NC-Zeile auf eine entsprechende Parametrierung des Antriebsreglers abgebildet wird.

Aktuell kann eine Umrechnung des im Aufrufparameter VAL übertragenen Wertes ins Antriebsformat nur für Drehmoment/Stromwerte durchgeführt werden.


Bitweises Schreiben

Bitweises Schreiben

Beim bitweisen Schreiben von Antriebswerten können durch den #DRIVE-Befehl ein oder mehrere Bits eines zum Antrieb übertragenen Wertes gesetzt bzw. gelöscht werden.

Hierzu ist in Parameter P-AXIS-00399 der Datentyp auf BITARRAY_16 bzw. BITARRAY_32 zu setzen.

Ist der im #DRIVE-Befehl programmierte Wert für den Funktionsparameter VAL größer als Null werden die im Parameter P-AXIS-00429 definierten Bits gesetzt, entsprechned werden bei einem Wert von 0 für den Funktionsparameter VAL die in P-AXIS-00429 definierten Bits gelöscht.

Das bitweise Schreiben von Antriebswerten ist nur für Bits möglich, die nicht bereits von der CNC verwendet werden.

Falls in P-AXIS-00429 Bits enthalten sind, die von der CNC verwendet werden, wird die Fehlermeldung P-ERR-70404 ausgegeben.

Falls das komplette Telegrammelement von der CNC verwendet wird, z. B. im Falle eines Lagesollwertes, wird die Fehlermeldung P-ERR-70405 ausgegeben.

Das bitweise Schreiben von Antriebswerten wird aktuell nur für die Kommunikationsart CYCLIC (siehe P-AXIS-00397) unterstützt, für alle anderen Kommunikationsarten wird die Fehlermeldung P-ERR-70402 ausgegeben wenn in P-AXIS-00399 als Datentyp BITARRAY_16 bzw. BITARRAY_32 eingestellt wird.

Mehr:

button Besonderheiten bei SERCOS-Antrieben


Besonderheiten bei SERCOS-Antrieben

Bei SERCOS-Antrieben ist das Steuerwort automatisch immer konfiguriert und erscheint nicht explizit in der Liste der konfigurierten Prozessdaten. Falls zum bitweisen Schreiben von Antriebsdaten eines der Echtzeitsteuerbits verwendet werden soll, ist in der zugehörigen wr_ident[] (P-AXIS-00398) der Wert S-0-0134 einzutragen, siehe Beispiel 2.


Begrenzung des Ausgabewertes

Begrenzung

Für den an den Antrieb zu übertragenden Wert können Maximal- und Minimalwerte konfiguriert werden. Falls der im #DRIVE-Befehl angegebene Wert außerhalb der konfigurierten Grenzwerte liegt, erfolgt eine automatische Korrektur des Wertes, es wird keine Fehlermeldung ausgegeben.

Die Skalierung der Grenzwerte erfolgt entsprechend dem Parameter P-AXIS-00401 (antr.function[].scaling_type).

Bei der Konfiguration der Grenzwert ist darauf zu achten, dass diese innerhalb des durch den Datentyp P-AXIS-00399 (antr.function[0].data_type) vorgegebenen Wertebereiches liegen müssen. Falls der zulässige Wertebereich überschritten wird, erfolgt die Ausgabe einer Fehlermeldung (P-ERR-70384 P-ERR-70383) und der Grenzwert wird automatisch korrigiert.

Falls keine Grenzwerte konfiguriert sind, wird keine Begrenzung durchgeführt.

Der konfigurierte Maximalwert muss größer als der Minimalwert sein, andernfalls wird eine Warnung (P-ERR-70385) ausgegeben und die Grenzwerte getauscht.


Beispiel 1

Beispiel

Es soll die Reduzierung des maximalen Drehmomentes eines Antriebes im NC-Programm antriebstypunabhängig durchgeführt werden. Der im Parameter VAL programmierte Wert soll in Nm bezogen auf die Motorwelle angegeben werden können.

Der maximal zulässige Wert für das Drehmoment ist 6,5 Nm, der minimal zulässige Wert 1,0 Nm.

Beispielsweise soll mit dem Befehl

#DRIVE WR SYN [AX=X KEY=TORQLIMIT VAL=4.5]

die Drehmomentgrenze des Motors auf 4,5 Nm gesetzt werden.

Drehmoment-skalierung

Zur Parametrierung der Drehmomentskalierung sind die folgenden Motordaten nötig.

Nennmoment des Motors: 7 Nm

Maximalmoment des Motors: 15 Nm

Drehmomentskalierung des Motors in 0,1 % bezogen auf das Maximalmoment des Motors. (Dies ist eine im Antrieb durchgefürhte Parametrierung).

In P-AXIS-00392 ist das Nennmoment des Motors einzutragen.

antr.acc_reference_value 7.0

In die Parameter P-AXIS-00325 und P-AXIS-00326 ist der Wert einzutragen, der an den Antrieb ausgegeben werden muss, damit der Motor sein Nennmoment abgibt.

Mit den vorgegebenen Werten also:

Damit ergeben sich die Werte für die folgenden Achsparameter:

antr.torque_scale_num 4667

antr.torque_scale_denom 10

Schließlich ist noch in P-AXIS-00401 einzutragen, dass die Drehmomentskalierung verwendet werden soll:

antr.function[0].scaling_type TORQUE_DRIVE_SIDE

Begrenzungen

Die Grenzwerte sind in den Parametern P-AXIS-00408 und P-AXIS-00409 einzustellen.

Da die Skalierung auf Drehmomentskalierung eingestellt ist sind die Grenzwerte ebenfalls in Nm anzugeben.

antr.function[0].min_limit 1.0

antr.function[0].max_limit 6.5

Parametrierung der Übertragung

1. Variante:

SERCOS-Antrieb; die Drehmomentgrenze wird durch Schreiben des SERCOS-Parameters S-0-92 über den Servicekanal gesetzt.

In der Achsparameterliste sind die folgenden Achsparameter einzustellen:

antr.function[0].id TORQLIMIT

antr.function[0].commu ACYCLIC

antr.function[0].wr_ident[0] S-0-92

antr.function[0].data_type SGN16

2. Variante:

SERCOS-Antrieb; die Drehmomentgrenze wird im zyklisch übertragenen Sollwertdiagramm übertragen.

In der Achsparameterliste sind die folgenden Achsparameter einzustellen:

antr.function[0].id TORQLIMIT

antr.function[0].commu CYCLIC

antr.function[0].wr_ident[0] S-0-92

antr.function[0].data_type SGN16

antr.function[0].startup_value 1000

Im zyklischen Telegramm muss ein Telegrammelement mit dem Namen "S-0-92" und dem Datentyp SGN16 konfiguriert sein.

3. Variante:

Profidrive-Antrieb; die Drehmomentgrenze wird im zyklischen Sollwerttelegramm im Telegrammelement "MOMRED" als vorzeichenbehafteter 16-bit Wert übertragen.

In der Achsparameterliste sind die folgenden Achsparameter einzustellen:

antr.function[0].id TORQLIMIT

antr.function[0].commu CYCLIC

antr.function[0].wr_ident[0] MOMRED

antr.function[0].data_type SGN16

antr.function[0].startup_value 100

Im zyklischen Telegramm muss ein Telegrammelement mit dem Namen "MOMRED" und dem Datentyp SGN16 konfiguriert sein.


Beispiel 2

Beispiel

Im Antrieb soll durch ansteuern eines Bits im Steuerwort die Drehzahlüberwachung deaktiviert werden.

Beispielsweise soll mit dem Befehl

#DRIVE WR SYN [AX=X KEY=SPEED_MON VAL=0]

die Drehzahlüberwachung deaktiviert werden, durch den Befehl

#DRIVE WR SYN [AX=X KEY=SPEED_MON VAL=1] soll die Drehzahlüberwachung wieder aktiviert werden.

Parametrierung der Übertragung

1. Variante:

PROFIDRIVE-Antrieb, die Drehzahlüberwachung wird durch setzten von Bit 8 im Steuerwort 2 (STW2) gesteuert.

In der Achsparameterliste sind die folgenden Achsparameter einzustellen:

antr.function[0].id SPEED_MON

antr.function[0].commu CYCLIC

antr.function[0].wr_ident[0] STW2

antr.function[0].startup_value 1

antr.function[0].data_type BITARRAY_16

antr.function[0].mask BIT_8

#alternativ:

#antr.function[0].mask 0x100

#

2. Variante:

SERCOS-Antrieb, die Drehzahlüberwachung wird durch das Echtzeitsteuerbit1 gesteuert.

In der Achsparameterliste sind die folgenden Achsparameter einzustellen:

antr.function[0].id SPEED_MON

antr.function[0].commu CYCLIC

antr.function[0].wr_ident[0] S-0-0134

antr.function[0].startup_value 1

antr.function[0].data_type BITARRAY_16

antr.function[0].mask 0x40


Parameter

Mehr:

button Übersicht

button Beschreibung


Übersicht

ID | Parameter | Beschreibung
P-AXIS-00396 | id | Name der Antriebsfunktion im NC-Programm.
P-AXIS-00397 | commu | Art der Kommunikation mit dem Antriebsverstärker.
P-AXIS-00398 | wr_ident[0]/wr_ident[1] | Name des Parameters bzw. Telegrammelementes.
P-AXIS-00399 | data_type | Datentyp des zu übertragenden Datums.
P-AXIS-00400 | startup_value | Wert eines zyklisch übertragenen Datenelementes nach Steuerungshochlauf.
P-AXIS-00401 | scaling_type | Legt die auf den Wert VAL anzuwendete Umrechnung zur Umrechnung ins Antriebsformat fest.
P-AXIS-00325 | torque_scale_num | Zähler Skalierungsfaktor Drehmomentskalierung.
P-AXIS-00326 | torque_scale_denom | Nenner Skalierungsfaktor Drehmomentskalierung.
P-AXIS-00392 | acc_reference_value | Bezugswert für die Umrechnung von Drehmomentwerten in das Motorformat.
P-AXIS-00408 | min_limit | Minimal zulässiger Ausgabewert.
P-AXIS-00409 | max_limit | Maximal zulässiger Ausgabewert.
P-AXIS-00429 | mask | Bitmaske beim bitweisen Schreiben von Antriebswerten.


Beschreibung

P-AXIS-00396 | Name der Antriebsfunktion im NC-Programm.
Parameter | antr.function[i].id
Beschreibung | Name unter dem die parametrierte Antriebsfunktion im NC-Programm mit dem #DRIVE-Befehl ([PROG]) angesprochen wird.
Datentyp | String
Datenbereich | Maximal 29 Zeichen
Dimension | translatorisch: - | rotatorisch: -
Standardwert |
Anmerkungen | Aktuell nur für SERCOS- und Profidrive-Antriebe.

P-AXIS-00397

Art der Kommunikation mit dem Antriebsverstärker.

Parameter

antr.function[i].commu

Beschreibung

Parameter legt fest, über welche Kommunikationsart die Funktionalität im Antrieb angesprochen wird.

Für den Parameter sind die folgenden Werte zulässig:

CYCLIC | Die Antriebsfunktion wird durch einen im zyklischen Antriebstelegramm konfiguriertes Telegrammelement geschaltet. Der Name des Telegrammelementes ist hierbei im Parameter P-AXIS-00398 zu parametrieren.
ACYCLIC | Die Antriebsfunktion wird durch Schreiben eines Antriebsparameters über den Parameterkanal angesprochen. Der Name des Telegrammelementes ist hierbei im Parameter P-AXIS-00398 zu parametrieren.
IGNORE | Es wird kein Wert zum Antrieb übertragen.

Datentyp

String

Datenbereich

["CYCLIC" | "ACYCLIC" | "IGNORE"]

Dimension

translatorisch: -

rotatorisch: -

Standardwert

Anmerkungen

Aktuell nur für SERCOS- und Profidrive-Antriebe.

P-AXIS-00398 | Name des Parameters bzw. Telegrammelementes.
Parameter | antr.function[i].wr_ident[0]/[1]
Beschreibung | Dieser Parameter legt fest, welcher Antriebsparameter bzw. welches Telegrammelement des zyklischen Telegrammes zum Schalten der Antriebsfunktion verwendet werden soll.
Datentyp | String
Datenbereich |
Dimension | translatorisch: - | rotatorisch: -
Standardwert |
Anmerkungen | Aktuell nur für SERCOS- und Profidrive-Antriebe.

P-AXIS-00399

Datentyp des zu übertragenden Datums.

Parameter

antr.function[i].data_type

Beschreibung

Mit diesem Parameter wird der Datentyp des Antriebsparameters bzw. des Telegrammelementes des zyklischen Telegrammes, das zum Schalten der Antriebsfunktion verwendet werden, soll festgelegt.

Der Parameter kann die folgenden Werte annehmen:

Typkennung | Datentyp | Minmalwert | Maximalwert
SGN16 | Vorzeichenbehaftete 16 Bit Ganzzahl | MIN_SGN16 | MAX_SGN16
SGN32 | Vorzeichenbehaftete 32 Bit Ganzzahl | MIN_SGN32 | MAX_SGN32
BITARRAY_16 | Bitmaske 16 Bit | 0 | MAX_UNS16
BITARRAY_32 | Bitmaske 32 Bit | 0 | MAX_UNS32

Datentyp

String

Datenbereich

["SGN16" | "SGN32" | " BITARRAY_16" | " BITARRAY_32"]

Dimension

translatorisch: -

rotatorisch: -

Standardwert

Anmerkungen

Aktuell nur für SERCOS- und Profidrive-Antriebe.

Die Datentypen BITARRAY_16 und BITARRAY_32 werden aktuell nur für den Kommunikationstyp (P-AXIS-00397) CYCLIC unterstützt, für alle anderen Kommunikationstypen wird die Fehlermeldung P-ERR-70402 ausgegeben..

P-AXIS-00400 | Wert eines zyklisch übertragenen Datenelementes nach Steuerungshochlauf.
Parameter | antr.function[i].startup_value
Beschreibung | Mit diesem Parameter wird der Wert des Telegrammelementes des zyklischen Telegrammes nach Steuerungshochlauf festgelegt, wenn P-AXIS-00397 den WERT CYCLIC hat.
Datentyp | SGN32
Datenbereich | [MIN_SGN16 MAX_SGN16] wenn P-AXIS-00399 = "SGN16", [MIN_SGN32 MAX_SGN32] wenn P-AXIS-00399 = "SGN32"
Dimension | translatorisch: - | rotatorisch: -
Standardwert |
Anmerkungen | Aktuell nur für SERCOS- und Profidrive-Antriebe.

P-AXIS-00401

Auf den zu übertragenden Wert anzuwendente Umrechnung.

Parameter

antr.function[i].scaling_type

Beschreibung

Mit diesem Parameter wird festgelegt wie der zu übertragende Wert vor der Übertragung an den Antrieb umgerechnet wird.

Es sind die folgenden Skalierungen möglich:

Kennung | Skalierung
UNSCALED | Der Wert aus dem NC-Programm wird unskaliert ausgegeben (Umrechnungsfaktor = 1).
TORQUE_DRIVE_SIDE | Der programmierte Wert ist ein Drehmomentwert bezogen auf die Motorwelle und wird mittels der Parameter P-AXIS-00325, P-AXIS-00326 und P-AXIS-00392 in das Drehmomentformat des Antriebes umgerechnet. Der Umrechnungsfaktor ändert sich beim Getriebeschalten nicht. Der Umrechnungsfaktor f ist:

Datentyp

STRING

Datenbereich

[ UNSCALED | TORQUE_DRIVE_SIDE]

Dimension

translatorisch: -

rotatorisch: -

Standardwert

UNSCALED

Anmerkungen

Aktuell nur für SERCOS- und Profidrive-Antriebe implementiert.

P-AXIS-00325 | Zähler Skalierungsfaktor Drehmomentskalierung
Parameter | antr. torque_scale_num
Beschreibung | Nenner des Skalierungsfaktors für die Drehmomentvorgabe an den Antrieb. Der Faktor wird als Quotient angegeben. Dieser Quotient ist der Wert, der an den Antrieb ausgegeben werden muss, damit der Motor sein Nennmoment abgibt.
Datentyp | UNS32
Datenbereich | 0 < v_reso_nom < MAX(UNS32)
Dimension | translatorisch: Inkremente | rotatorisch: Inkremente
Standardwert | 1
Anmerkungen |

P-AXIS-00326 | Nenner Skalierungsfaktor für Drehmoment
Parameter | antr.torque_scale_denom
Beschreibung | Nenner des Skalierungsfaktors für die Drehmomentvorgabe an den Antrieb. Der Faktor wird als Quotient angegeben. Dieser Quotient ist der Wert, der an den Antrieb ausgegeben werden muss, damit der Motor sein Nennmoment abgibt.
Datentyp | UNS32
Datenbereich | 0 < torque_scale_denom MAX < (UNS32)
Dimension | translatorisch: - | rotatorisch: -
Standardwert | 1
Anmerkungen |

P-AXIS-00392 | Bezugswert für Drehmomentskalierung
Parameter | antr.acc_reference_value
Beschreibung | Dieser Parameter dient der Parametrierung des Umrechnungsfaktors in das antriebsseitig verwendete Drehmomentformat . Es ist das Nennmoment des Motors einzutragen.
Datentyp | REAL64
Datenbereich | 0 .. MAX_REAL64
Dimension | Nm (N bei Linearmotor)
Standardwert | 1
Anmerkungen |

P-AXIS-00408

Minimal zulässiger Ausgabewert

Parameter

antr.function[].min_limit

Beschreibung

Mit diesem Parameter kann der minimal zulässige Ausgabewert festgelegt werden. Unterschreitet der im #DRIVE-Befehl programmierte Wert den Minimalwert wird der an den Antrieb ausgegebene Wert automatisch auf den Minimalwert korrigiert, dabei wird keine Fehlermeldung ausgegeben.

Ist P-AXIS-00408 kleiner als der mit dem durch P-AXIS-00399 eingestellten Datentyp darstellbare Minimalwert erfolgt die Ausgabe einer Fehlermedung P-ERR-70384 und der Wert von P-AXIS-00408 wird korrigiert.

Falls P-AXIS-00409 konfiguriert ist, muss P-AXIS-00409 größer sein als P-AXIS-00408 andernfalls wird die Warnung 70385 ausgegeben und die Werte werden getauscht.

Wenn dieser Parameter nicht konfiguriert ist, wird keine Begrenzung durchgeführt.

Datentyp

REAL64

Datenbereich

Abhängig von P-AXIS-00399 und P-AXIS-00401

Dimension

Standardwert

Anmerkungen

Aktuell nur für SERCOS- und Profidrive-Antriebe implementiert.

P-AXIS-00409

Maximal zulässiger Ausgabewert

Parameter

antr.function[].max_limit

Beschreibung

Mit diesem Parameter kann der maximal zulässige Ausgabewert festgelegt werden. Überschreitet der im #DRIVE-Befehl programmierte Wert den Maximalwert wird der an den Antrieb ausgegebene Wert automatisch auf den Maximalwert korrigiert, dabei wird keine Fehlermeldung ausgegeben.

Ist P-AXIS-00409 größer als der mit dem durch P-AXIS-00399 eingestellten Datentyp darstellbare Maximalwert erfolgt die Ausgabe einer Fehlermedung P-ERR-70383 und der Wert von P-AXIS-00409 wird korrigiert.

Falls P-AXIS-00408 konfiguriert ist, muss P-AXIS-00408 kleiner sein als P-AXIS-00409 andernfalls wird die Warnung P-ERR-70385 ausgegeben und die Minimal- und Maximalwerte werden getauscht.

Wenn dieser Parameter nicht konfiguriert ist, wird keine Begrenzung durchgeführt.

Datentyp

REAL64

Datenbereich

Abhängig von P-AXIS-00399 und P-AXIS-00401

Dimension

Standardwert

Anmerkungen

Aktuell nur für SERCOS- und Profidrive-Antriebe implementiert.

P-AXIS-00429

Bitmaske

Parameter

antr.function[].mask

Beschreibung

Mit diesem Parameter wird beim bitweisen Schreiben von Antriebswerten die zu setzende Bitmaske definiert.

Ist der im #DRIVE-Befehl programmierte Wert größer Null wird die Bitmaske gesetzt, bei einem programmierten Wert von Null werden die Bits der Bitmaske aus dem zu Antrieb übertragenen Wert gelöscht.

Dieser Wert wird nur verwendet, wenn der in P-AXIS-00399 konfigurierte Datentyp den Wert BITARRAY_16 oder BITARRAY_32 hat.

Der Wert von P-AXIS-00429 muss kleiner oder gleich den durch die Parametrierung von P-AXIS-00399 festgelegten Maximalwerten sein, andernfalls wird eine Fehleremeldung P-ERR-70403 ausgegeben.

Datentyp

UNS32

Datenbereich

Abhängig von P-AXIS-00399:

Typkennung | Datentyp | Minimalwert | Maximalwert
BITARRAY_16 | Bitmaske 16 Bit | 0 | MAX_UNS16
BITARRAY_32 | Bitmaske 32 Bit | 0 | MAX_UNS32

Dimension

Standardwert

0

Anmerkungen

Aktuell nur für SERCOS- und Profidrive-Antriebe implementiert.


Konstanten

Konstante | Wert
MIN_SGN16 | -32768
MAX_SGN16 | 32767
MIN_SGN32 | -2147483648
MAX_SGN32 | 2147483647
MAX_UNS16 | 65535
MAX_UNS32 | 4294967295