Uservariable im laufenden Programm ändern

Uservariable im laufenden Programm ändern

Postby Christoph » 22 Dec 2011, 13:43

Hallo,

ich möchte bei eniem TMCM1060 im laufenden Betrieb eine Variable (globaler Parameter 20, Bank 2) auf 1 bzw. 0 setzen. Ich übergebe bereits diverse Variablen welche problemlos funktionieren.
Das Modul arbeitet im stand alone Betrieb und wird nur mit dem PC verbunden, um Werte (achsen- sowie globale Parameter) zu ändern.

Ich habe mehrere Motoren in meiner Anwendung und mit der Variable 20 will ich einfach einen bestimmten Motor nicht mehr fahren lassen.

Hier kurz die Anwendung:

Loop:
GGP 20, 2
COMP 0
JC NE, Sperren
Ja Loop

Das Programm befindet sich immer in dieser Schleife. Wird ein Signal an einem Eingang angelegt wird ein Programmteil ausgeführt (über Interrupt).

Z.B.:
Schliessen: // Signal auf IN_0

GGP 20, 2 // lade Parameter 20 (Motor sperren)
COMP 0 // Vergleich mit 0
JC NE, Loop // Wenn Wert ungleich 0 --> Loop
GGP 0, 2 // Lade Schließgeschindigkeit
AAP 4, 0 // Speichere Wert als max. Geschwindigkeit
.
.
.
Setze ich nun die globale Variable 20 auf 1 (SGP 20, 2, 1), so wird das Unterprogramm Sperren aufgerufen (funktioniert).

Sperren:
SIO 0, 2, 0
JA Loop

Setze ich nun die Variable wieder zurück wird der Part "Schließen" trotzdem nicht mehr ausgeführt (obwohl GP 20, 2 definitiv auf 0 gesetzt ist).
Erst wenn ich das Modul neu starte (Spannung AUS / EIN) funktioniert es wieder, wie es soll.

An was kann das liegen? Habe ich hier ein Problem, weil ich die Variable 20 ständig abfrage und dadurch eine Wertänderung nicht mitbekomme?
Gibt es vielleicht einen besseren Befehl für mein Vorhaben?

Bitte um Hilfe

Christoph
Christoph
User
User
 
Posts: 10
Joined: 12 Jan 2011, 09:53

Re: Uservariable im laufenden Programm ändern

Postby Olav Kahlbaum (TRINAMIC) » 22 Dec 2011, 17:54

Ein ständiges Abfragen einer User-Variablen macht keine Probleme. Aber ich sehe in Ihrem Programmauszug nicht, wo "Schliessen" überhaupt aufgerufen wird, so daß ich das ganze nicht nachvollziehen kann.
User avatar
Olav Kahlbaum (TRINAMIC)
Site Admin
 
Posts: 3356
Joined: 11 Aug 2006, 08:02

Re: Uservariable im laufenden Programm ändern

Postby Christoph » 27 Dec 2011, 19:13

"Schließen" wird erst ausgeführt, wenn ein Signal am Eingang IN_0 anliegt (Interrupt). Anschließend wird wieder in den Programmteil "Loop" gesprungen.
Christoph
User
User
 
Posts: 10
Joined: 12 Jan 2011, 09:53

Re: Uservariable im laufenden Programm ändern

Postby Olav Kahlbaum (TRINAMIC) » 02 Jan 2012, 09:35

Wenn "Schliessen" eine Interruptroutine ist und Sie dort "JA Loop" ausführen: kann es sein, daß Sie auf diese Art und Weise aus der Interruptroutine per JA herausspringen (der Label "Loop" scheint ja in ihrem Hauptprogramm zu liegen)? Eine Interruptroutine muß immer mit RETI verlassen werden. Nur dann kann ein Interrupt auch ein weiteres Mal ausgeführt werden, andernfalls befindet man sich noch in der Verarbeitung des ersten Interrupts (die mit RETI beendet werden muß).
User avatar
Olav Kahlbaum (TRINAMIC)
Site Admin
 
Posts: 3356
Joined: 11 Aug 2006, 08:02

Re: Uservariable im laufenden Programm ändern

Postby Christoph » 03 Jan 2012, 09:47

Ja der Label "Loop" ist mein Hauptprogramm. Alle Interruptroutinen werden ordnungsgemäß mit RETI beendet und es wird auch nirgends "JA LOOP" in meiner Interruptroutine aufgerufen.
Das Programm funktioniert ja auch einwandfrei.

Lediglich wenn ich die Variable 20 von 1 wieder auf 0 setze funktioniert das Programm nicht mehr.
Christoph
User
User
 
Posts: 10
Joined: 12 Jan 2011, 09:53

Re: Uservariable im laufenden Programm ändern

Postby Olav Kahlbaum (TRINAMIC) » 04 Jan 2012, 08:33

Ich denke, es ist besser wenn ich einmal das ganze Programm sehen könnte. Andernfalls kann ich nur Vermutungen äußern.
User avatar
Olav Kahlbaum (TRINAMIC)
Site Admin
 
Posts: 3356
Joined: 11 Aug 2006, 08:02

Re: Uservariable im laufenden Programm ändern

Postby Christoph » 04 Jan 2012, 15:10

Hab den Fehler gefunden.

Habe die Subroutine "Sperren" mit "JA Loop" und nicht mit "RSUB" beendet gehabt. jetzt funktioniert alles.

Danke für Ihre Bemühungen

Mfg
Christoph
User
User
 
Posts: 10
Joined: 12 Jan 2011, 09:53


Return to Trinamic Motion Control Language (TMCL)

Who is online

Users browsing this forum: No registered users and 0 guests

cron