Anfägerproblem: Merker

Programmierung und Software in Steuerungen

Programmierung und Software in Steuerungen

Moderator: Moderatorengruppe

Anfägerproblem: Merker

Neuer Beitragvon norfu am Samstag 5. November 2005, 13:37

Hallo,
ich habe eine projektarbeit in robotoik aufs auge gedrückt bekommen und muss mich deshalb siemens step 7 auseinandersetzen. soweit klappt eigentlich auch alles ganz gut, ich stehe allerdings auf kriegsfuß mit den merkern.
in keinem buch ist das eigentlich hinreichend erklärt meiner meinung nach...naja wie dem auch sei, vielleicht kann mir ja jemand meine fragen beantworten.

1. muss ich einen merker deklarieren? meiner ansicht nach nicht, ich kann ihn einfach benutzen, mir eine (nicht belegte) adresse aussuchen und loslegen

2. muss ich den merker initialisieren? also sollte ich den zuerst irgendwo setzen bevor ich ihn abfrage? wie ist sein anfangswert?

3. natürlich habe ich schon viel rumprobiert...dabei habe ich den eindruck, merker sind einwegware :D
wenn ich einen merker gerade eingebaut habe, läuft mein programm astrein. benutze ich ihn ein 2. mal, funktioniert wieder nichts, ohne das ich was im programm geändert habe und obwohl ich ihn ggf. zurücksgesetzt/gesetzt habe.

4. ich weiss das es remanente und nichtremanente merker gibt...woher weiss ich was mein merker ist?

ich benutze mehrere unterlagen von siemens und hauptsächlich das buch "sps-grundkursmit simatic s7" von j. kraftan.

ich bin für jeden hinweis/antwort sehr dankbar!

mfg
norman
norfu
Threadstarter
15691
 
Beiträge: 4
Registriert: Samstag 5. November 2005, 13:02

Re: Anfägerproblem: Merker

Neuer Beitragvon drunkenmunky am Sonntag 6. November 2005, 09:03

1. "deklarieren" ? wenn dann vielleicht definieren in der symboltabelle. da kannst du den merkern namen zuweisen. musst du aber nicht.

2. wenn es einen sinn haben soll, muss du ihn halt irgendwo im programm setzen und kannst ihn für andere funktionen abfragen.

3. dir ist schon klar wie man merker benennt? am besten du fängst mit M 0.0 an bis M 0.7 usw.
du darfst aber nicht den gleichen merker zweimal irgendwo als "ausgang" verwenden.
zum abragen am "eingang" kannst du ihn beliebig oft verwenden.

4. müsst ich auch erst mal nachlesen. aber normalerweise programmierst du nicht remanente merker, wenn du es nirgends einstellt.


Alles in allem kann man sagen, dass merker praktisch wie ausgänge sind, die nur nicht nach aussen verdrahtet sind. Sie verhalten sich gleich.

wie meinst du des eigentlich "funktioniert nichts" ? es geht nicht zum übertragen oder des programm läuft nicht so wie du willst?
drunkenmunky
15709
Gold Mitglied
 
Beiträge: 391
Registriert: Dienstag 15. März 2005, 17:15
Wohnort: Singen
Postleitzahl: 78224
Land: Germany / Deutschland

Neuer Beitragvon norfu am Sonntag 6. November 2005, 12:36

hi,
erstmal vielen dank.
ich erklär das problem das ich bei 3. erläutert hab nochmal, das ist nämlich eigentlich der kern der sache.

Vereinfacht soll mein programm ein laufband bewegen. das ganze hat links und rechts einen sensor, habe das ganze in try sim nachgebaut und sähe dann so aus:

hab jetzt hie rmal eine der 1. testversionen rausgesucht, wo das problem auftritt. sobald man startet, soll das band zum rechten sensor fahren. da angekommen soll es anhalten und zum linken sensor fahren. achja, ausgangsposition ist mitten auf dem band.

netzwerk1: Rechtslauf
S A 0.0 //Rechtslauf wird ausgelöst
U E 64.3 //Sensor rechts
R A 0.0 //laufband hält an
S M 0.1

netzwerk2 : linkslauf

U E 64.3 //Sensor rechts
U M 0.1 //
S A 0.1 //Linkslauf wird ausgelöst
U E 64.0 //Sensor links
R A 0.1 //band hält an

