Roboterprofis für Ihren Erfolg
Roboterprogrammierer auf Stundenbasis engagieren
jetzt Preise und verfügbare Roboterprogrammierer anfragen

Autor Thema:  Ausgänge pulsen im TP  (Gelesen 3977 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline mike

  • Forum Mitglied LV 15
  • *
  • Beiträge: 187
  • Bewertet: +3
Ausgänge pulsen im TP
« am: 08. Februar 2007, 19:55:22 »
Hallo,

Ich möchte einen Ausgang im TP Programm pulsen.Aber ich will die Zeit variabel einstellen können.Über ein Register,dann brauch ich nicht jedesmal anzuhalten,wenn ich die Zeit verändern will.
Wartezeit kann ich ja mit einem Register steuern.Aber auch Ausgänge pulsen ?
Geht das ?


Gruß

Mike
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Hubraum ist durch nichts zu ersetzen, außer durch noch mehr Ladedruck

Offline Sven Weyer

  • Global Moderator
  • Forum Legende LV 1
  • *
  • Beiträge: 1069
  • Bewertet: +20
Re: Ausgänge pulsen im TP
« am: 08. Februar 2007, 22:21:17 »
Hi Mike,
würde das auf dem ersten Blick mal mit einem Macro probieren und dann über eine der Funktionstasten. Im Macro selbst kannst Du ja dann zum Puls oder Setze/Rücksetze Dein Register einbinden welches Du dann variabel verändern kannst.
Sollte das nicht gehen mit der indirekten Wertzuweisung für eine Pulselänge gibt es da sicherlich den Zugriff über Systemvariablen.

Hoffe ich konnte Dir etwas helfen.

robotic74

P.S.: Was mir da noch einfällt. Bei den Funktionstasten lässt sich auch noch etwas einstellen mit Ausgängen etc. schau doch da mal nach ob es dort nicht schon eine Einstellung gibt. Aber variabel lässt sich die nicht einstellen. Da bist Du mit dem Macro sicherlich besser drann.
« Letzte Änderung: 08. Februar 2007, 22:23:03 von robotic74 »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

Offline rob76

  • Global Moderator
  • Forum Elite LV 4
  • *
  • Beiträge: 284
  • Bewertet: +3
Re: Ausgänge pulsen im TP
« am: 08. Februar 2007, 23:14:51 »
Hallo Mike
Mit Karel wäre das kein Thema aber ich denke mal du willst das in TPE haben.
Pulslänge indirekt angeben geht leider nicht,gibt auch keine Systemvariabeln dazu.
Es wäre aber machbar das ganze mit Multitasking oder zur not nen Makroaufruf zu realisieren.
Man kann bei der WAIT...(sec) Anweisung die Zeit indirekt angeben.
z.B
DO[1]=ON
WAIT R[1]     --------im Register 1 steht die Zeit in Sekunden
DO[1]=OFF
Wenn du sowas mit Multitasking nebenbei ausführst sollte das funktionieren.
Wenn der Roboter während des pulsens eh steht gehts natürlich auch ohne.




Gruß Rob76
« Letzte Änderung: 08. Februar 2007, 23:19:42 von rob76 »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline WolfHenk

  • WolfHenk eben.
  • Forum Legende LV 7
  • *
  • Beiträge: 2387
  • GIT d- s+:- a+ C++ UL+ P+ L+ E-- W++ !N !o !K w !O
    • WolfHenk.de
  • Bewertet: +29
Re: Ausgänge pulsen im TP
« am: 09. Februar 2007, 21:53:37 »
Vielleicht sollte man ihm einfach ein kleines Karelproggi geben, das er dann als "Makro" verwenden kann. Ein Register für Impuls und eins für Pausendauer...

Eben die "Zehn-Zeilen-Lususvariante"...
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wolfram (Cat) Henkel

never forget Asimov's Laws at the programming of robots...

"Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."

https://www.xing.com/go/invite/5634410.eb15e5

PMs und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet. Diese Fragen und die Antworten interessieren jeden hier im Forum.

Offline mike

  • Forum Mitglied LV 15
  • *
  • Beiträge: 187
  • Bewertet: +3
Re: Ausgänge pulsen im TP
« am: 10. Februar 2007, 13:02:18 »
So was wäre nicht schlecht,langsam muß ich mal mit Karel anfangen,und im Betrieb haben wir niemanden der sowas kann.
Wenn`s nicht zuviel Mühe macht..........



Gruß

Mike
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Hubraum ist durch nichts zu ersetzen, außer durch noch mehr Ladedruck

Offline WolfHenk

  • WolfHenk eben.
  • Forum Legende LV 7
  • *
  • Beiträge: 2387
  • GIT d- s+:- a+ C++ UL+ P+ L+ E-- W++ !N !o !K w !O
    • WolfHenk.de
  • Bewertet: +29
Re: Ausgänge pulsen im TP
« am: 10. Februar 2007, 19:39:04 »
hier....

--==============================================================================
--
-- Projekt :       Konfigurierbarer Standard Takter
--
--
-- MODUL : takter.kl
--
-- Beschreibung : Ein Takter, der frei konfigurierbar aus normalen Registern gesteuert wird
--
-- Autor : Wolfram Henkel
-- Lizenz       :       GPL
--
-- Datum Name Modifikation
--==============================================================================
-- 10.02.07 W. Henkel (cat) Grunderstellung
--
--==============================================================================
-- Leichenliste
-- PROGRAMM ist weder auf Übersetzbarkeit noch auf Funktion geprüft
--
--==============================================================================
--
-- Copyright (C) 2007
--
-- Wolfram (Cat) Henkel
--
-- Sprache: KAREL V4.20P
-- Translator: KTRANS Version V4.20P
--
-- Dieses Programm ist freie Software. Sie können es unter den Bedingungen der
-- GNU General Public License, wie von der Free Software Foundation veröffentlicht,
-- weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder
-- (nach Ihrer Option) jeder späteren Version.
--
-- Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen
-- von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite
-- Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK.
-- Details finden Sie in der GNU General Public License.
--
-- Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem
-- Programm erhalten haben. Falls nicht, schreiben Sie an die
-- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
--
----------------------------------------------------------------------------------------

PROGRAM takter

-- hier folgen Anweisungen für den Translator
%COMMENT     = 'Takter v1.0'
%ALPHABETIZE
%NOLOCKGROUP -- Keine Anforderung der Bewegungskontrolle
%NOPAUSE     = ERROR + COMMAND + TPENABLE -- Kein Stop bei Fehler, Pause-Kommando oder TP=Ein
-- %NOBUSYLAMP -- steuert die "BUSY" - Lampe am TP und Controller
%INCLUDE klevccdf
%INCLUDE klevkeys
%INCLUDE klevkmsk

--==============================================================================
-- Festlegung von Variablen und Konstanten

VAR  -- eben die globalen Variablen im CMOS Stromausfallsicher
  regon IN CMOS : INTEGER       --  RegON  enthält numon
  regoff IN CMOS : INTEGER      --  RegOFF enthält numoff
  numon IN CMOS : INTEGER       --  Einschaltdauer   (0 beendet Programm)
  numoff IN CMOS : INTEGER      --  Ausschaltdauer
  numout IN CMOS : INTEGER      --  Nummer des AUSGANGS, der blinkt
  numin IN CMOS : INTEGER       --  Nummer des Eingangs, der das Blinken aktiviert  (0 blinkt immer)
  regout IN CMOS : INTEGER      --  RegOUT enthält numout
  regin IN CMOS : INTEGER       --  RegIN  enthält numin

-- Rückgabewerte von Routinen
  status       : INTEGER                -- Statusvariable von Build In Routinen
  real_flag    : BOOLEAN                -- Identifizierung Integer oder Realwert in Register
  int_value    : INTEGER                -- Rückgabe des Integerwert in Register
  real_value   : REAL                   -- Rückgabe des Realwertes in Register

--==============================================================================

ROUTINE clear_screen

BEGIN
  WRITE TPFUNC (CHR(cc_home))
  WRITE TPFUNC (CHR(cc_clear_eol))
  WRITE TPFUNC (CHR(cc_home))
  WRITE TPDISPLAY (CHR(cc_clear_win))
  WRITE TPDISPLAY (CHR(cc_normal))
  WRITE TPDISPLAY (CHR(cc_video_off))
END clear_screen

ROUTINE userpage_tp

BEGIN
  FORCE_SPMENU (TP_PANEL, SPI_TPUSER, 1)   -- Umschalten auf Userpage TP
  DELAY (32)
END userpage_tp

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

ROUTINE copyright

BEGIN
  clear_screen
  WRITE TPDISPLAY (CHR(cc_reverse))
  WRITE TPDISPLAY ('----------------------------------------', CR)
  WRITE TPDISPLAY (CHR(cc_high_wide))
  WRITE TPDISPLAY ('by WolfHenk', CR)
  WRITE TPDISPLAY ('TAKTER', CR)
  WRITE TPDISPLAY (CHR(cc_video_off))
  WRITE TPDISPLAY ('----------------------------------------')
  WRITE TPDISPLAY (CHR(cc_video_off))
  WRITE TPDISPLAY (CR)
  WRITE TPPROMPT ('THIS PROGRAM RUNS UNDER GPL')
  userpage_tp
  DELAY 5000
END copyright

--==============================================================================

ROUTINE setup

BEGIN
  copyright
  WRITE (CHR(cc_clear_win))
  WRITE (' Eingabe Impulszeitregister', CR)
  READ (regon)
  WRITE ('  Impulszeitregister ist nun ', regon, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE ('  Pausenzeitregister', CR)
  READ (regoff)
  WRITE ('  Pausenzeitregister ist nun ', regoff, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE (' Eingabe Impulsdauer', CR)
  READ (numon)
  WRITE ('  Impulsdauer ist nun ', numon, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE (' Eingabe Pausensdauer', CR)
  READ (numoff)
  WRITE ('  Pausendauer ist nun ', numoff, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE ('  Register mit Ausgangsnummer', CR)
  READ (regout)
  WRITE ('  Register Ausgangsnummer ist nun ', regout, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE ('  Ausgangsnummer', CR)
  READ (numout)
  WRITE ('  Ausgangsnummer ist nun ', numout, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE ('  Register mit Eingangsnummer', CR)
  READ (regin)
  WRITE ('  Register Eingangsnummer ist nun ', regin, CR)
  DELAY 2000

  WRITE (CHR(cc_clear_win))
  WRITE (' Nummer fuer Freigabeeingang?', CR)
  WRITE (' (0=nicht benutzt)', CR)
  READ (regin)
  WRITE ('  Freigabeeingang ist nun ', regin, CR)
  DELAY 2000

  SET_INT_REG(regout, numout, status)
  SET_INT_REG(regin, numin, status)
  SET_INT_REG(regon, numon, status)
  SET_INT_REG(regoff, numoff, status)

  WRITE ('  Register gesetzt', CR)
  WRITE ('  Register koennen jederzeit ', CR)
  WRITE ('  per TP geaendert werden ', CR)
  DELAY 2000

END setup

--===================================================================
--*******************************************************************
-- Hauptprogramm
--*******************************************************************

BEGIN
  IF UNINIT(regon) THEN
    setup
  ENDIF
--      TPOUT[7] = TRUE --zeigt mit der TP-Led an, daß das Prg läuft
  REPEAT
    GET_REG(numon, real_flag, regon, real_value, status)
    GET_REG(numoff, real_flag, regoff, real_value, status)
    GET_REG(numout, real_flag, regout, real_value, status)
    GET_REG(numin, real_flag, regin, real_value, status)
    IF (TPIN[249] = TRUE) AND (numon = 0) THEN
      copyright
      WRITE (CHR(cc_clear_win))
      WRITE (' Konfiguration mit Taste ENTER', CR)
      WRITE (' Ende mit Taste RESET', CR)
      WAIT FOR (TPIN[153] = ON) OR (TPIN[13] = ON)
      IF TPIN[13] = TRUE THEN
        setup
      ENDIF
      IF TPIN[153] = TRUE THEN
        ABORT
      ENDIF
    ENDIF
    IF numin > 0 THEN
      IF (DIN[numin] = TRUE) THEN
        DOUT[numout] = TRUE
--      TPOUT[8] = TRUE  -- visualisiert den Takt
        DELAY numon
        DOUT[numout] = FALSE
--      TPOUT[8] = FALSE
        DELAY numoff
      ENDIF
      ELSE
        DOUT[numout] = TRUE
--      TPOUT[8] = TRUE
        DELAY numon
        DOUT[numout] = FALSE
--      TPOUT[8] = FALSE
        DELAY numoff
    ENDIF

  UNTIL numon = 0
--      TPOUT[7] = FALSE
END takter
226 Zeilen (140 ohne Kommentare) 4106 Byte ausführbarar Karel PC-Code


Zipfile mit PC-Code anbei

Keine Garantie auf Funktion, Nutzen, Lauffähigkeit oder was auch immer!

Das PC-File auf den Robbi laden und starten
(ggf. vorher $karel_enb auf 1 setzen)

Beim Ersten Start fragt das Programm nach Registernummern , Ein und Ausgängen und Zeiten

Merk Dir diese Nummern, Register und Ausgänge werden hier NICHT automatisch beschriftet (Kann gerne jemand anders implementieren)

Register werden zwingend 4 Stück benötigt
Eins mit der Nummer des Blinkausgangs, eins mit dem Freigabeeingang, eins mit der Impulszeit (in Millisekunden) und eins mit der Pausenzeit (wieder in ms)
Die Zeiten sind immer auf 8 ms genau (Siehe Handbuch)

Wenn kein Freigabeeingang gebraucht wird MUSS das Register trotzdem verwandt werden. Wenn da aber dann eine 0 drin ist, wird der Eingang nicht abgefragt.

Nach dem Ersten Abfragen der Daten läuft das Programm bis zum "Abort All" oder zum Neustart oder bis die Impulszeit auf 0 gesetzt wird...

Gestartet kann es werden durch einen TP-Aufruf (bei neueren Geräten mit "run" bei älteren mit einem bedingten "call" (die Bedingung ist dann der Inhalt des Impulszeitregisters)
Ebenfalls gestartet wird durch Konfigurieren

Konfigurieren (Initialisieren/Neustart)
Ein Start mit eingeschaltetem TP UND Impulszeitregister enthält "0" führt zum einer Abfrage, ob Du konfigurieren oder beenden willst. Es kann dadurch immer eine Konfiguration ausgelöst werden.

Löschen:
Wenn $karel_enb = 1 kann man Karel-Programme im TP sehen.
takter.pc löschen.
Danach erscheint eine Variablenliste (takter.vr heißt die glaub ich)
ebenfalls löschen (sollte möglich sein, auch wenn die Variablen z.T. im CMOS liegen)
Nu isses weg... ;)
 
Wenn der Takter läuft, ist die "BUSY"-Lampe am TP "Ein".
Das kann geändert werden. Außerdem kann eine der übrigen TP-Leds den Takter visualisieren. Also einfach sagen was....

NOCHMAL: Keine Garantie, Verwendung auf eigenes Risiko!

« Letzte Änderung: 11. Februar 2007, 11:00:50 von WolfHenk »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wolfram (Cat) Henkel

never forget Asimov's Laws at the programming of robots...

"Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."

https://www.xing.com/go/invite/5634410.eb15e5

PMs und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet. Diese Fragen und die Antworten interessieren jeden hier im Forum.

Offline WolfHenk

  • WolfHenk eben.
  • Forum Legende LV 7
  • *
  • Beiträge: 2387
  • GIT d- s+:- a+ C++ UL+ P+ L+ E-- W++ !N !o !K w !O
    • WolfHenk.de
  • Bewertet: +29
Re: Ausgänge pulsen im TP
« am: 10. Februar 2007, 19:48:35 »

Ich kann Dir einiges davon zeigen.
Habe voraussichtlich kommende Woche Zeit. Frag mal meinen Boß danach.

Infos ggf. per PM
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wolfram (Cat) Henkel

never forget Asimov's Laws at the programming of robots...

"Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."

https://www.xing.com/go/invite/5634410.eb15e5

PMs und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet. Diese Fragen und die Antworten interessieren jeden hier im Forum.

Offline heini0707

  • Forum Elite LV 6
  • *
  • Beiträge: 346
  • Bewertet: +1
Re: Ausgänge pulsen im TP
« am: 11. Februar 2007, 18:09:39 »
Hallo an alle,

WolfHenk, laut dir:
Zitat
Gestartet kann es werden durch einen TP-Aufruf (bei neueren Geräten mit "run" bei älteren mit einem bedingten "call" (die Bedingung ist dann der Inhalt des Impulszeitregisters)
Ebenfalls gestartet wird durch Konfigurieren
soll er den Aufruff mit RUN ausführen.
Meine erste Frage, wenn du kein Multitasking hast, kannst du dann den Befehl trotzdem irgendwie ausführen?
Ich hab auf meinem jetzigen RJ3iB geschaut ich hab nur CALL zu Verfügung.

Das mit CALL hab ich auch irgend wie nicht verstanden, ist es auch nicht so bei KAREL wie ein UP-Aufruff, so dass erst das UP durchgerattert wird und dann erst zurück gesprungen wird, und bei DELAY auch die Haupttask stehen wird?
Wird da etwa extra Task aufgemacht  :kopfkratz:

Versteht ihr mich nicht falsch, möchte nicht angeben, oder so, ich raf das wirklich nicht  :(

MfG heini
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline WolfHenk

  • WolfHenk eben.
  • Forum Legende LV 7
  • *
  • Beiträge: 2387
  • GIT d- s+:- a+ C++ UL+ P+ L+ E-- W++ !N !o !K w !O
    • WolfHenk.de
  • Bewertet: +29
Re: Ausgänge pulsen im TP
« am: 11. Februar 2007, 20:59:38 »
hmm...

call... Guter Einwand. Wäre zu prüfen.

Also müßte noch eine Startmichselbst-Einrichtung dazu.

Starte es einfach mal als makro

[edit] Multi-task (Run) ist die Option A05B-2400-J600. Sie liegt im TP unter 14. Multiple Control versteckt (Da wo auch SEMAPHORE und WAIT SEMAPHORE sind[/edit]
« Letzte Änderung: 13. Februar 2007, 08:44:55 von WolfHenk »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wolfram (Cat) Henkel

never forget Asimov's Laws at the programming of robots...

"Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."

https://www.xing.com/go/invite/5634410.eb15e5

PMs und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet. Diese Fragen und die Antworten interessieren jeden hier im Forum.

Offline ChrisFTR

  • Forum Mitglied LV 4
  • *
  • Beiträge: 41
  • Bewertet: 0
Re: Ausgänge pulsen im TP
« am: 14. Februar 2007, 12:37:07 »
Hallo,

das mit Karel war schon kein schlechter Tipp.

Aber warum nicht so:

TP Prog ruft mit 2 Parametern ein Karel Programm (ohne zugeordnete Bewegungsgruppe) auf.

z.B. CALL PULSEN(P1, P2)
P1 = Constant = Ausgang der gepulst werden soll (also 12 für DO[12])
P2 = Constant = Zeiger auf das Register, das die Pulsdauer in ms enthält (also z.B. 100 für Register R[100] in dem z.B. der Wert 200 für 0,2s steht)

Im Karelprogamm -> PULSEN.KL

1. Aufgabe
zwei Variablen definieren (z.B. ausgang & dauer beide vom Typ Integer) und mit Hilfe des zweiten Parameters (Zeiger auf R) den Wert mittels BUILT IN Routine GET_REG ermitteln.

Anmerkung: natürlich sind zur Ermittlung des Datentyps der übergebenen Parameter weitere Variablen erforderlich -> siehe Handbuch...

2.
Mit den ermittelten Parametern...
PULSE DOUT[ausgang] FOR dauer NOWAIT

3.
Programm übersetzen und auf die Steuerung laden.

4.
Flasche Bier öffnen...und genießen  :beerchug:

« Letzte Änderung: 14. Februar 2007, 20:13:44 von ChrisFTR »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline WolfHenk

  • WolfHenk eben.
  • Forum Legende LV 7
  • *
  • Beiträge: 2387
  • GIT d- s+:- a+ C++ UL+ P+ L+ E-- W++ !N !o !K w !O
    • WolfHenk.de
  • Bewertet: +29
Re: Ausgänge pulsen im TP
« am: 19. Februar 2007, 09:17:07 »
jo.
Das wäre die "Light-Version" gewesen.

Ich wollte aber die Luxusvariante liefern (mein vierter Beitrag)

  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wolfram (Cat) Henkel

never forget Asimov's Laws at the programming of robots...

"Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."

https://www.xing.com/go/invite/5634410.eb15e5

PMs und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet. Diese Fragen und die Antworten interessieren jeden hier im Forum.


xx
Profibus mehr als 256 Ein- bzw. Ausgänge

Begonnen von Bernhard

18 Antworten
2730 Aufrufe
Letzter Beitrag 20. Dezember 2010, 13:12:25
von heini0707
xx
Roboterein- und Ausgänge Unsimuliert betreiben

Begonnen von Fanucmann

2 Antworten
774 Aufrufe
Letzter Beitrag 01. Oktober 2013, 16:01:10
von hermo
 

über das Roboterforum

Nutzungsbedingungen Impressum
Sitemap