# SPS S7 für Dummies



## Berndq (15 März 2007)

hallo Leute,

ich bin jetzt seit geraumer zeit schon am verzweifeln, da ich in die mysthische-vereinigung-der-SPS-S7(300-400)-versteher doch endlich mal beiwohnen möchte....
ich sitze jetzt vor ner aufgabe, die mir unlösbar scheint, doch es fehlt mir noch ein kleiner schritt...hier die aufgabe und dann meine lösungs-ansatz:
solange der taster gedrückt ist, sollen 5 lampen nacheinander aufleuchten. immer von vorne, bis der taster wieder losgelassen wird. dann muß dort wo zuletzt die lampe geleuchtet, die lampe blinken, bis der taster wieder betätigt wird.
tjoahrrrrr, nun mein ansatz:
L 0 //Lade 0
L MB 0 //Lade MerkerByte 0
==I //Vergleich auf gleich (Integer) 0
U E 0.0 //Start Taster 1
SPBN n001 //Springe bedingt NICHT auf N001
L 1 //Lade 1
T MB 0 //Transferiere MerkerByte 0
n001 :NOP 0 //Nulloperation
U E 0.0 //UND der Eingang 0.0
UN T 2 //UND NICHT der Timer 2
L S5T#100MS //Lade die Zeit von 100 Millisekunden
SE T 1 //Starte als Einschaltverzögerung Timer 1
U T 1 //UND Timer 1
U E 0.0 //UND Eingang 0.0
L S5T#100MS //Lade die Zeit von 100 Millisekunden
SE T 2 //Starte als Einschaltverzögerung Timer 2
U E 0.0 //UND Eingang 0.0
U T 1 //UNDTimer 1
FP M 10.0 //Flanke Positiv Merker 10.0
SPBN n002 //Springe Bedingt NICHT auf n002
L MB 0 //Lade MerkerByte 0
SLW 1 //Schiebe Links Wort
T MB 0 //Timer MerkerByte 0
n002 :NOP 0 //Nulloperation
L MB 0 //Lade MerkerByte 0
L 31 //Lade die Binärzahl 31 (damit das Licht nicht weiterrennt)
>I //INT Vergleich auf größer (-->auf die 31 bezogen)
SPBN n003 //Springe Bedingt NICHT auf n003
L 0 //Lade 0
T MB 0 //Transferiere MerkerByte 0
n003 :NOP 0 // Nulloperation
L MB 0 //Lade MerkerByte 0
T AB 0 //Transferiere AusgangsByte 0
blöd nur, dass dich die zeilen verrutschen....jedenfalls wäre es super, wenn sich jemand erbarmen könnt, mir da weiterzuhelfen. mfg, bernd


----------



## kpeter (15 März 2007)

Berndq schrieb:


> hallo Leute,
> 
> ich bin jetzt seit geraumer zeit schon am verzweifeln, da ich in die mysthische-vereinigung-der-SPS-S7(300-400)-versteher doch endlich mal beiwohnen möchte....
> ich sitze jetzt vor ner aufgabe, die mir unlösbar scheint, doch es fehlt mir noch ein kleiner schritt...hier die aufgabe und dann meine lösungs-ansatz:
> ...


hallöchen

wie wärs wennn du uns sagen würdest wo dein problem liegt

und uns nicht nur denn code vorwirfst und sagst frisst und löst mir meine probleme

sag gezielt was nicht geht und dir wird geholfen


----------



## Berndq (15 März 2007)

*SPS für Dummies*

yes, da hast Du ganz recht, mein problem liegt darin, eben jenen blinker einzubauen, der eben dann einsetzt, wenn der taster losgelassen wird. und dies betrifft dann eben eines der fünf lämpchen, die den ausgang markieren. hab das programm eben so weit bekommen, dass zumindest das lauflicht aussetzt, wenn der taster nicht mehr gedrückt wird. jetzt muss das letzte licht halt noch blinken....naja, bin ja noch in der lernphase...doch ich bin grad schon seit über ner woche an dem ding dran...


----------



## zotos (15 März 2007)

Ich finde Die Lösung zwar nicht schön aber vom Ansatz her könnte man wenn der Taster nicht betätigt ist mit einem Taktmeker abwechselnd NULL auf Aufsausgangsbyte transferieren und im anderen Zyklus des Taktes eben das Merkerbyte.


----------



## kpeter (15 März 2007)

Berndq schrieb:


> yes, da hast Du ganz recht, mein problem liegt darin, eben jenen blinker einzubauen, der eben dann einsetzt, wenn der taster losgelassen wird. und dies betrifft dann eben eines der fünf lämpchen, die den ausgang markieren. hab das programm eben so weit bekommen, dass zumindest das lauflicht aussetzt, wenn der taster nicht mehr gedrückt wird. jetzt muss das letzte licht halt noch blinken....naja, bin ja noch in der lernphase...doch ich bin grad schon seit über ner woche an dem ding dran...


 
schreib das mal am schluss deines codes dran dann sollte es gehen
Wenn der Taster nicht gedrückt ist und der taktmerker da ist wird 0 auf deine ausgänge gegeben und ansonsten das was du vorher drauf hast


```
un e0.0
u taktmerker ( z.b.
spb m000 
spa m001
m000:L 0
t ab0
m001:nop 0
```


----------



## kpeter (15 März 2007)

zotos schrieb:


> Ich finde Die Lösung zwar nicht schön aber vom Ansatz her könnte man wenn der Taster nicht betätigt ist mit einem Taktmeker abwechselnd NULL auf Aufsausgangsbyte transferieren und im anderen Zyklus des Taktes eben das Merkerbyte.


 
Das ist unfair ich war erster nur das telephon hat geläutet


----------



## Berndq (15 März 2007)

*Sps S7*

dankeschön. ich hab mal sowas drangebastelt:
UN E 0.0
U M 10.1
SPB m000
SPA m001
m000 :L 0
T AB 0
m001 :NOP 0
aber irgendwie hab ich dich trotzdem falsch verstanden locke. und du, könig von flandern, ich bin verdammt neu in der szene, wie auch immer. hab dich erst recht nicht verstanden...sorry
vielelicht etwas langsamer zum mitdenken...


----------



## zotos (15 März 2007)

kpeter schrieb:


> Das ist unfair ich war erster nur das telephon hat geläutet



Hat mein Ablenkungsmanöver also geklappt ;o)


----------



## kpeter (15 März 2007)

Berndq schrieb:


> dankeschön. ich hab mal sowas drangebastelt:
> UN E 0.0
> U M 10.1
> SPB m000
> ...


 
hats denn geklappt oder nicht

was verstehst du nicht falls es geklappt hat


----------



## zotos (15 März 2007)

Berndq schrieb:


> dankeschön. ich hab mal sowas drangebastelt:
> UN E 0.0
> U M 10.1
> SPB m000
> ...





```
//Code von kpeter

Dein alter Code transferiert das MerkerByte ja schon aufs AusgangsByte

un e0.0 //Taster nicht 
u taktmerker //und  Taktmerker 
spb m000 
spa m001
m000:L 0  //Überschreibe AusgangsByte mit Nullen
t ab0
m001:nop 0 //AusgangsByte nicht überschreiben.
```


----------



## Berndq (15 März 2007)

kpeter schrieb:


> hats denn geklappt oder nicht
> 
> was verstehst du nicht falls es geklappt hat


 

nun, es hat halt nicht geklappt. die software win SPS S7 kennt evtl. nicht das wort taktmerker. vielelicht muss ich ja das anders umschreiben...


----------



## Berndq (15 März 2007)

*SPS für schwachstrom asthmatiker*

ich brenn bald durch...keine ahnung, was ich da schon wieder falsch gemacht hab. ich hab ja (Danke euch beiden) grad das so eingesetzt, wie der könig vorgeschlagen hat, nur jetzt geht nichtmal ein licht an. als es passiert nüscht. kann ich überhaupt das wort so reinschreiben, ohne dass es der sps stört? taktmerker klingt schon komisch. also ich hab ja kein problem mit diesen symbolen für die operanden, nur einfach so ein wort einsetzen, besonders eines, das ich bisher nie verwendet hab...
grüße aus dem ländle
bernd


----------



## OHGN (15 März 2007)

Berndq schrieb:


> die software win SPS S7 kennt evtl. nicht das wort taktmerker. vielelicht muss ich ja das anders umschreiben...


*Keine* SPS kennt das Wort Taktmerker, es sei denn Du nennst die absolute
Adresse Deines Taktmerkers in der Symboltabelle so!


----------



## Berndq (15 März 2007)

so, lieber zotos, dan

 erstmal für die übersetzung von peter. und ich hab jetzt erstmal die zeile mit dem taktmerker gelöscht. jetzt läuft die schose an, doch wenn ich jetzt vom tastergeh, dann geht das licht auch aus...wiebittebekomm ich denn ein kürzel für den taktmerker??


----------



## kpeter (15 März 2007)

Berndq schrieb:


> ich brenn bald durch...keine ahnung, was ich da schon wieder falsch gemacht hab. ich hab ja (Danke euch beiden) grad das so eingesetzt, wie der könig vorgeschlagen hat, nur jetzt geht nichtmal ein licht an. als es passiert nüscht. kann ich überhaupt das wort so reinschreiben, ohne dass es der sps stört? taktmerker klingt schon komisch. also ich hab ja kein problem mit diesen symbolen für die operanden, nur einfach so ein wort einsetzen, besonders eines, das ich bisher nie verwendet hab...
> grüße aus dem ländle
> bernd


 
also bitte wo hast du dein taktmerkerbyte angelegt das nimmst du her

wenn du standart mb 100 hast dann nimm bitte z.b m100.4 

da ich nicht weis wo deins angelegt ist hab ich halt nur eine allgemeine umschreibung dafür genommen


----------



## Berndq (15 März 2007)

nun, ich hba die aufgabe seit übber ner woche vor mir liegen, ich weiss nimmer was das taktmerkerbyte is. so wie ich die aufgabe zuerst geschcikt hab, ist die auch in meinem programm drinne. nund hab ich gerade noch zweimal versucht, die merker zu ändern, immer hin geht jetzt das lich t enigstens aus und wenn ich den taster wieder drück, läuft das slicht da weiter, wo es zuletzt war.
mfg, bernd(grad am nervenstrang ziehend)


----------



## MatMer (15 März 2007)

das Taktmerkerbyte stellst du in der Hardware Config der S7 ein, meins liegt z.B auf MB13
wenn du da mal guckst unter Eigenschaften der CPU kannst du es sehen oder neu einstellen und dann hast du das Taktmerkerbyte, anschließend die Daten in die CPU laden....


----------



## OHGN (15 März 2007)

guckst Du hier...


----------



## Berndq (15 März 2007)

moin met,

nun, es handelt sich um eine übungssoftware. und ich bin ziemlicher frischling in dem gebiet. inzwischen hab ich von ohgn (weiss ja nicht was die abkürzung bedeutet). auch eine tolle antwort bekommen, wo er nen screenshot auf die eigenschaften der cpu gemacht hat. jetzt such ich mal die eigenschaften in der menüauswahl. 
vielen herzlichen dank erstmal euch allen!!


----------



## Berndq (15 März 2007)

sorry, mat...ich habs halt immer noch nicht.
ich komm noch immer nicht hintr das geheimnis...es handelt sich nur um eine virtuellegeschichte. also kann doch garkeine hardware eigenschaft angezeigt werden? oder is das wie ein spiel anzusehn, dass es sowas trotzdem gibt. nur bin ich bis jetzt nurauf die eigenschaften eines bausteins gestoßen. die aber nur den ezitstempel code,
die zeitstempel schnittstelle,
anzahl der netzwerke, lokaldaten, bausteingröße RAM, ladespeicher und ram anzeigen. zudem noch author, family, name, version. kann da nix erkennen, von wegen eigenschaften der cpu...
naja vielleicht gibt´s ja doch was...
mfg, total hirnverbrannt, bernd


----------



## zotos (15 März 2007)

Dann bauen Wir eben einen Takt mit zwei Timern:

Nimm zwei Frei Timer und anstelle des Taktmerkers schreibst Du in den anderen Code den ersten von den Timern.


```
UN T2 
L #S5T500ms
SE T1

U T1
L #S5T500ms
SE T2
```


----------



## kpeter (15 März 2007)

Berndq schrieb:


> sorry, mat...ich habs halt immer noch nicht.
> ich komm noch immer nicht hintr das geheimnis...es handelt sich nur um eine virtuellegeschichte. also kann doch garkeine hardware eigenschaft angezeigt werden? oder is das wie ein spiel anzusehn, dass es sowas trotzdem gibt. nur bin ich bis jetzt nurauf die eigenschaften eines bausteins gestoßen. die aber nur den ezitstempel code,
> die zeitstempel schnittstelle,
> anzahl der netzwerke, lokaldaten, bausteingröße RAM, ladespeicher und ram anzeigen. zudem noch author, family, name, version. kann da nix erkennen, von wegen eigenschaften der cpu...
> ...


 
so ganz langsam

du bist im simatic manager nicht das wir von trysim sprechen

wenn simatic manager 

dann solltest du die hardware config kennen da gehst du rein

legst dir deine cpu an die du haben willst 
stellst deinen taktmerker ein wie oben beschreiben

und spielst das ganze in deinen simulator
nun solltest du denn taktmerker auf deinen mb zur verfügung haben 

alternativ dazu

un t2
l s5t#1s
se t1
u t 1
l s5t#1s
se t2
u t1
= m10.0 // jetzt hast du auf deinen m ein 1s blinklicht


----------



## kpeter (15 März 2007)

zotos schrieb:


> Dann bauen Wir eben einen Takt mit zwei Timern:
> 
> Nimm zwei Frei Timer und anstelle des Taktmerkers schreibst Du in den anderen Code den ersten von den Timern.


 
ZOTOSSSSSSSSSSSSSS
Was soll das heute    

lass mein telephon in ruhe


----------



## zotos (15 März 2007)

kpeter schrieb:


> ZOTOSSSSSSSSSSSSSS
> Was soll das heute
> 
> lass mein telephon in ruhe



Hmm.. also wer zwei mal auf den selben Trick reinfällt sollte sich nicht beschweren ;o)


----------



## kpeter (15 März 2007)

telphon mal aus denn fenster schmeis und sehen ob ich wenn treffe


----------



## Berndq (15 März 2007)

DANKE!!! 

erstmal Locke, dann noch dem König und mat...

jetzt klappt das. in meinem WinSPS-S7 V3.45 - Programm auch endlich. 

Bis zum nächstenmal!!

Bernd


----------



## Berndq (15 März 2007)

so, nun hab ich nen anschiss aber wegbekommen, das ist die ideallösung, nicht so ne schlampige, wie ich die abgeliefert hab.
 

//
UN T 2 //UND NICHT der Timer 2
L S5T#500MS //Lade die Zeit von 100 Millisekunden
SE T 1 //Starte als Einschaltverzögerung Timer 1
U T 1 //UND Timer 1
L S5T#500MS //Lade die Zeit von 100 Millisekunden
SE T 2
L 0 //Lade 0
L MB 0 //Lade MerkerByte 0
==I //Vergleich auf gleich (Integer) 0
U E 0.0 //Start Taster 1
SPBN n001 //Springe bedingt NICHT auf N001
L 1 //Lade 1
T MB 0 //Transferiere MerkerByte 0
n001 :NOP 0 //Nulloperation
U E 0.0 //UND Eingang 0.0
U T 1 //UNDTimer 1
FP M 10.0 //Flanke Positiv Merker 10.0
 
SPBN n002 //Springe Bedingt NICHT auf n002
L MB 0 //Lade MerkerByte 0
SLW 1 //Schiebe Links Wort
T MB 0 //Timer MerkerByte 0
n002 :NOP 0 //Nulloperation
L MB 0 //Lade MerkerByte 0
L 31 //Lade die Binärzahl 31 (damit das Licht nicht weiterrennt)
>I //INT Vergleich auf größer (-->auf die 31 bezogen)
SPBN n003 //Springe Bedingt NICHT auf n003
L 0 //Lade 0
T MB 0 //Transferiere MerkerByte 0
n003 :NOP 0 // Nulloperation
L MB 0 //Lade MerkerByte 0
UN E 0.0
U T 1
SPBN n004 //Sprund bei VKE="1" auf n004
L 0
n004 :NOP 0
T AB 0 //Transferiere Ausgangsbyte 0


----------



## zotos (15 März 2007)

zotos schrieb:


> Ich finde Die Lösung zwar nicht schön aber vom Ansatz her könnte man wenn der Taster nicht betätigt ist mit einem Taktmeker abwechselnd NULL auf Aufsausgangsbyte transferieren und im anderen Zyklus des Taktes eben das Merkerbyte.



Dem ist nichts hinzuzufügen.

Ausser das es keine Ideallösungen gibt.


----------



## Berndq (15 März 2007)

tjoa, danke trotzdem nochmals,...muss es halt irgendwie lernen....


----------



## Lobo (15 März 2007)

*mal eine vielleicht einfachere lösung*

BEGIN
NETWORK
TITLE =

      U     M      1.5; 
      U     E      0.1; 
      ZV    Z      1; 
      BLD   101; 
      NOP   0; 
      NOP   0; 
      U(    ; 
      L     MW   100; 
      L     5; 
      ==I   ; 
      )     ; 
      R     Z      1; 
      L     Z      1; 
      T     MW   100; 
      NOP   0; 
      NOP   0; 
NETWORK
TITLE =

      U(    ; 
      L     MW   100; 
      L     0; 
      ==I   ; 
      )     ; 
      U     E      0.1; 
      =     A      0.0; 
NETWORK
TITLE =

      U(    ; 
      L     MW   100; 
      L     1; 
      ==I   ; 
      )     ; 
      U     E      0.1; 
      =     A      0.1; 
NETWORK
TITLE =

      U(    ; 
      L     MW   100; 
      L     2; 
      ==I   ; 
      )     ; 
      U     E      0.1; 
      =     A      0.2; 
NETWORK
TITLE =

      U(    ; 
      L     MW   100; 
      L     3; 
      ==I   ; 
      )     ; 
      U     E      0.1; 
      =     A      0.3; 
NETWORK
TITLE =

      U(    ; 
      L     MW   100; 
      L     4; 
      ==I   ; 
      )     ; 
      U     E      0.1; 
      =     A      0.4; 
NETWORK
TITLE =

      UN    E      0.1; 
      L     MW   100; 
      L     0; 
      ==I   ; 
      U     M      1.5; 
      =     A      0.0; 

NETWORK
TITLE =

      UN    E      0.1; 
      L     MW   100; 
      L     1; 
      ==I   ; 
      U     M      1.5; 
      =     A      0.1; 

NETWORK
TITLE =

      UN    E      0.1; 
      L     MW   100; 
      L     2; 
      ==I   ; 
      U     M      1.5; 
      =     A      0.2; 

NETWORK
TITLE =

      UN    E      0.1; 
      L     MW   100; 
      L     3; 
      ==I   ; 
      U     M      1.5; 
      =     A      0.3; 

NETWORK
TITLE =

      UN    E      0.1; 
      L     MW   100; 
      L     4; 
      ==I   ; 
      U     M      1.5; 
      =     A      0.4;

Bin über jedes Feedback dankbar. Lobo.


----------



## Berndq (15 März 2007)

mensch lobo(das is doch n ungarischer wolf oder?),
keine ahnung, was du da hingeschrieben hast, aber ich hab jetzt mal dein geschriebenes bei mir rein gebastelt. nur mein WinSPS-S7V3.45 mag es nicht. tjoa, vielleicht einer der werten herren, die mir morgends geholfen ham. mfg, bernd


----------



## Lobo (15 März 2007)

OK OK. Das war ein wenig "dahinge..." ich habe mal Kommentare dahinter geschrieben, ganz wichtig ist vielleicht das der M1.5 mein Taktsignal ist.
Für M1.5 musst du dein Taktsignal einfügen.


U M 1.5;        //das ist das das Taktsignal (M1.5=taktsignal)
U E 0.1;        //der Taster
ZV Z 1;        //wenn Takt und Taster = 1 wird vor gezählt
U( ;
L MW 100;    //ist der Zähler bei 5 angekommen wird der Zähler zurück gesetzt
L 5;            //
==I ;          //
) ;
R Z 1;        //
L Z 1;
T MW 100;    //der zählerstand wird in MW100 gespeichert

U( ;
L MW 100;    //ab hier folgen dann nur noch vergleiche, bei 0
L 0;            //und Taster ein 1. Led
==I ;
) ;
U E 0.1;
= A 0.0;

U( ;           //zweite Led
L MW 100;
L 1;
==I ;
) ;
U E 0.1;
= A 0.1;

U( ;           //dritte Led
L MW 100;
L 2;
==I ;
) ;
U E 0.1;
= A 0.2;

U( ;           //vierte Led
L MW 100;
L 3;
==I ;
) ;
U E 0.1;
= A 0.3;

U( ;           //fünfte Led
L MW 100;
L 4;
==I ;
) ;
U E 0.1;
= A 0.4;

UN E 0.1;         //ist der taster ausgeschaltet = 0 wird nicht mehr weitergezählt,
L MW 100;        //und der letzte Zählerstand gespeichert
L 0;                //hier würde die erste LED blinken
==I ;        
U M 1.5;    
= A 0.0;

UN E 0.1;        //hier würde die zweite LED blinken
L MW 100;
L 1;
==I ;
U M 1.5;
= A 0.1;

UN E 0.1;    //hier würde die dritte LED blinken
L MW 100;
L 2;
==I ;
U M 1.5;
= A 0.2;

UN E 0.1;    //hier würde die vierte LED blinken
L MW 100;
L 3;
==I ;
U M 1.5;
= A 0.3;

UN E 0.1;    //hier würde die fünfte LED blinken
L MW 100;
L 4;
==I ;
U M 1.5;
= A 0.4;

Danke für Feedback.


----------



## kpeter (16 März 2007)

Berndq schrieb:


> so, nun hab ich nen anschiss aber wegbekommen, das ist die ideallösung, nicht so ne schlampige, wie ich die abgeliefert hab.


 
mal eine frage deine lösung hat funktioniert oder

und du hast einen anschiss bekommen 

was ist denn das für einer

sag ihn mal einen schönen gruss für was er denn 2 timer benötigt wenn seine lösung schon so gut ist und nicht nur 1


----------