das ganze funktioniert auch, aber halt nur einmal. soll heissen: ich starte das programm und es fährt wie oben beschrieben. ich drücke stop, lade es so wie es ist erneut hoch und schiebe den schlitten wieder mitten rein und starte es und NICHTS passiert. und ich hab einfach keine ahnung warum. ich weiss man könnte den ganzen scheiss auch ohne merker machen, aber ich brauch ihn halt aus anderen gründen, ist ja nur vereinfacht, mein problem.

also, wär super wenn da jemand ne antwort parat hätte!

schönen sonntag

gruß
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
norfu
Threadstarter
15721
 
Beiträge: 4
Registriert: Samstag 5. November 2005, 13:02

Neuer Beitragvon Jörg am Montag 7. November 2005, 10:15

Der Merker 0.1 bleibt ja weiterhin in deiner Steuerung gesetzt. Wenn du ihn mit E 64.0 (Sensor Links) auch wieder zurücksetzt, dann ist der Merker auch wieder 0.

Ansonsten ist der Ablauf derart, dass du beim Neustart des Programmes ja den Linkslauf angewählt hättest (der Merker ist halt noch 1), dieser startet aber nur, wenn du die rechte Lichtschranke bedämpfst.

Sieh es dir am besten mal in FUP online an, denn ich finde, da kann man immer schön sehen, was gerade los ist und wo es hakt.

Remanente/nicht remanente Merker: Wenn die Hardware konfiguriert wird gibt es eine "Karteikarte" oder wie man das nennen soll, auf der man zuweisen kann, welche Merker remanent sind. Remanent heißt dabei, dass sie bei einem Spannungsausfall erhalten bleiben. Es kann bei kurzen Zeitspannen aber sein, dass andere Merker auch noch vorhanden sind. Deswegen gern so´ne Minute mal warten vor dem Wiedereinschalten.

Wenn du ganz sicher gehen willst, dann schreib in den Startbaustein halt deine Merker rein, die du löschen willst. Der wird ja nur beim Anlauf durchlaufen, daher kein Prob im Automatikbetrieb. Einfach mit R M0.0 als Beispiel oder gleich das ganze Wort rücksetzen.

Hoffe dir geholfen zu haben. :wink:
CU
Jörg
Jörg
15784
Bronze Mitglied
 
Beiträge: 75
Registriert: Donnerstag 27. Oktober 2005, 09:01
Wohnort: Mölln

Neuer Beitragvon norfu am Montag 7. November 2005, 18:44

hi und danke erstmal. okay, das ich den merker nicht zurückgesetzt habe, is mir nun klar. aber was ich nicht ganz verstehe, in dem moment, wo ich das programm starte, sollte doch auf jeden fall der rechtslauf starten, da mein 1. befehl im 1. netzwerk s a 0.0 lautet, also rechtslauf. wieso macht er das nicht???

auch nachdem ich die zeile mit dem merker ans ende des 2. netzwerk gesetzt habe, ändert sich nichts, da sband bewegt sich nicht.

finde nichts zu nerm service oder programm namens fup online bei google, könntest du mir den link geben? danke.

gruß
norfu
Threadstarter
15826
 
Beiträge: 4
Registriert: Samstag 5. November 2005, 13:02

Neuer Beitragvon drunkenmunky am Montag 7. November 2005, 19:07

du musst den ausgang mit irgendetwas setzen z. B. mit nem merker oder nem eingang.

U E 0.1
S A 0.0

fup ist kein programm.. bei S7 gibt es drei Programmierarten: AWL, FUP und KOP. du machst grad AWL.

Unter ANSICHT kannst du umschalten. weiss nicht genau wies bei trysim ist...

ich denke FUP ist für Anfänger besser geeignet.
drunkenmunky
15832
Gold Mitglied
 
Beiträge: 391
Registriert: Dienstag 15. März 2005, 17:15
Wohnort: Singen
Postleitzahl: 78224
Land: Germany / Deutschland

Neuer Beitragvon Jörg am Dienstag 8. November 2005, 07:21

Wurd zwar schon gesagt, aber noch mal in Langform:
- Darstellungsartart: AWL = Anweisungsliste
- Darstellungsartart: FUP = Funktionsplan
- Darstellungsartart: KOP = Kontaktplan

