Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

R-Werte Variablen löschen, Einfacher Befehl oder Unterprogramm

Beitrag 27.08.2019, 06:52 Uhr
ballnus-consulting
ballnus-consulti...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 31.05.2018
Beiträge: 12
Hallo liebe Siemens Freunde,

ich habemal eine Frage bezüglich der R-Werte (Variablen)

Gibt es auch einen einzelnen Befehl, mit dem ich z.B. die R-Werte im Berecih (x bix Y z.B. 0-99) auf Null setzen kann?
Oder muss ich z.B. jede einzeln auf Null setzen z.B. in eine Unterprogramm.

Danke für Euer Wissen
Grüsse vom Bodensee

Siemenssteuerung 840D SL
   
Beitrag 27.08.2019, 20:03 Uhr
N0F3aR
N0F3aR
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 05.12.2011
Beiträge: 980
Hallo,

Bei der Ansicht von den Variablen gibt es einen Softkey da steht alle Variablen zurücksetzen.

Lg
   
Beitrag 28.08.2019, 05:35 Uhr
ballnus-consulting
ballnus-consulti...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 31.05.2018
Beiträge: 12
QUOTE (N0F3aR @ 27.08.2019, 21:03 Uhr) *
Hallo,

Bei der Ansicht von den Variablen gibt es einen Softkey da steht alle Variablen zurücksetzen.

Lg

Danke Dir für Deine Antwort N0F3aR.

aber ich meinete innerhalb des Programmcodes einen Befehls oder Befehlskette. Ohne eine Schleife einzubauen.

Sowas in der Art wie eine Set Befehl oder dergleichen.

Danke again für Ideen
   
Beitrag 28.08.2019, 06:54 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.927
R-Parameter können ja auch als Felder aufgefasst werden. Demzufolge müsste es möglich sein zu schreiben:
R[100] = REP(0)
um die R-Parameter R0 bis R99 zu löschen. In der Doku habe ich dazu nichts gefunden, und ausprobiert habe ich das auch nicht.
Du kannst es ja mal versuchen.
   
Beitrag 28.08.2019, 12:53 Uhr
Boern
Boern
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 27.11.2004
Beiträge: 2.484
Hallo

das könntest du so machen:

N10 DEF INT SETNULL
N20 SETNULL=1

N30 ANFANG:
N40 R[SETNULL]=0
N50 STOPRE
N60 IF SETNULL>=99 GOTOF ENDE

N70 SETNULL=SETNULL+1
N80 GOTOB ANFANG

N90 ENDE:
N100 M30

Habs im Sinutrain versucht spitze.gif

Gruß Boern


--------------------

Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.


Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
   
Beitrag 28.08.2019, 13:33 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.927
Gerade so, weshalb auch immer, wollte es der Fragesteller ja nicht haben (s. #3: "Ohne eine Schleife einzubauen").
Wenn ich aber schon eine Schleife einbauen wollte, dann sicher als DO-Schleife und nicht mit Sprungmarken, Abfragen und Rücksprung.

Der Beitrag wurde von CNCFr bearbeitet: 28.08.2019, 13:34 Uhr
   
Beitrag 28.08.2019, 17:44 Uhr
Boern
Boern
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 27.11.2004
Beiträge: 2.484
QUOTE (CNCFr @ 28.08.2019, 14:33 Uhr) *
Gerade so, weshalb auch immer, wollte es der Fragesteller ja nicht haben (s. #3: "Ohne eine Schleife einzubauen").
Wenn ich aber schon eine Schleife einbauen wollte, dann sicher als DO-Schleife und nicht mit Sprungmarken, Abfragen und Rücksprung.


Tja dann mach doch mal ein Beispiel?


--------------------

Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.


Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
   
Beitrag 28.08.2019, 20:28 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.927
So z.B.:
CODE
N10 DEF INT _LETZTER_INDEX = 99
N20 DEF INT _INDEX

N30 FOR _INDEX = 0 TO _LETZTER_INDEX
N40 R[_INDEX] = 0
N50 ENDFOR

N60 M30
   
Beitrag 29.08.2019, 06:02 Uhr
ballnus-consulting
ballnus-consulti...
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 31.05.2018
Beiträge: 12
QUOTE (CNCFr @ 28.08.2019, 07:54 Uhr) *
R-Parameter können ja auch als Felder aufgefasst werden. Demzufolge müsste es möglich sein zu schreiben:
R[100] = REP(0)
um die R-Parameter R0 bis R99 zu löschen. In der Doku habe ich dazu nichts gefunden, und ausprobiert habe ich das auch nicht.
Du kannst es ja mal versuchen.

Hallo CNCFr.

Der Befehl funzt prima, habe es heute in der Firma ausprobiert und klappt.
Jedoch gibt es eine Einschränkung.

Bei R[100] = REP(0) löscht er nichts, der Wert in [100] bedeutet ab dort bis 99
Also möchte man vom Paramter 10 bis 99 die Werte auf NULL setzen muss es so lauten: R[10] = REP(0)

Wie man mit dieser Syntax jedoch eine Range auswählen kann, z.B. (10-50) weiss ich noch nicht, suche da aber noch etwas zu.

Viele Grüsse und Danke an alle Ideengeber.
   
Beitrag 09.09.2019, 12:57 Uhr
CaptainFu
CaptainFu
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 09.09.2019
Beiträge: 49
Falls es noch wer braucht.
Siehe Kapitel 2.1.13 (Arbeitsvorbereitung DocOnCd) Definition und Initialisierung von Feldvariablen (DEF, SET, REP)

Die Range wird über einen zweiten Parameter gesteuert, z.B. die R-Parameter von 100 bis 120 mit "Null" oder eben mit jedem anderen beliebigem Wert intialisieren.

;Startpunkt, Wert, Range
R[100] = Rep(0,20)
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: