diesteckdose
 

Zurück   diesteckdose > IT > Programmieren
Benutzername
Kennwort
Registrieren Hilfe Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren Forum Home

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1  
Alt 20.08.2013, 23:21
Frank12NR Frank12NR ist offline
Geerdeter
 
Registriert seit: 06.02.2007
Ort: Südhessen, mit Blick auf die p(f)älzer Heimat
Beiträge: 287
Funktion While-Schleife (in Step7)

Hallo zusammen,
ich bin gerade am Anfang einer Unterrichtsreihe über SCL in Step 7. Da sich SCL recht stark an andere Programmiersprachen annähert, habe ich, bevor ich groß mit meinem eigentlichen Problem (dann im SPS-Forum) aushole, erstmal eine Vorab-Frage um Missverständnisse meinerseits auszuschließen:

Stimmt das so:

Eine while-Schleife der Form "While Eingang=1 Do Ausgang=1" bewirkt, dass der Ausgang 1 ist, so lange der Eingang 1 ist. Wird der Eingang danach zu 0, wird auch der Ausgang zu 0.

Falls es nicht stimmt wäre es nett, wenn mir jemand meinen Fehler aufzeigen könnte.

Danke und Gruß,
Frank
Mit Zitat antworten
  #2  
Alt 21.08.2013, 10:00
Benutzerbild von Oberwelle
Oberwelle Oberwelle ist offline
Nie Auslernender
 
Registriert seit: 04.04.2005
Beiträge: 8.692
Moin Frank,

ich kenne die Siemens Befehle nicht,

bei Bosch hätte es so ausgesehen:

U E0.0
= A0.0

bewirkt das der Ausgang wie der Eingang gesetzt wird, insofern der Abschnitt auch durchlaufen wird..


U E0.0
S A0.0

bewirkt das der Ausgang gesetzt wird, bist der Befehl zum rücksetzten kommt ( R A0.0 )


Grüße OW
__________________
.
Ich kann über die Richtigkeit / Vollständigkeit meiner Angaben keine Gewähr übernehmen. Immer alle Vorschriften beachten !
Mit Zitat antworten
  #3  
Alt 21.08.2013, 13:33
Frank12NR Frank12NR ist offline
Geerdeter
 
Registriert seit: 06.02.2007
Ort: Südhessen, mit Blick auf die p(f)älzer Heimat
Beiträge: 287
Hi Oberwelle,
danke, aber mit AWL hat mein Problem nichts zu tun

Die Frage oben bezieht sich auf eine allgemeine While-Schleife, wie sie in ziemlich vielen Programmiersprachen möglich ist. Das konkrete Step7-Problem kommt dann im Anschluss.

Gruß,
Frank
Mit Zitat antworten
  #4  
Alt 21.08.2013, 17:55
Benutzerbild von MoaddiB
MoaddiB MoaddiB ist offline
Daywalker
 
Registriert seit: 27.06.2012
Beiträge: 297
Hallo Frank,
Schaue dir im Zweifelsfall einmal eine Pascal-Befehlsliste an.
Ich bin selbst noch nicht so weit dir da zu helfen,
die Befehle sollten aber alle an Pascal angelehnt sein
Mit Zitat antworten
  #5  
Alt 29.08.2013, 09:43
Bapho Bapho ist offline
Null-Leiter
 
Registriert seit: 28.08.2013
Beiträge: 46
Zitat:
Zitat von Frank12NR
Hallo zusammen,
ich bin gerade am Anfang einer Unterrichtsreihe über SCL in Step 7. Da sich SCL recht stark an andere Programmiersprachen annähert, habe ich, bevor ich groß mit meinem eigentlichen Problem (dann im SPS-Forum) aushole, erstmal eine Vorab-Frage um Missverständnisse meinerseits auszuschließen:

Stimmt das so:

Eine while-Schleife der Form "While Eingang=1 Do Ausgang=1" bewirkt, dass der Ausgang 1 ist, so lange der Eingang 1 ist. Wird der Eingang danach zu 0, wird auch der Ausgang zu 0.

Falls es nicht stimmt wäre es nett, wenn mir jemand meinen Fehler aufzeigen könnte.

Danke und Gruß,
Frank

Stimmt genau. Am Ende muß aber ein End_While hin, allerdings steigt dir dann die SPS mit Fehler Zyklusüberwachung aus, da die Schleife solange durchlaufen wird, wie Eingang = 1.
In der S7 Welt brauch man weit weniger Schleifen als sonst, da die Bausteine meist zyklisch aufgerufen werden, somit ist das auch immer bissle heikel.
__________________
Nüchtern betrachtet war es besoffen besser.
Mit Zitat antworten
  #6  
Alt 26.09.2014, 09:53
StreckerStefen StreckerStefen ist offline
Null-Leiter
 
Registriert seit: 25.09.2014
Beiträge: 3
Zitat:
Zitat von Frank12NR
Eine while-Schleife der Form "While Eingang=1 Do Ausgang=1" bewirkt, dass der Ausgang 1 ist, so lange der Eingang 1 ist. Wird der Eingang danach zu 0, wird auch der Ausgang zu 0.

vieleicht kann ich da als Informatiker weiterhelfen.
while bla=1 do blubb=3
heisst übersetzt:
solange bla 1 ist setzte blubb auf 3
Mit Zitat antworten
  #7  
Alt 30.03.2015, 23:02
Funkenschlosser Funkenschlosser ist offline
Geerdeter
 
Registriert seit: 24.06.2006
Beiträge: 348
Zitat:
Zitat von StreckerStefen
vieleicht kann ich da als Informatiker weiterhelfen.
while bla=1 do blubb=3
heisst übersetzt:
solange bla 1 ist setzte blubb auf 3

Was wiederum (mit Verlaub) "hinrissig" ist, denn es läuft auf eine Endlosschleife hinaus. Eine "sinnvolle" Schleife muss im Rumpf die Abbruchbedingung beeinflussen können, sonst ist das ganze Quatsch, außer Du willst das System bewusst reaktionsunfähig machen.

Sinnvoll wäre z.B.

Setze x auf 1
Solange x < 100
: x auf Drucker ausgeben
: x um 2 erhöhen
Ende

So ein Programm würde beispielsweise alle ungeraden Zahlen bis 100 ausdrucken. Nur weil x innerhalb des Schleifenrumpfes verändert wird, kann sich der Aussagewert der Abbruchbedingung (x < 100) über der Zeit ändern. Könnte er das nicht, hätte man eine Endlosschleife...

Funky
Mit Zitat antworten
  #8  
Alt 30.03.2015, 23:51
der Alphabetische
 
Beiträge: n/a
Zitat:
Zitat von Funkenschlosser
Was wiederum (mit Verlaub) "hinrissig" ist, denn es läuft auf eine Endlosschleife hinaus. Eine "sinnvolle" Schleife muss im Rumpf die Abbruchbedingung beeinflussen können, sonst ist das ganze Quatsch, außer Du willst das System bewusst reaktionsunfähig machen.
Das hier ist glaube ich deutlich "hinrissiger" (?) als das im Beitrag obendrüber.

Das was StreckerStefen geschrieben hat ergibt sehr wohl Sinn, z.B. wenn der Wert von bla von einem externen Signal beeinflusst wird. Oder wenn es auf dem System mehrere parallel ablaufende Threads gibt, die den Wert von bla beeinflussen können.
Mit Zitat antworten
  #9  
Alt 31.03.2015, 08:01
Bapho Bapho ist offline
Null-Leiter
 
Registriert seit: 28.08.2013
Beiträge: 46
Die Frage ist immer wozu die Schleife dient bzw. was ich womit programmieren will.
In der SPS muß man mit solchen Sachen höllig aufpassen, besser ist da eine for Schleife mit einer festgelegten Anzahl an Durchläufen. Die SPS läuft ja eh immer in einer Dauerschleife, da würde es dann auch ein
Code:
Ausgang1=: (Zahl = 1) AND Eingang1;

machen.
Solange die zwei Bedingungen gegeben sind wird der Ausgang true, ansonsten ist er false.
Wenn ich zbsp. von c# auf eine SPS zugreifen möchte und mir das selber stricken will muß ich die SPS dauerhaft pollen, dh. ich muß zu der SPS eine Verbindung aufbauen und dann immer wieder lesen, in einem separaten Thread ist das kein Problem und dann läuft da halt die Schleife solange ich eine Verbindung auf die SPS habe.
__________________
Nüchtern betrachtet war es besoffen besser.
Mit Zitat antworten
Antwort


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Heizstab Aufbau Funktion Skotty Elektroinstallation 34 13.10.2015 23:52
Zeitrelais - welche Funktion brauch ich? Teletrabi Elektroinstallation 10 27.08.2012 08:03
Produktwarnung vor Speedport Schwachstelle (WPS-Funktion) Alois Allgemeines Board 1 15.05.2012 20:57
step7 und Vista eah SPS-Forum 5 27.10.2008 16:33
Auslesen von Daten aus Step7 in Excel Fanatic Programmieren 2 08.02.2007 08:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:40 Uhr.


Powered by vBulletin Version 3.5.4 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.