auf den ersten Start des Bandes hatte ich gar nicht so geachtet. hatte den Merker im Blick. :oops:
Stimmt aber. entweder startest dein Band durch einen Eingang oder aber, du setzt den Ausgang so:

SET //lädt den Akku mit 1
S A0.0 //setzt den Ausgang 0.0, wenn der Akku 1 ist, sonst passiert nix

Denk aber dran, dass dein Programmablauf immer wieder von vorn beginnt. Das Programm wird ja zyklisch abgearbeitet. Daher ist ein zwangsweises Setzen des Ausgangs nicht gut, da der Ausgang dann immer gesetzt wird. Nimm lieber einen Eingang zum Starten, mit dem du den ganzen Prozess "anschubst"

So wie du das Programm angefangen hast, ist es ein zyklisches Programm. Wenn du eine Schrittkette machen willst, dann musst du ein wenig anders vorgehen. Denke aber, dass hier der zyklische Ablauf besser ist, denn, wenn du das Paket an die rechte Lichtschranke legst und startest, soll ja gleich links gelaufen werden, da das Paket sonst gleich runter fällt. ;-)
CU
Jörg
Jörg
15853
Bronze Mitglied
 
Beiträge: 75
Registriert: Donnerstag 27. Oktober 2005, 09:01
Wohnort: Mölln

Neuer Beitragvon norfu am Dienstag 8. November 2005, 16:26

das mit dem FUP online war wohl ein missverständnis, ich weiss was awl fup und kop sind, nur hat jörg gesagt, schau es dir mal in "FUP online" an, hab das für n programm gehalten, nicht für den zustand meines ablaufs in FUP... :oops:

auf jeden fall mal wieder danke. wusste nicht das ich n eingang zum setzen brauche. werde es dann wohl mit einem merker am anfang probieren, wo wir ja wieder bei meinem steckenpferd wären...ich geb auf jeden fall alles und meld mich beim nächsten problem wieder :D

gruß!
norfu
Threadstarter
15861
 
Beiträge: 4
Registriert: Samstag 5. November 2005, 13:02

Neuer Beitragvon Borg am Dienstag 8. November 2005, 17:37

Mach dir doch einfach mal ein Ablaufdiagramm, in das du einträgst wie deine Anlage überhaupt funktionieren soll.
Dann deklarierst du in der Symbolik deine Ein und Ausgänge.
Wenn du Merker benutzt solltest du auch hier auf die Symbolik achten.
Bei größeren Sachen wird es sonst ganz schnell unübersichtlich.
Und wenn mal ein anderer nach dem Programm schauen muß findet er sich schneller zurecht.
Borg
......................................................................
....Die Wahrheit ist irgendwo da draussen....
Benutzeravatar
Borg
15866
Gold Mitglied
 
Beiträge: 347
Registriert: Montag 8. März 2004, 18:42
Wohnort: Hessen

Neuer Beitragvon brossi_lgs am Donnerstag 10. November 2005, 07:35

Morgen,

zu dem Problem mit der Initialisierung. Mache dir z.B. einen Startmerker. Soll heissen, der Überprüft, ob du die Anlage gerade eingeschaltet hast oder sie schon am laufen ist.

UN M 100.0
S M 100.0

U M 100.0
UN A0.1
S A 0.0

Wenn du die SPS einschaltest, ist ja kein Merker gesetzt, so auch nicht der Merker 100.0. Dieser nichtgesetzte MErker setzt sich dann selbst. Somit ist gewährleistet, das die Anlage weiss, OK, ich bin gerade eingeschaltet worden. Jetzt wird überprüft, ob der MErker 100.0 gesetzt ist und der Linkslauf ausgeschaltet ist. Wenn ja, dann wird der Rechtslauf gestartet. So sollte dein Problem eingentlich laufen.

Gruß
Andreas
brossi_lgs
15914
Junior Mitglied
 
Beiträge: 12
Registriert: Mittwoch 26. Oktober 2005, 06:42
Wohnort: Langenselbold

Neuer Beitragvon Borg am Donnerstag 10. November 2005, 10:12

