# Ein paar Fragen .



## waldy (4 September 2009)

Hallo.
ihc habe es gehört
wenn ich schreibe z.B. Befehl:

E0.0

Dann diese Befehl besteht aus zwei Byts .
In erste Byts wird es unter Sinn mit "was" und in zweite Byts " womit" geschrieben.

Können Sie bitte  mir es genau erklären?

gruß waldy


----------



## marlob (4 September 2009)

E 0.0 ist ein Eingang und kein Befehl ;-)
Hier kannst du für Siemens nachlesen, wieviel Wörter die einzelnen Befehle gebrauchen und wie lang die Ausführungszeit ist
Operationsliste S7-300  CPU 312, CPU 314, CPU315-2DP
Operationsliste S7-400  CPU 412, 414, 416, 417


----------



## waldy (4 September 2009)

ups,
ja, ich wolte es so schreiben:

U E0.0

Und dafür braucht man zwei Byts , so wie ich habe es gehört.

Ich möchte es gerne wiessen - warum zwei Byts braucht man dafür.

gruß


----------



## ge-nka (4 September 2009)

waldy schrieb:


> Hallo.ihchabeesgehörtwennichschreibez.B.Befehl:E0.0
> DanndieseBefehlbestehtauszweiByts.InersteBytswirdesunterSinnmit"was"und inzweiteByts"womit"geschrieben.
> 
> Können Sie bitte  mir es genau erklären?
> ...



Also so ist das doch um einiges schwerer zu lesen als Original oben,
genau so ist es für CPU leichter ,wenn Befehl und Variable ihren festen Platz haben und nicht in einem Byte Platz teilen.


----------



## Gerhard Bäurle (4 September 2009)

waldy schrieb:


> U E0.0
> 
> Und dafür braucht man zwei Byts , so wie ich habe es gehört.
> 
> ...



Hallo,

wenn es um die Speicherung von Daten geht, ist Byte die Grundeinheit.

Die Rechenwerke sind (heute) auch auf Bytes ausgelegt. 

Wenn die Anzahl der Operatoren (U, O ...) unter 255 bleibt, reicht
auch für deren Speicherung ein Byte. 

E0.0 ist als Bit 0 ein Teil des Eingangsbyte 0 (E0.0 ... 0.7). 

Umgekehrt: Würde man den Operator (4 Bit) und den Operand 
(restliche 4 Bit) in ein Byte schreiben, würde man zur Verarbeitung
ein 4-Bit-Rechenwerk benötigen.

Das ist jetzt laienhaft geschrieben, aber so in die Richtung sollte es gehen.


----------



## PeterEF (4 September 2009)

waldy schrieb:


> ups,
> ja, ich wolte es so schreiben:
> 
> U E0.0
> ...


 
Bevor noch mehr geschrieben wird, schau doch mal in die von marlob zitierten Operatorenlisten.
Die meisten Operatoren benötigen ein Word, viele noch mehr.
Konkret das 'U' belegt ein Word, Zuweisungen wie S/R/= gleich zwei (jedenfalls bei einer S7-300).

Je mehr Bits die Anweisungen belegen, desto mehr Speicher braucht die SPS pro Anweisung, desto größer ist aber auch der potentielle Operationsvorrat. Mit einem Bit kann man eben nur zwei Operationen darstellen, mit zwei Bit vier, mit acht Bit 256 usw.usf.....

Als SPS-Programmierer braucht man sich aber in der Regel heutzutage nicht mehr darum kümmern, wieviele Byte eine Anweisung nach dem Compilieren nun verbraucht - bei den Hardwarepreisen kommt im Fall des Falles halt eine größere CPU zum Einsatz.


----------



## maxi (4 September 2009)

Boah. geil alt der Beitrag. Warum steht der den ganz oben als "top aktueller"?


----------



## Question_mark (5 September 2009)

*As...*

Hallo,



			
				maxi schrieb:
			
		

> Boah. geil alt der Beitrag. Warum steht der den ganz oben als "top aktueller"?



Der Beitrag steht ganz oben, weil Du Idiot Deinen Schwachsinn hier als letzter abgelassen hast. Sag mal, und diesmal ganz ehrlich : schnupfst Du soviel Koks oder bist Du einfach nur bescheuert *ROFL*

Gruß

Question_mark


----------



## MSB (5 September 2009)

Zitat:


> *
> 
> 
> 
> ...


Also so alt finde ich von Gestern gar nicht, da sind sogar Semmeln noch genießbar.

Mfg
Manuel


----------



## maxi (5 September 2009)

Ohje, ich habe in meiner durch überarbeitung erzeugten Blindheit auf das Registrierdatum gekuckt.

Naja, dann istfür Ralle der Tag Morgen auch noch gerettet


----------



## maxi (5 September 2009)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...


 
Nee, bekommen kein Koks 

Dann doch bescheuert gewesen bin


Warum, wieviel Koks bekommt ihr den und ab wann ist es den zuviel?


PS: Letztens meinten die Kunden zu uns, als wir 4-5 Tage immer 18-20 Stunden gearbeitet hatten, ob unsere Firma ein Drogenproblem hat *lach*


----------



## waldy (9 September 2009)

Hallo,
andere Frage,
kann man zwei XOR-Glied / Antivalenz ( ein Gied besteht aus zwei Eingänger und ein Ausgang) zusammen kaskadieren lassen?
Und wie sieht danach Wahrheitstabelle aus?
gruß


----------



## clausi (9 September 2009)

waldy schrieb:


> Hallo,
> andere Frage,
> kann man zwei XOR-Glied / Antivalenz ( ein Gied besteht aus zwei Eingänger und ein Ausgang) zusammen kaskadieren lassen?
> Und wie sieht danach Wahrheitstabelle aus?
> gruß


 
Waldy...Waldy.........man kann alles wenn man bereit ist es auszuprobieren bzw. zu testen.......
Also Noch mal.... besorg dir das Step7-Softwarepacket.......+die TIA-Unterlagen......

Lesen muss man koennen..........
Ich kann Dir eine Hilfe anbieten.... wenn du mir bei dem Umzug bzw bei der Hausrenovierung hilfst... 

PS: Ich wohne in der SCHÖNEN PFALZ:::

Claus


----------



## Blockmove (9 September 2009)

waldy schrieb:


> Und wie sieht danach Wahrheitstabelle aus?


 
Stell Sie dir halt mal auf ... 
Du kommst bestimmt selber drauf 

Dieter


----------



## Flinn (9 September 2009)

waldy schrieb:


> kann man zwei XOR-Glied / Antivalenz ( ein Gied besteht aus zwei Eingänger und ein Ausgang) zusammen kaskadieren lassen?



Ja, das kann man machen lassen.

Gruß
Flinn


----------



## waldy (9 September 2009)

hallo Flinn,
und kannst du bitte Wahrheitstabelle zeichen?
Dann stelle ich andere Frage wegen Tabelle dir.
gruß


----------



## Flinn (9 September 2009)

waldy schrieb:


> hallo flinn,
> und kannst du bitte wahrheitstabelle zeichen?
> Dann stelle ich andere frage wegen tabelle dir.
> Gruß




```
i1 i2 i3 o1
0 0 0     0
0 0 1     1
0 1 0     1
0 1 1     0
1 0 0     1
1 0 1     0
1 1 0     0
1 1 1     1
```
Wie man sieht: Bei einer ungeraden Anzahl von Einsen ist das Ergebnis auch "Eins".

Gruß
Flinn


----------



## waldy (9 September 2009)

Hallo,
Danke dir,
und jetzt die Frage ,
laut Beschreibung XOR:


> Ausgang immer dann "1" ist, wenn die Eingänge unterschiedlich sind, und immer dann "0" ist, wenn die Eingänge gleiche Logikzustände aufweisen.


 
dann Theoretisch letzte Zelle
1111
müssen auch "0 " haben , weil Logische Zustand an alle Eingänge gleich ist .

Warum kommt "1" dann , anstatt " 0 " .

gruß waldy


----------



## PeterEF (9 September 2009)

XOR mit drei Eingängen besteht quasi aus zwei XOR: der Ausgang des ersten ist einer der Eingänge des zweiten.

Wenn sich aus dem ersten ergibt: 

1 XOR 1 => 0

dann gilt für das zweite:

0 XOR 1 => 1

oder zusammengefaßt: (1 XOR 1) XOR 1 => 1


----------



## waldy (9 September 2009)

> XOR mit drei Eingängen besteht quasi aus zwei XOR: der Ausgang des ersten ist einer der Eingänge des zweiten.
> 
> Wenn sich aus dem ersten ergibt:
> 
> ...


Danke für die Antwort.

Und bedeutet das , das mit zwei XOR kann man nicht XOR mit drei Eingänge kaskadieren lassen ?

gruß


----------



## PeterEF (9 September 2009)

waldy schrieb:


> Danke für die Antwort.
> 
> Und bedeutet das , das mit zwei XOR kann man nicht XOR mit drei Eingänge kaskadieren lassen ?
> 
> gruß


 
Naja, letzten Endes werden ja alle derartige Operationen immer nur mit zwei Eingängen (zweistellig) ausgeführt, wenn mehrere Eingänge verknüpft werden (mehrstellige Operation), wird das immer auf den einfachen Fall zurückgeführt (rechne doch mal im Kopf 2 + 4 + 6) - schon weil die CPU für die Berechnungen nur zwei Akkumulatoren zur Verfügung haben......
(oder )

Die Wahrheitstabelle für ein XOR mit drei Eingängen sieht dann eben aus wie oben beschrieben.

Für weitere Betrachtungen empfehle ich mal die Beschäftigung mit dem Kommutativgesetz und dem Assoziativgesetz :-D


----------



## waldy (9 September 2009)

> Für weitere Betrachtungen empfehle ich mal die Beschäftigung mit dem Kommutativgesetz und dem Assoziativgesetz :grin:


 - Danke dir füt Tipp , nur so weit bin ich noch nicht .

Die Frage war , welche operanden kann man kaskadieren lassen , ohne änderungs Wahrheittabelle.
wenn ich mache 
mit "ODERr " oder " UND" - kommt man immer zu gleiche Ergebnisse Warheitsliste, ob da ist ein "UND" oder mit mehrere "UND" kaskadiert .

Nur ich dachte , das XOR läst sich nicht kaskadieren, weil mit zwei Kaskaden am Ende ändert die Wahrheitsliste.

Und Bedienung für zwei Kaskadierte XOR :


> Ausgang immer dann "1" ist, wenn die Eingänge unterschiedlich sind, und immer dann "0" ist, wenn die Eingänge gleiche Logikzustände aufweisen.


 - passt dann nicht.

Enweder " 0" bei XOR muss am Ausgang bei gleiche Logigzustände sein - oder dann es ist schon nicht XOR Bedienung , sondern was andere Funktion.

Weil uns hat es gelernt bei XOR ( früher ) - Ausgang immer dann "1" ist, wenn die Eingänge unterschiedlich sind, und immer dann "0" ist, wenn die Eingänge gleiche Logikzustände aufweisen. 

Und für mich, das bedeutet, wenn bei mehrere XOR kaskadierung ich bekomme bei zwei kaskadierte XOR am Ende, bei gleiche Logikzustände ( 111 = 1) kein "0" - dann für mich ist das schon kein XOR Bedienung.

gruß waldy


----------



## PeterEF (10 September 2009)

waldy schrieb:


> Weil uns hat es gelernt bei XOR ( früher ) - Ausgang immer dann "1" ist, wenn die Eingänge unterschiedlich sind, und immer dann "0" ist, wenn die Eingänge gleiche Logikzustände aufweisen.


Das gilt für ein XOR mit drei Eingängen.



> Und für mich, das bedeutet, wenn bei mehrere XOR kaskadierung ich bekomme bei zwei kaskadierte XOR am Ende, bei gleiche Logikzustände ( 111 = 1) kein "0" - dann für mich ist das schon kein XOR Bedienung.
> 
> gruß waldy


Hier hast Du unzulässigerweise vereinfacht, die Wahrheitstabelle ist so richtig und Du kannst diese Tatsache jetzt ignorieren oder zur Kenntnis nehmen


----------



## Flinn (10 September 2009)

@Waldy,

wofür brauchst Du das?
Hast Du eine konkrete Anwendung oder geht es Dir nur um die Theorie?

Gruß,
Flinn

PS:  Ein XOR mit mehr als 2 Eingängen habe ich noch nie gebraucht, von einer Prüfsummenbildung mal abgesehen...


----------



## waldy (10 September 2009)

Hallo,


> Hast Du eine konkrete Anwendung oder geht es Dir nur um die Theorie?


 - das war Theorie, Aufgabe in unsere Schule.

gruß waldy


----------



## PN/DP (11 September 2009)

http://de.wikipedia.org/wiki/XOR-Gatter

Ein XOR mit mehr als 2 Eingängen ist immer eine Reihenschaltung von
mehreren XOR mit je 2 Eingängen. Die ersten beiden Eingänge werden
XOR-Verknüpft, danach wird das Ergebnis mit dem nächsten Eingang XOR 
verknüpft, dieses Ergebnis wieder mit dem nächsten Eingang und so fort.
So ergibt sich das Endergebnis, daß der Ausgang nur dann 1 ist, wenn an
einer ungeraden Anzahl Eingängen 1 anliegt.

Nur ein XOR mit 2 Eingängen kann man auch als "Vergleicher" bezeichnen,
nur dieses hat die spezielle Eigenschaft "Antivalent" (der Ausgang ist 1, 
wenn die Eingänge unterschiedlich sind).
(oder mit negiertem Ausgang: "Äquivalent")

Gruß
PN/DP


----------



## waldy (17 September 2009)

Hallo,
so, nächste Frage,
wenn ich neheme Vorzeichenbehaftete Zahlen, dann bei überzahlung von 32767 es geht weiter auf -32768 .

Und wie funktioniert es bei s300 CPU, das , nach Zahl 32767 es geht auf "0" .

Welche Speicher ist bei CPU 300 eingebuat, als Lose oder behaftete Zahlen ?
gruß waldy


----------



## Flinn (17 September 2009)

waldy schrieb:


> Und wie funktioniert es bei s300 CPU, das , nach Zahl 32767 es geht auf "0" .


 
Hä? Bei S7-300 verhält es sich so wie bei S7-400. 



waldy schrieb:


> Welche Speicher ist bei CPU 300 eingebuat, als Lose oder behaftete Zahlen ?


 
Der Speicher selbst ist nicht vorzeichenlos oder -behaftet. Es ist nur eine Art der Interpretation, WAS ich mit meinen 16 Bits im Wort mache. Und das ist unabhängig von der Hardware.

Gruß
Flinn


----------



## waldy (23 September 2009)

Hallo,
nächste Frage,

bei themperatursensor Pt100 was mus man mit berchtigen:
- Raum Temperatur für kabelverlengerung?
- wie lange dar kabel sein?

Oder kann man sagen, durch Temperatursensor fliesst ganz wenig strom ca. 5 ma, und deswegen wie Faktor - Raumtempratur und Kabellänger bracuht man nicht mit rechnen?

gruß waldy


----------



## Gerhard Bäurle (23 September 2009)

waldy schrieb:


> bei themperatursensor Pt100 was mus man mit berchtigen:
> - Raum Temperatur für kabelverlengerung?
> - wie lange dar kabel sein?



Hallo,

es gibt ja verschieden Ausführungen, da hilft ein Blick ins Datenblatt 
des jeweiligen Typs. Siehe z. B. *hier*. 

Der  Widerstand des Anschlusskabels muss schon berücksichtigt werden.

Nachtrag: Die Temperaturschwankung der Kabel lässt sich so einfach
nicht kompensieren. Schwankt diese zwischen 18° und 25° C, wird der 
Einfluss in der Regel vernachlässigbar sein. Ist die Schwankung z. B.
zwischen -30 und +60° C, ist der Einfluss natürlich größer. Je nach dem
wie genau der Messwert sein muss, ist dann eventuell ein andere Lösung 
erforderlich (Aufnahme vor Ort + und Daten digital übertragen).


----------



## waldy (23 September 2009)

@Gerhard Bäurle -   Danke .

gruß waldy


----------



## waldy (12 Oktober 2009)

1 – 
Hallo,
eine Frage ,
kann man schon Programm Simatic S7 unter Windows Vista 
oder unter Windows 7 laufen lassen ?

gruß


----------



## vierlagig (12 Oktober 2009)

waldy schrieb:


> 1 –
> Hallo,
> eine Frage ,
> kann man schon Programm Simatic S7 unter Windows Vista
> ...



5.4 unter vista (32bit/business) läuft stabil


----------



## waldy (12 Oktober 2009)

Hallo,
Danke dir vierlagig,

ich benutzte Momental noch Step S7 for Sudentversion ,
und da steht V5.3 .

Bedeutet das für mich, das ich muss noch bei Windows XP Prof . bleiben?

Und Windows 7 ( neue Version) - wäre möglich da S7 laufen kriegen oder gibt s noch keine Info dafür?


gruß waldy


----------



## vierlagig (12 Oktober 2009)

sollte funzen, solange es 32bit ist ... über eine offizielle freigabe von S bin ich allerdings nicht informiert


----------



## waldy (21 Oktober 2009)

Hallo,
ich möchte euch fragen, wie machen Sie neues Projekt, erst ohne Station  SIMATIC 300 zu einfügen.

Folge:
Erst habe ich Funktionsbeschreibung,
- schreibe Programm,
- und nur danach muss ich Hardware SIMATIC 300 einstellen.

Erste schritte, die mache ich erst:
-Simatic Manager starten 
- S7 Programm einlegen.

Nun die Frage - wenn Programm (kleiner natürlich, nicht vergleichbar mit Ihre Programmen ) ist geschrieben, und wie kann ich Hardware SIMATIC 300 einfügen, damit S7Programm wird hinter in Reihe nach SIMATIC 300 stehen.

gruß


----------



## Flinn (21 Oktober 2009)

Hi Waldy,
coole Frage.

Kopieren, Einfügen, Fertig.
(Oder habe ich die Frage nicht verstanden?)

Gruß
Flinn


----------



## waldy (21 Oktober 2009)

Hallo Flinn,
doch du hast es Richitg verstanden, nur ich finde das bischen umständig.
Danach noch mal neue Hardware erstellen und noch mal neue S7Programm einfügen.

Und danach aus alte S7 Programm ( ohne eingefügte hardware) Programm kopieren und in neue S7 Programm ( mit erstellte Hardware Rack) einfügen.

Hat Siemens nichts was einfachsten noch ausgedacht bis heute?

gruß waldy


----------



## Ralle (21 Oktober 2009)

@waldy

Was ist denn daran so umständlich oder schwierig?


----------



## vierlagig (21 Oktober 2009)

Ralle schrieb:


> @waldy
> 
> Was ist denn daran so umständlich oder schwierig?



es auf die waldy-art zu machen


----------



## Flinn (21 Oktober 2009)

Waldy,

ich würde diesen Gehirnschmalz lieber bei eigentlichen Programmerstellung verbraten. Da müssen meistens noch andere Knoten im Kopf gelöst werden...

Gruß
Flinn


----------



## waldy (23 Oktober 2009)

Hallo,
dann lassen wir erst mal, und ich hoffe, das es wird Später bei Simens nachkorrigiert 

Und nächste Frage, 
wenn ich schreibe in 




> OB1
> 
> CALL FC1


 
Ist das OK.

Nur wenn ich versuche in OB1  mit SPB das schreiben:





> U E0.0
> SPB FC1


 
Dann bekomme ich Fehlermeldung, 

Woran liegt das?

gruß


----------



## sps-concept (23 Oktober 2009)

*S5*

weils ein Mix aus S5-Anweisung und S7-Baustein ist?


----------



## Astralavista (23 Oktober 2009)

Für bedingte Bausteinaufrufe CC benutzen.
Ansonsten UC.


----------



## Flinn (23 Oktober 2009)

Astralavista schrieb:


> Für bedingte Bausteinaufrufe CC benutzen.
> Ansonsten UC.


 
Yep, aber nur solange FC/FB keine I/O/IO-Parameter haben. Sonst CALL verwenden und bedingt drüberherspringen. Uiuiuiuiuiui.

Waldy, wo laufen denn DEINE Anlagen später???

Gruß
Flinn


----------



## waldy (23 Oktober 2009)

hi,


> Waldy, wo laufen denn DEINE Anlagen später???


- weiss ich noch nicht, erst mache ich noch Übung.
In Deutschland meine Programmen werden wahrscheinlichnicht durch VDE Vorschiften NICHT freigegeben  .



> weils ein Mix aus S5-Anweisung


 - ja , genau , das habe ich bei S5 gelernt.

Könnten Sie ein paar Sätzte mit Beispiele für S7 schreiben, wie mache Befehl SPB aus OB1 für FC1 ? 

gruß waldy


----------



## Astralavista (23 Oktober 2009)

Flinn schrieb:


> Yep, aber nur solange FC/FB keine I/O/IO-Parameter haben. Sonst CALL verwenden und bedingt drüberherspringen. Uiuiuiuiuiui.
> 
> Waldy, wo laufen denn DEINE Anlagen später???
> 
> ...



Ich gehe davon aus das Waldy noch keine Bausteine mit Ein- und Ausgangsparametern hat


----------



## waldy (23 Oktober 2009)

Hi,
Momental habe ich FC1 geschrieben, mit 
U E0.0
U E0.1
= A0.0

geschrieben.


und jetzt muss ich FC1 in OB mit SPB schrieben, 
U E0.2
SBP FC1


wie wird das in S7 aussehen ?

gruß waldy

P.S. denken mus man ein schritt vor , mit zwei Konstanten zurück - dann bist du Super Programmierer


----------



## Astralavista (23 Oktober 2009)

Ähm Waldy du hast dich oben sogar für meinen Beitrag bedankt !!!
Und jetzt stellst du die gleiche Frage wieder !!!
Wenn du nicht lernen willst dann stelle auch keine Fragen mehr.
Also nochmal ... extra für Waldys ...

In S7 würde das in deinem Fall so aussehen:

U E0.2
CC FC1


----------



## waldy (23 Oktober 2009)

> Für bedingte Bausteinaufrufe CC benutzen.
> Ansonsten UC.


 - ich habe für die Tipp dich bedankt.
Nur in Hilfe / Bibliothek ich finde keinen richtige Hinweis- deswegen habe ich noch mal die Frage gestellt.




> Wenn du nicht lernen willst dann stelle auch keine Fragen mehr.


 - ich möchte dich auch gegenseitig bieten, nächste mal gib bitte vollständige Antworten.




> Ansonsten UC


 - entschuldigugn, habe leider diese Abkurzung in "Hilfe Step 7 " nicht gefunden, muste noch mal fragen.

Sonst Danke Dir noch mal für gute Tipp.


gruß waldy


----------



## waldy (23 Oktober 2009)

Hi,
ich habe in Programm rein geschrieben, wie @Astralavista  hat mir empfohlen – es funktioniert Gut. Danke noch mal.

Nur wieder eine Frage, 
ich habe es selber erst versucht   ( bevor habe ich Frage hier geschrieben) in Simatic Manager in „ Hilfe zu STEP 7 „ was über Sprungbefehle zu finden oder nach Suchworte CC – habe ich keine Antwort gefunden .

Die Frage – steht nicht alles in Index ?
Wo kann man sonst Beschreibung über Befehle finden ?

Gruß waldy


----------



## Solaris (23 Oktober 2009)

Hallo Waldy,

das findest du alles im großen Internet, da haben Larry Page und Sergey Brin schon einiges vorbereitet


----------



## waldy (26 Oktober 2009)

Hallo,
ich komme wieder zurück zum Behfehle SPB .

Wenn ich schreibe in OB 1

U(
U E0.0
U E0.1
)
CC FC1

es funktioniert gut .

Nur wenn VKE z.B. U E0.0 ist "0" -

dann in FC1 welche Ausgänge bleiben auch auf "1" setzten stehen .

Und das brauche ich nicht. Das bedeutet, wenn ich schalte Schalter in Hanbetrieb Aus ( E0.0 ist "0" ) - dann welche Ausgang in FC 1 belibt als "1" stehen und z.B. Motor ( mit Steuerung aus FC1 ) bleibt weiter laufen.


Gibt s welche Behfehl, damit wenn für FC1 VKE=0 , dann alle agänge in FC1 auf "0" settzen ?

gruß waldy


----------



## Astralavista (26 Oktober 2009)

Irgendwie hab ich gewusst das diese Frage hinterher kommt. 
Wenn du CC benutzt wird dein Baustein nicht abgearbeitet und die Ausgänge behalten ihren letzten Zustand bei.
Das ist halt mal so.
Wenn dann müsstest du deine Eingänge über Parameter an den Baustein übergeben und damit intern im Baustein die Ausgänge zurücksetzen.
Aber dann den Baustein bitte mit call oder uc aufrufen.


----------



## waldy (26 Oktober 2009)

hi,


> uc aufrufen


 -  was ist das für UC Befehl ?
Wie muss man die Richtig schreiebn?
Ich kenne leider noch nicht diese UC Funktion .

gruß waldy


----------



## MatMer (26 Oktober 2009)

Hallo,

such mal in der Step7 Hilfe nach folgendem Begriff

"Sprünge in Sprachbeschreibung"

dort gehts du weiter in "AWL" und dort gibt es die beste Übersicht der ganzen Befehle.

Wenn du was bestimmtes suchst, gehst du in die entsprechenden Kapitel, weißt du den Befehl, aber nicht wo er ist, guckst du am Besten unter "... sortiert nach deutscher Mnemonik (SIMATIC)" dort sind ALLE AWL Befehl alphabetisch aufgelistet!!!


```
Format
UC <Kennung des Codebausteins>
Beschreibung 
UC <Kennung des Codebausteins> (unbedingter Bausteinaufruf) ruft einen Codebaustein vom Typ FC, FB, SFC oder SFB auf.
Die Operation UC gleicht der Operation CALL, mit dem Unterschied, daß keine Parameter übergeben werden können.
Die Operation speichert die Rücksprungadresse (Selektor und relative Adresse), die Selektoren der beiden aktuellen Datenbausteine
sowie das MA-Bit im B-Stack, deaktiviert die MCR-Abhängigkeit, erstellt den Lokaldatenbereich des Bausteins, der aufgerufen
werden soll, und beginnt, den aufgerufenen Code auszuführen.
```


----------



## crash (26 Oktober 2009)

Astralavista schrieb:


> Irgendwie hab ich gewusst das diese Frage hinterher kommt.



*ACK*
Bist du auch Hellseher so wie ich? *ROFL*


----------



## waldy (26 Oktober 2009)

> Bist du auch Hellseher so wie ich?


 - hm, interresante aussage, und welche als nächste Frage kommt jetzt von mir ?


gruß waldy


----------



## crash (26 Oktober 2009)

waldy schrieb:


> hi,
> -  was ist das für UC Befehl ?
> Wie muss man die Richtig schreiebn?
> Ich kenne leider noch nicht diese UC Funktion .
> ...



Steht alles in der Step7 Hilfe.


----------



## crash (26 Oktober 2009)

waldy schrieb:


> - hm, interresante aussage, und welche als nächste Frage kommt jetzt von mir ?
> 
> 
> gruß waldy



Das sage ich dir wenn es wieder so weit ist.


----------



## waldy (27 Oktober 2009)

Hi,
nächste Frage,
wenn ich schreibe:



> NW1
> U  M0.0
> FP M100.5 ( Taktfrequent von CPU  1 Hz )
> R  M0.0
> ...


 
Frage - wie funktioniert Positive Flanke - ist die gultig nur in NW und hat beschtimte Zeit  von "0" auf "1" aufsteigen ?

Oder Positive Flanke ist gültig für ganze Zyklus in CPU ?


gruß waldy


----------



## marlob (27 Oktober 2009)

Du solltest für deinen Flankenmerker einen freien Merker benutzen und schon gar nicht einen Taktmerker. 
Ausserdem benutzt du in NW1 und NW2 den gleichen Flankenmerker. 
Das funktioniert auch nicht. 
Also immer einen freien Merker benutzen, der nirgends anders benutzt wird


----------



## Cerberus (27 Oktober 2009)

Hi waldy,

Zu Beginn von jedem Zyklus werden die Zustände der Merker, Ein- und Ausgänge und allen Variablen geladen. Wenn also zum Beispiel ein Merker im letzten Zyklus (n-1) den Wert "0" hat und in diesem Zyklus  den Wert "1", dann muss zwischen dem Beginn von Zyklus n-1 und dem Beginn von Zyklus n eine positive Flanke aufgetreten sein. Diese ist im kompletten Zyklus n abrufbar.

Gruß Cerberus


----------



## waldy (27 Oktober 2009)

hi,
ja, mit freie Merker das war meine Fehler, habe vergessen dabei zu schreiben, richtig es wäre so gewesen:


> NW1
> U M0.1
> U M100.5 ( Taktfrequent von CPU 1 Hz )
> FP M20.0
> ...


 
ich dachte es früher, das erst mal Positive Flanke in NW1 wird bearbeitet und nur in NW als zweite Befehl ausgeführt. Damit NW2 und NW3 werden in reihe bearbeiten .

Und so wie ich sehe jetzt, NW2 und NW3 werden gleizeitg bearbeiten .
Wir machen Sie diese lösung aus ?

Es muss erst mal NW2 bearbeiten und nur danach NW3.

gruß waldy


----------



## MatMer (27 Oktober 2009)

so ganz hast du das immer noch nicht verstanden...

die Netzwerke werden schon nacheinander bearbeitet. Bei Flankenmerkern (das sind die Merker die nach dem Befehle "FP" "FN" stehen) ist es wichtig zu beachtet das diese nur einmalig benutzt werden. Ansonsten überschreibst du dir unter umständen im selben SPS Zyklus den Wert, den du eigentlich auf die Flanke prüfen willst...

in deinem Beispiel nutzt du für beide Flanken jeweils den M100.5, das geht aber nicht. Und wenn du den zusätzlich noch für das Taktmerkerbyte nutzt, geht das noch viel weniger.
Cerberus hat dir doch schon sehr gut erklärt, wie die Flankenauswertung funktioniert.

Wenn ich dich richtig verstanden habe, sollen die Anweisung die im NW2 stehen nicht immer ausgeführt werden, sondern in Abhängigkeit des Merkers M0.2, oder liege ich da jetzt falsch?

Wenn ja könntest du mit deinem Sprung über das NW2 springen und zwar mit
UN M0.2
SPB M001

oder mit
U M0.2
SPBN M001
...


----------



## waldy (27 Oktober 2009)

Hi,


> sollen die Anweisung die im NW2 stehen nicht immer ausgeführt werden


 - ups, das war meine Fehler.
Aufgabe.
In FC 1 sind z.b. 10 NW , 
es fang ab NW1  , 
-  dann mit Taktmerker M100.5 ( 1 Sek ) muss NW2 geschaltet ( S )werden und NW1 ausgeschaltet ( R ) , 
- und nach neue eingang Taktmerker M100.5  - NW2 Rücksetzten und NW3 Setzten , ,
- dann mit neue Takt Taktmerker M100.5  - NW3 Rücksetzten und NW4 Setzten,

und so weiter bis NW10 .

gruß waldy


----------



## waldy (28 Oktober 2009)

Hallo,
das ist Lösung mit Taktmerker für Schrittkette

```
////////// NW1 ////////////////
 
 
U     "Anlage_Ein"
      FP    M     20.7
      S     M    200.1
 
 
//////////  NW2 /////////////////
 
U     M    100.7  ( Taktmerker von CPU 1 Hz)
      FP    M     20.0
      =     M     20.1       // zwischen Merker für Bearbeitung Taktmerker Signal
 
///////////// NW3 ///////////////
 
U     M    200.0
      U     M     20.1
      R     M     20.1
      R     M    200.0
      S     M    200.1
 
///////////// NW 4 /////////////////
 
U     M    200.1
      U     M     20.1
      R     M     20.1
      R     M    200.1
      S     M    200.2
 
/////////////// NW 5 ///////////////
 
U     M    200.2
      U     M     20.1
      R     M     20.1
      R     M    200.2
      S     M    200.3
 
///////////////  NW6  ////////////////////
 
U     M    200.3
      U     M     20.1
      R     M     20.1
      R     M    200.3
      S     M    200.0
```
 

So und kommen wir jetzt wieder zum meine Frage wegen SPB FC1 , dass wenn SPB VKE = „0“ , dann Ausgänge bleiben  in FC1 auch „An“  /  VKE=“1“  stehen.

Gibt s dafür einfachste lösung Ausgänge auf Null setzten , wenn FC1 = „0“  ?

-         gibt s Möglcihkeit , irgendwie es abragen, ob FC1 ist AKTIV ( VKE=1 ) oder nicht Aktiv.
-         Wie bei z.B. U E0.0  // VKE = 1  - kann ich abfragen, ob E0.0 ist Aktiv oder nicht.

gruß waldy


----------



## crash (28 Oktober 2009)

waldy schrieb:


> So und kommen wir jetzt wieder zum meine Frage wegen SPB FC1 , dass wenn SPB VKE = „0“ , dann Ausgänge bleiben  in FC1 auch „An“  /  VKE=“1“  stehen.
> 
> Gibt s dafür einfachste lösung Ausgänge auf Null setzten , wenn FC1 = „0“  ?
> 
> ...



1. Du musst deine Ausgänge entsprechend deiner Bedingungen in deinem Baustein setzen und auch wieder zurücksetzen.
*Die Ausgänge werden nicht zurückgesetzt indem du  den Baustein einfach nicht mehr aufrufst!
*2. Wo willst du abfragen ob der FC1 "aktiv" ist???
Im FC1 selbst????
oder im aufrufenden Baustein???
häääää???


----------



## waldy (28 Oktober 2009)

Hi,
na ja, von mir gibt s immer dumme Frage, das weiss ich selber, damit so mehr dumme Frage - so besser lerne ich S7 



> Wo willst du abfragen ob der FC1 "aktiv" ist???


 - na gut , wenn ganz Primitiv als Beispiel, ich möchte irgendwie so haben , als VKE Abrage
U FC1 = 1 ( aktiv ist)
dann

kommt andere Befhel
Oder siemens ist noch nicht so weit gekommen?

gruß waldy


----------



## crash (28 Oktober 2009)

waldy schrieb:


> Hi,
> na ja, von mir gibt s immer dumme Frage, das weiss ich selber, damit so mehr dumme Frage - so besser lerne ich S7
> 
> - na gut , wenn ganz Primitiv als Beispiel, ich möchte irgendwie so haben , als VKE Abrage
> ...



Wenn du deinen FC1 bedingt aufrufst dann weißt du doch anhand deiner Bedingung ob der FC1 aktiv ist oder nicht.
Bedingung erfüllt -> FC1 aufrufen /eventuell einen Merker setzen
damit du an anderer Stelle weißt ob der FC1 aufgerufen wurde.
Bedingung nicht erfüllt -> FC1 nicht aufrufen /Merker rücksetzen.

...ich frag mich aber was das soll???


----------



## waldy (17 November 2009)

Hallo,
eine Frage,
wenn ich will von BCd Schalter (Mechanische ) Zahl einlesen - dann kann ich nur als Byt Eingänge einlesen 
L EB 0

Obwohl an BCD Schalter sind nur 4 Eingeänge und ich muss nicht 8 Eingänge von Ganze Baugruppe einlesen sondern nur halbe Byt ( von E0.0 bis E0.3) .
Wie geht das Praktisch ?

Weil wenn ich lese BCD ( 4 Anschlüsse an eingänge von Baugruppe ) als ganze Byt, dann ich lese mandere Eingägne ( E0.4 .. E0.7 ) mit.

gruß waldy


----------



## marlob (17 November 2009)

Du kannst die überflüssigen Eingänge doch ausmaskieren und dann in ein MB schreiben


----------



## waldy (17 November 2009)

Hi,
kannst du bitte eine Beispiel schreiben?
gruß waldy


----------



## marlob (17 November 2009)

Du sollst ja was lernen, also gibt es keine fertige Lösung sondern nur Hinweise
Du lädst dein EB
dann lädst du ein Bitmuster, wo die Bits 1 sind die du haben möchstest
Dann musst du diese beiden verknüpfen und in ein MB schreiben.
Probiere das mal und zeige dann deine Lösung


----------



## waldy (17 November 2009)

ich habe es so probiert , nur kommt nur "0" aus :


```
L     EB     1
      BTD   
      DTR   
      UD    DW#16#FF00
      T     MD     4
      L     MD     4
      SRD   4
      T     MD   200
      L     MD   200
      RND   
      DTB   
      T     AW     0
```
 
gruß waldy


----------



## marlob (17 November 2009)

waldy schrieb:


> ich habe es so probiert , nur kommt nur "0" aus :
> 
> 
> ```
> ...


siehe roter Kommentar und nochmal versuchen


----------



## waldy (17 November 2009)

```
L     EB     1
      UW    W#16#F
      BTD   
      DTR   
      T     MD   200
 
      RND   
      DTB   
      T     AW     0
```
 
hoffe jetzt ist das Ok.

gruß waldy


----------



## marlob (17 November 2009)

waldy schrieb:


> ```
> L     EB     1
> UW    W#16#F        [COLOR=Red]// bis hierher ok[/COLOR]
> BTD                 [COLOR=Red]// wofür[/COLOR]
> ...


Siehe roten Kommentar
Benutze bitte CODE-Tags und keine HTML-Tags


----------



## Lebenslang (17 November 2009)

U     e      0.0
      =     m      0.0
      u     e      0.1
      =     m      0.1
      u     e      0.2
      =     m      0.2
      u     e      0.3
      =     m      0.3
      nop   0
      l     mw     0
      bti   
      t     mw     1
      nop


----------



## marlob (17 November 2009)

Lebenslang schrieb:


> U     e      0.0
> =     m      0.0
> u     e      0.1
> =     m      0.1
> ...


Waldy soll lernen und braucht keine fertigen Lösungen ;-)

```
*
      U     e      0.0
      =     m      0.0
      u     e      0.1
      =     m      0.1
      u     e      0.2
      =     m      0.2
      u     e      0.3
      =     m      0.3
      nop   0
      l     mw     0
```
diesen Teil hat Waldy schon kürzer gelöst ;-)


----------



## waldy (17 November 2009)

Hallo,
das war meine Aufgabe.
Von 4 BCD Schalter - Ziffer in MD 200 als Real Zahl speichern.
Und dann an 4 BCD Indikator ausgeben in gleiche reihe .
Hier war nur eine BCD Schalter , muss ich noch andere 3 BCD Schalter machen.
grüß waldy


----------



## waldy (18 November 2009)

```
NW1
Erste BCD Zahl
 
L     EB     1
      UW    W#16#F
      BTD   
      DTR   
      T     MD   200
 
      RND   
      DTB   
      T     AW     0
 
 
/////////NW2//////////
Zweite BCD Zahl
 
L     EB     1                    // lade EB1 - Signal von 8 Eingängen
      UW    W#16#F0                     // mit F0 - 11110000 - bekomme Ergebniss von digit 2 // von 2 BCD Schalter
      SRW   4                           // schieben auf 4 rechts , bekomme F - 1111 - am Ende
      BTD                               // umwandeln von digits Zahl nach auf 32 bits
      DTR                               // umwandeln auf Realzahl
      T     MD   204                    // speichern in MD201
      RND                               // runde Realzahl
      DTB                               // umwandeln in BCD Format
      SLW   4                           // schiebe auf 4 Links, damit bekomme BCD signal auf zweite platz BCD Indikatores
      L     AW     0                    // lade ergebnisse in Akku 1
      OW                                // addiere mit ODER Akku 1 und Akku 2 // ergebniss von md 201 war nach Akku 2 automatisch geschoben
      T     AW     0                    // transferiere nach AW0 - Ausgang für BD Indikator
 
 
/////////////////NW3/////////////////
Dritte Zahl
 
 L     EB     0
      UW    W#16#F
//SRW   4
      BTD   
      DTR   
      T     MD   208
      RND   
      DTB   
      SLW   8
      L     AW     0
      OW    
      T     AW     0

 
 
///////////////NW4///////////////
Vierte Zahl
 
 
 L     EB     0
      UW    W#16#F0
      SRW   4
      BTD   
      DTR   
      T     MD   212
      RND   
      DTB   
      SLW   12
      L     AW     0
      OW    
      T     AW     0
```
 
die Programm für Aufgabe ist jetzt komplekt geschrieben.

geuß waldy


----------



## Gebs (18 November 2009)

Hallo Waldy,

muss Du die BCD-Ziffern einzeln auf das AW0 schicken?
=> dann gewinnt aber in Deinem Code immer nur die letzte Ziffer!

Wenn Du im MD 200 eine Realzahl brauchst, warum schreibst Du dann die 
Ziffern 2-4 in die MD 204 -212?

Die Wandlung in einen Realwert kannst Du extrem vereinfachen:
(Wenn im EW0 die Ziffern so abgelegt sind: Tausender-, Hunderter-, Zehner-, Einerstelle)

```
L EW0
BTD
DTR
T MD 200
```
Grüße
Gebs


----------



## marlob (18 November 2009)

@Gebs
das funktioniert nicht, da waldy einen BCD auf E0.0 - E0.3 und einen auf
E0.4 - E0.7 hat


----------



## Gebs (18 November 2009)

marlob schrieb:


> @Gebs
> das funktioniert nicht, da waldy einen BCD auf E0.0 - E0.3 und einen auf
> E0.4 - E0.7 hat


Sicher funktioniert das, wenn die BCD-Zahlen in der richtigen Reihenfolge liegen!

Grüße
Gebs


----------



## marlob (18 November 2009)

Habe ich das jetzt richtig verstanden. Du hast folgende Situation

```
BCD-Schalter 1: E0.0 - E0.3 -> MD208 (Real) -> ausgeben auf A0.0 - A0.3 als BCD
BCD-Schalter 2: E0.4 - E0.7 -> MD212 (Real) -> ausgeben auf A0.4 - A0.7 als BCD
BCD-Schalter 3: E1.0 - E1.3 -> MD200 (Real) -> ausgeben auf A1.0 - A1.3 als BCD
BCD-Schalter 4: E1.4 - E1.7 -> MD204 (Real) -> ausgeben auf A1.4 - A1.7 als BCD
```


----------



## marlob (18 November 2009)

Gebs schrieb:


> Sicher funktioniert das, wenn die BCD-Zahlen in der richtigen Reihenfolge liegen!
> 
> Grüße
> Gebs


Ich habe das so verstanden, das die BCD Zahlen separat betrachtet werden,
aber aus waldys Angaben wird man irgendwie nicht schlau


----------



## waldy (18 November 2009)

Hallo,
das war meine Fehler mit MD200 ( hat mir dann später es bemerkt),
du hast Recht, für einzeln BCD Wert braucht man einzeln MD Merker, deswegen für 1 Schalter MD200 , 2 Schalter MD204, 3 Schalter Md208, 4 BCD schalter MD212 .



> Habe ich das jetzt richtig verstanden. Du hast folgende Situation
> Code:
> als BCDBCD-Schalter 1: E0.0 - E0.3 -> MD208 (Real) -> ausgeben auf A0.0 - A0.3
> als BCDBCD-Schalter 2: E0.4 - E0.7 -> MD212 (Real) -> ausgeben auf A0.4 - A0.7
> ...


 - ja, hast du das richitg verstanden . Deswegen habe ich AW0 genommen .

gruß waldy


----------



## Gebs (18 November 2009)

Hallo Waldy,

wenn Du die BCD-Zahlen, so wie marlob es geschrieben hat, nur durchschleifen musst
(so sieht's auch in Deinem Code aus), dann geht das ganz einfach mit:

```
L EW 0
T AW 0
```
und Du sparst Dir die ganze Schieberei und Rückwandlung von REAL nach BCD!

Grüße
Gebs


----------



## marlob (18 November 2009)

Dann kannst du ja auch 

```
L EW0
T AW0
```
schreiben

Der Teil zum umwandeln in Real sah schon ganz gut aus. Obwohl ich den Sinn
hinter der Aufgabe nicht verstehe


----------



## waldy (18 November 2009)

@marlob


> Dann kannst du ja auch
> 
> Code:
> L EW0T AW0


 - uns hat diese Metode  auch am Anfang gezeigt- und hat gesagt- das es ist Falsche Weg. Weil es muste funktieonieren - aber das ist Falsch.

gruß waldy


----------



## marlob (18 November 2009)

waldy schrieb:


> @marlob
> - uns hat diese Metode  auch am Anfang gezeigt- und hat gesagt- das es ist Falsche Weg. Weil es muste funktieonieren - aber das ist Falsch.
> 
> gruß waldy


Am anfang hast du folgendes geschrieben


waldy schrieb:


> Hallo,
> eine Frage,
> wenn ich will von BCd Schalter (Mechanische ) Zahl einlesen - dann kann ich nur als Byt Eingänge einlesen
> L EB 0
> ...


Da stand nichts davon, das deine anderen Eingänge auch BCD sind :-(
Du solltest dir mal angewöhnen, direkt präzise und mit allen Hinweisen zu fragen


----------



## waldy (18 November 2009)

> Da stand nichts davon, das deine anderen Eingänge auch BCD sind :sad:
> Du solltest dir mal angewöhnen, direkt präzise und mit allen Hinweisen zu stellen


 - ja, das habe ich richtig gefragt, weil ich habe das erst für eine BCD Schalter gefragt, damit konnte ich diese Prinzip das Gut verstehen.

Und danach habe ich es auch geschrieben:


> Hallo,
> das war meine Aufgabe.
> Von 4 BCD Schalter - Ziffer in MD 200 als Real Zahl speichern.
> Und dann an 4 BCD Indikator ausgeben in gleiche reihe .
> ...


 - ich habe hier schon es geschrieben, das es handelt um 4 BCd Schalter und um 4 BCd indikatoren.
Wo war meine Fehler, das ist mit MD 200 . Weil für jede BCd schalter braucht man eigene MD Merker . Das habe ich erst nach zweite NW bemerkt  .


Deswegen ich habe es erst ma als Beispiel wegen eine BCD schalter nachgefragt - damit ich könnte später andere auch Gut verstehen und probieren zum programmieren. 


Z.B. mit Funktion 
UW W#16#F000
brauchte fast eine Stunde es verstehen, wie es funktioniert .

 gruß waldy


----------



## marlob (18 November 2009)

waldy schrieb:


> ...
> 
> 
> Deswegen ich habe es erst ma als Beispiel wegen eine BCD schalter nachgefragt - damit ich könnte später andere auch Gut verstehen und probieren zum programmieren.
> ...


Die Lösung sieht aber für einen Schalter anders aus, als für 4!
also bitte Aufgabe präzise stellen, und dann nach Teillösung fragen. Dann 
kommen wir eher zum Ziel



waldy schrieb:


> ...
> Z.B. mit Funktion
> UW W#16#F000
> brauchte fast eine Stunde es verstehen, wie es funktioniert .
> ...


Hauptsache verstanden
Das ist das wichtigste


----------



## Gebs (18 November 2009)

waldy schrieb:


> Z.B. mit Funktion
> UW W#16#F000
> brauchte fast eine Stunde es verstehen, wie es funktioniert .



Waldy, das steht doch aber in der AWL-Hilfe sehr gut erklärt.

Grüße
Gebs


----------



## waldy (18 November 2009)

> Waldy, das steht doch aber in der AWL-Hilfe sehr gut erklärt.


- ja, hast du recht. nur komischeweise - in AWL hilfe steht alles Gut erklärt- wenn du verstehst schon diese sache.


Und bei erste mal - das ist wie eine Chineschise Grammatik.

gruß waldy


----------



## Gebs (18 November 2009)

waldy schrieb:


> das ist wie eine Chineschise Grammatik.


das nennt sich boolsche Algebra! 

Grüße
Gebs


----------



## waldy (18 November 2009)

Hallo,
habe Frage wegen Echtzeit von CPU ablesen.

Wie geht das Überhaupt richtig?

gruß


----------



## vierlagig (18 November 2009)

waldy schrieb:


> Hallo,
> habe Frage wegen Echtzeit von CPU ablesen.
> 
> Wie geht das Überhaupt richtig?
> ...



da ist so ein kleines display, siebensegmentanzeige, ne digitaluhr halt ... die alten modelle hatten noch analoge, aber die wurden leider abgeschafft ... jedenfalls, auf dieser kleinen anzeige kannst du die uhrzeit ablesen.
sollte deine cpu eine solche anzeige nicht haben, so hat sie auch keine interne uhr.


----------



## waldy (19 November 2009)

Habe aus FUP nach AWl in Ansicht umgeschaltet , mit Program bekomme ich jetzt Zeit:


```
/////NW1/////////////

      CALL  "READ_CLK"
       RET_VAL:=#rueckwert
       CDT    :=#datum_zeit
      NOP   0
 
 
///////////////NW2///////////7
 
CALL  "DT_DATE"
       IN     :=#datum_zeit
       RET_VAL:="Daten".datum
      L     "Daten".datum
      NOP   0

 
////////////NW3////////////////
 
 CALL  "DT_TOD"
       IN     :=#datum_zeit
       RET_VAL:="Daten".zeit
      NOP   0
```
 
Frage - wie kann man Uhrzeit vergleichen , das jede Stunde Zeit wird ein Merker gesetz ( z.B. für Daten jede Stunde in DB rein kopieren) .


----------



## Paule (19 November 2009)

waldy schrieb:


> Frage - wie kann man Uhrzeit vergleichen , das jede Stunde Zeit wird ein Merker gesetz ( z.B. für Daten jede Stunde in DB rein kopieren) .


Nein Waldy,

Du fragst die Minute "0" ab und bildest Dir damit einen Flankenmerker.
Der kommt dann jede Stunde einmal.


----------



## waldy (19 November 2009)

Hallo,
erlich gesagt - ich kopiere das nicht.
Kannst du bitte Beispiel schreiben?
gruß waldy


----------



## Paule (20 November 2009)

waldy schrieb:


> Hallo,
> erlich gesagt - ich kopiere das nicht.
> Kannst du bitte Beispiel schreiben?
> gruß waldy


 
Waldy der Anfang ist ja schon da.



waldy schrieb:


> ```
> /////NW1/////////////
> 
> CALL  "READ_CLK"
> ...


 
Und nun:

```
LAR1 P##datum_zeit
L B [AR1, P#4.0]  // Minuten auslesen
BTI  
L 0
==I
FP #Flanke
= #Stundenwechsel
```
Das ganze muss aber in einen FB rein.


----------



## waldy (20 November 2009)

Hi,
wenn in Aufgaben steht- machen Blinker.
Dann einfach am Ausgang z.B. A0.0 "1" setzten.
Und wenn Sie fragen- wo ist das Blinkteffekt- dann Sie müssen sagen:
" machen Sie Augen Zu und Auf , Zu und Auf" - und dann es blinkt 

Ok, das war bischen Spass 

Jetzt kommen wir zu Sache.
Ich kenne noch nicht AR Funktion, mit Zeiger kenne ich mich nicht aus.
Ich versuhce es bichen kommentieren, ob ich verstehe das Richtig :

```
LAR1 P##datum_zeit // - was lade ich hier auf ? Adresse oder Adresse mit Wort Inhalt  ?

L B [AR1, P#4.0]  // was mache ich hier mit diese Befehl ?

BTI  // umwandeln von BCD Code nach Int

L 0 // lade in Akku 1 "0"

==I //  vergleich Funktion

FP #Flanke // Positive Flanke

= #Stundenwechsel // OK
```
 
gruß waldy


----------



## Blockmove (20 November 2009)

```
LAR1 P##datum_zeit 

L B [AR1, P#4.0]
```
 
Variablen vom Type Date_And_Time kannst du nicht direkt bearbeiten.
Deshalb wird mit LAR1 P##datum_zeit die Anfangsadresse der Variablen datum_zeit ins Adressregister 1 geladen.
Mit L B [AR1, P#4.0] lädst du ein *B*yte vom der Adresse +4 (*P#4.0*) auf die das Adressregister* AR1  *zeigt.
Wenn du dir den Aufbau des Variablentyps Date_And_Time anschaust, dann siehst du, dass das die Minuten in BCD-Codierung sind.
Mit L B [AR1, P#5.0] könntest du die Sekunden auslesen.

Gruß
Dieter


----------



## waldy (20 November 2009)

Hi,
heute kann ich auf Idee, das ich habe Locale Speicher und habe irgendwie Problemme mit In_Out , zum Globalen Welt in mich Verbindung setzten 

 gruß waldy


----------



## waldy (25 November 2009)

Hi,



> LAR1 P##datum_zeit


 - damit zuweise mit Adressregiester 1 Anfangsadresse von "datum_zeit" .



> L B [AR1, P#4.0]


 - und hier habe ich nicht ganz verstanden.
a)Wird Summe in Adressregister_1 mit Ziffer 4 addiert ? 
Dann bekomme ich Nummer 4, und damit bekomme ich als Variable :
B 4 .
b) Oder das wird hingewiessen, aus Adressregister_1 nach Adresse Byt 4 - Daten auslesen?



Habe ich das richtig verstanden?

gruß waldy


----------



## Paule (25 November 2009)

waldy schrieb:


> - und hier habe ich nicht ganz verstanden.


Hallo Waldy,

das Adressregister zeigt auf die Anfangsadresse der Variable #datum_zeit. (wie Blockmove schön dokumentiert hat)
Da Du aber nur die Minuten willst, muss der Zeiger auf die richtige Adresse verschoben werden.
Darum wird der Zeiger um 4 Byte erhöht und ausgelesen.


----------



## waldy (1 Dezember 2009)

Guten morgen,
ich möchte euch fragen, wie Aktuel ist heute noch GRAPH 7 ?
Gibt s vielen Analgen, welche arbeiten mit GRAPH 7 und in welchle Bereichen wird Graph 7 benutz?

gruß


----------



## waldy (1 Dezember 2009)

Hi, was habe ich hier auf erste Blick in forum gefunden- ist keine Antwort für mich.

Anderes fragen- warum dann lernen Leute noch in SPs aufbaukurse S7 Graph 7, wenn für Graph S7 gibt s keine Anwendung in Praxis?

gruß waldy


----------



## Blockmove (1 Dezember 2009)

Sobald ich für eine Schrittkette mehr als 10 Schritte brauche, verwende ich grundsätzlich S7-Graph. 

Gruß
Dieter


----------



## waldy (1 Dezember 2009)

Hi,
und in Vergleich Graph 7 zum AWL b.z.w. FUP :
1 ) Arbeitsspeicher - muss Arbeitspeicher in CPU groß sein ?

2 )  Zykluszeit - bei mehrere Schritten in Graph 7 - Zykluszeit wird größer , als bei AWL oder nicht?
Ich meine , mit Graph 7 kann man nur Bänder steuern , oder Zyklus zeit ist kurz - und dann mit Graph 7  schnelere Anlage auch steuern?


gruß waldy


----------



## Blockmove (1 Dezember 2009)

waldy schrieb:


> Hi,
> und in Vergleich Graph 7 zum AWL b.z.w. FUP :
> 1 -Arbeitsspeicher
> 2 - Zycluszeit.
> ...


 
Arbeitsspeicher:
S7-Graph braucht deutlich mehr Arbeitsspeicher als eine simple Merkerkette oder Sprungliste. Die Mehrkosten sparst du aber in der Regel durch schnellere Programmierung und Inbetriebnahme.

Zykluszeit:
S7-Graph ist schnell. Liegt wohl irgendwo zwischen Sprungliste und Merkerkette. Bei meinen Anlagen hatte ich noch nie ein Zykluszeitproblem mit S7-Graph.

Gruß
Dieter


----------



## waldy (1 Dezember 2009)

> 1) S7-Graph braucht deutlich mehr Arbeitsspeicher als eine simple Merkerkette oder Sprungliste
> 2) S7-Graph ist schnell.


 - Danke für die ANtwort.

und wenn ich habe es Richtig verstanden, S7 Graph braucht in Vergleich zum AWL mehr speicher.
Ist aber dafür schneller als AWL ?

Habe ich das Richtig verstanden?
gruß waldy


----------



## Blockmove (1 Dezember 2009)

waldy;230489Ist aber dafür schneller als AWL ?
[/QUOTE schrieb:
			
		

> Schneller nicht. Aber nur unwesentlich langsamer.
> Gruß
> Dieter


----------



## waldy (8 Dezember 2009)

Hallo,
und in Graph 7 - wofür dient permanetne Operationen oben an Anfang und unter am Ende ?
Was wird da Normaleweise rein geschrieben?
gruß


----------



## waldy (6 Januar 2010)

Hi,

Frage 1:



> wenn ich schreibe in AWL:
> 
> L     MD   200
> L     P#600.0
> ...


 

Frage 2:



> wenn ich schreibe
> L MD 200
> L P#2.0
> +I
> ...


 
gruß


----------



## Paule (6 Januar 2010)

Hallo Waldy,

nur weil Du es in AWL so eingeben kannst (Syntax ist richtig) heißt es noch lange nicht dass es geht.

Und was Du da machst, geht in beiden Fällen nicht.
Du vergleichst ein Merkerwort ohne es ins Pointerformat zu bringen mit einem Pointer. 
Sprich Du vergleichst hier Äpfel mit Birnen.


----------



## waldy (6 Januar 2010)

> heißt es noch lange nicht dass es geht


 - doch Programm läuft ( auf Rack mit SPU300) .

Nur warum die Program funktioniert - verstehe ich nicht. Teoretisch muss nicht- nur Praktisch Programm läuft.

gruß waldy


----------



## rostiger Nagel (6 Januar 2010)

waldy schrieb:


> - doch Programm läuft ( auf Stend mit SPU300) .
> 
> Nur warum die Program funktioniert - verstehe ich nicht. Teoretisch muss nicht- nur Praktisch Programm läuft.
> 
> gruß waldy


 
Das geht glaube ich nicht

```
L MD 200
L P#600.0
==[COLOR=red]I[/COLOR][COLOR=black]  wenn schon dann ==D[/COLOR]
R M 5.1
```
 
und hier auch nicht

```
L MD 200
L P#2.0
+[COLOR=#ff0000]I[/COLOR][COLOR=black]  wenn schon dann +D[/COLOR]
T MD 200
```
 
im MD200 sollte dann die wert ein Pointer sein.


----------



## waldy (6 Januar 2010)

Hi,
das ist Programm:


```
OB35
-------------
 
//////////////NW1
 
AUF   DB     1
      U     M      5.1
      SPB   m001
      L     P#0.0
      T     MD   200
      BEA  
 
//////////////////NW2
 
m001: L     MW    20
      T     DBW [MD 200]
      L     MD   200
      L     P#2.0
      +I    
      T     MD   200
 
/////////////////NW3
 
L     MD   200
      L     P#600.0
      ==I   
      R     M      5.1
 
 
 
 
 
DB1
-----------------
 
       STRUCT
IW   [SIZE=1]ARRAY[1..300][/SIZE]
[SIZE=1]      INT[/SIZE]
[SIZE=1]      END_STRUCT[/SIZE]
 
 
 
OB1
 
///////////////// NW1
 
 CLR   
      =     M      0.0
      SET   
      =     M      0.1
 
//////////////////NW2
 
U     E      0.0
      FP    M      5.0
      S     M      5.1
 
 
/////////////////NW3
 
 U     M      5.1
      SPB   m001
      L     0.000000e+000
      T     MD    10
      T     MD   200                    //Pointer auf 0
      SPA   m002
m001: L     8.000000e+001
      T     MD    10
 
////////////////////NW4
 
m002: U     M      0.0
      =     L     20.0
      BLD   103
      CALL  "UNSCALE"  // FC106
       IN     :=MD10
       HI_LIM :=1.000000e+002
       LO_LIM :=0.000000e+000
       BIPOLAR:=L20.0
       RET_VAL:=MW88
       OUT    :=PAW752
      NOP   0
 
///////////////////NW5
 
L     PEW  754
      T     MW    20
      NOP   0
 
 
///////////////////NW6
 
U     E      0.7
      R     M      5.1
```
 
Das ist die Programm welche Funktioniert - obwohl Teoretisch muss nicht.
gruß


----------



## Paule (6 Januar 2010)

Waldy, Waldy!

Netter versuch! 
Sollte das ein Test werden oder was? 
Ich habe ja geschrieben das MD sollte im Pointerformat vorliegen.
Das Du das ja schon gemacht wusste ich ja nicht, Du solltest dann schon den ganzen Code rein schreiben.

Da hast Dir einen netten kleinen FILL Baustein geschrieben, gratuliere. 
Was soll der quatsch das in FUP zu machen. In FUP gibt’s glaub keine Pointer und wenn Du wirklich FUP brauchst dann kannst ja den original SFC21 (FILL) nehmen.

Übrigens:
Prüfe mal Deine Länge!
Willst Du 600 Datenwörter beschreiben?


----------



## waldy (6 Januar 2010)

Diese Programm muste in FUP geschrieben sein:



> L     MD   200
> L     P#600.0
> ==I
> R     M      5.1


 
Und in FUP P#600.0 läst sich nicht eingeben - kommt Fehlermeldung.

Nur wenn ich schreibe das erst in AWl und dann in Ansicht stelle auf FUP -dann ist alles OK. Und kommt keine Fehlermeldung..
Frage - warum kan man das nicht sofort in FUP schreiben lassen?


gruß waldy


----------



## waldy (14 Januar 2010)

Hallo,
habe wieder eine Frage.

Wo ist Unterschied zwischen :

1 - bei Loschen mit Programm "HW" , dann klicken auf "Urloschen"

oder 

2 -  wenn ich gehe in Online in erreichbare Teilnemer, in MP2 Adresse, dierekt rein, markiere da alles und lösche alle Datai und Systemdaten , dann Netzteil Aus und Ein.

Was wird gelöscht und was belibt auf MMC Karte drauf bei verschiedene Arten Löschen?


gruß waldy


----------



## waldy (27 Januar 2010)

Hi,
frage wegen WinCC.

Wo ist Unterschied zwischen:


> Dynamik Dialog


und


> Variable


 
Ich kann doch z.B. Schalter an bildschirm drauf einfügen und mit beide Möglichkeiten einstellen.

gruß waldy


----------