Wobei du deine Anlage durch einen Schalter oder Taster starten und stoppen solltest.
Und nicht durch einfaches Ein- und Ausschalten der SPS.
Nach dem Einschalten kannst du dich für eine Drehrichtung entscheiden. Ob nach rechts oder links ist von deinem Geschmack bzw. Vorgaben abhängig.
zB.:
U e 0.0 //Start
UN e 0.2 // Einheit rechts
S A 0.0 //Rechtslauf

U e 0.2 // Einheit rechts
R a 0.0 // Rechtslauf

Um auf deine ursprüngliche Frage zurück zu kommen. Merker sind Einwegware. Zumindest was das Setzen angeht.
Abfragen kann man ihn ja öfter.
Du solltest darauf achten für jeden Merker nur einen Setz (bzw. =) Befehl zu verwenden.
Borg
......................................................................
....Die Wahrheit ist irgendwo da draussen....
Benutzeravatar
Borg
15918
Gold Mitglied
 
Beiträge: 347
Registriert: Montag 8. März 2004, 18:42
Wohnort: Hessen

Neuer Beitragvon Warhead1978 am Dienstag 29. November 2005, 19:14

Ein Startschalter ist leider nicht vorhanden. Und da das Semseter schon fast am Ende ist, soll das Programm einfach nur laufen und zwar richtig laufen.

Die Merker, die für das Programm verwendet werden setzen sich nicht von alleine zurück, wenn das programm im Ablauf auf "stop" geschaltet wird. Sie sollen es aber, sonst fängt das Programm nicht wieder von alleine an.

Zu beginn des Programms soll ein Schlitten zur Anfangsposition fahren, wenn er nicht schon an der Anfangsposition ist. Hierfür wird ein Merker verwendet, nach dem Schema:
UN sensor 4 <--an sensor 4 ist die Anfangsposition
UN M 0.1 <--Dieser Merker soll zu Beginn immer 0 sein, wenn man auf "Run" schaltet
S Motor <---Schlitten fährt Richtung Sensor 4

Im nächsten Schritt an Sensor 4 angekommen:
U Sensor 4 <---Anfangsposition
R Motor <--- Motor ausgeschaltet, also ein Stop ;)
S M 0.1 <--Jetzt wird der Merker gesetzt, damit der im Programm zuvor abgelaufene Schritt, der nur einmalig ist für die Initialisierung in Zukunft übersprungen wird.


Klartext..Der erste Schritt passiert halt nur, wenn der Schlitten nicht an Sensor 4 ist. Deswegen wird der Merker an Sensor 4 gesetzt. Wenn man jedoch das programm mittel "Stop" anhält ist der beim nächsten "Run" immernoch gesetzt und somit bewegt sich der Schlitten nicht.
Ergo: der Merker soll sich zurücksetzen, wenn "stop" geschaltet wird.
Kann einer helfen?
Warhead1978
16379
 
Beiträge: 2
Registriert: Dienstag 29. November 2005, 19:02

Neuer Beitragvon Warhead1978 am Dienstag 29. November 2005, 19:32

Folgende Info gefunden:
Remanenzbereiche werden durch parametrieren der CPU im Tool S7 Configuration gelegt.
Warhead1978
16380
 
Beiträge: 2
Registriert: Dienstag 29. November 2005, 19:02

Neuer Beitragvon Borg am Mittwoch 30. November 2005, 18:16

Du musst in der Hardwarekonfiguration deiner Steuerung den Remanenzbereich der Merker einstellen.

Damit kannst du genau festlegen welche Merker bei Stop ihren Wert behalten (remanent) und welche wieder auf 0 zurückgesetzt werden.
Borg
......................................................................
....Die Wahrheit ist irgendwo da draussen....
Benutzeravatar
Borg
16415
Gold Mitglied
 
Beiträge: 347
Registriert: Montag 8. März 2004, 18:42
Wohnort: Hessen

STAT

Neuer Beitragvon jungprogramierer am Dienstag 30. Mai 2006, 10:40

man nutz eigentlich keine merkermehr

Du solltest,wie in DIN61131-1 festgelegt STATische Lokalvariablen nehmen.
DIese kannst du im Bautein deklrieren. sie sind vomDT BOOL und ihren anfangswert kannst du selbst bestimmen.

Gruß Tobi
jungprogramierer
20073
 
Beiträge: 9
Registriert: Montag 29. Mai 2006, 09:31

Nächste

Zurück zu SPS

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste