Hallo,
ich halte die Lösung für bedenklich. Meiner Meinung nach kannst mit dem Programmcode
niemals auf eine Anlage losgehen. Probleme sind vorprogrammiert...
Was machst denn bei nem Drahtbruch?
Das Beispiel funktioniert auch nur sauber, wenn sich deine eingestellte Zeit immer innerhalb einer Zeitbasis befindet. Bei 0-20s z.B. hast schon n Problem.
Wenn du dann immer die Zeitbasis für deine "20mA" Zeit schreibst werden kleine Einstellungen sehr ungenau... Bei 0-1000s z.B. wird das Problem noch viel größer.
-> Es ist mehr Programmierung nötig, ansonsten hast meiner Meinung nach nur ne billige Bastellösung.
Ich persönlich würde die Analogwerte getrennt einlesen mit korrekter Fehlerauswertung, ggfs. Ersatzwertaufschaltung usw.
und dann anhand des eingelesenen Wertes die optimale Zeitbasis in einem separaten Fc berechnen und von dort die Zeit ausgeben (siehe Seite 1)
Schöne Grüße
L 2.345600e+04 // Wert bei Rechtsanschlg
T #Max
L 1.234000e+03 // Wert bei Linksanschlag
T #Min
-R
T #Max_Min
// L PEW 20
L 2222 // Angenommer INT-Wert aus Analogbaugruppe
DTR
L #Min
-R
T #Xe_Min
L 9.000000e+02 // Beginn der Formelberechnung
L #Xe_Min
*R
L #Max_Min
/R
L 1.000000e+02
+R
T #Ergebnis_in_ms // Ende der Formelberechnung
L 9.995000e+02 // Wandeln in gültigen Zeitwert
<R // Kann Ergebnis in 1/100s gewandelt werden?
SPB Hund // <-- ja
L #Ergebnis_in_ms // wenn nicht, dann in 1/10s wandeln
RND
DTR
L 1.000000e+01
/R
RND
DTB
L W#16#1000 // Zehntel Sekunden
OW
T MW 10
BEA
Hund :L #Ergebnis_in_ms
RND
DTB
T MW 10
Probiers einfach mal und melde dich wieder, kostet ja nix!
L 5.617300e+004 // Wert bei Rechtsanschlg
T #max
L 1.040000e+003 // Wert bei Linksanschlag
T #min
L #max
L #min
-R
T #max_min
L PEW 20
ITD
T MD 50
L 0
T MW 50
L MD 50
DTR
T MD 60
L MD 60
L #min
-R
T #xe_min
L 9.000000e+002 // Beginn der Formelberechnung
L #xe_min
*R
T #zwischenwert
L #zwischenwert
L #max_min
/R
L 1.000000e+002
+R
T #ergebnis_in_ms // Ende der Formelberechnung
L 9.995000e+002 // Wandeln in gültigen Zeitwert
<R // Kann Ergebnis in 1/100s gewandelt werden?
SPB Hund // <-- ja
L #ergebnis_in_ms // wenn nicht, dann in 1/10s wandeln
RND
DTR
L 1.000000e+001
/R
RND
DTB
L W#16#1000 // Zehntel Sekunden
OW
T MW 10
BEA
Hund: L #ergebnis_in_ms
RND
DTB
T MW 10
Und hier mal eine ausführlichere Darstellung der Befehlsfolge:
L PEW20 // Akku1 enthält den Zahlenwert im INT-Format
DTR // wandelt im Akku1 das INT-Format in das Real-Format, dieses belegt jetzt 32 Bit
L PEW20
ITD // [B]16 bit Integer nach 32 Bit GANZZAHL wandeln, nur dann stimmt ein negatives Vorzeichen ![/B]
DTR
Ergo, der Befehl ITD kann weggelassen werden, denn er ist nutzlos.
Die Feinheiten der SPS - Programmierung scheinen dir nicht mehr vermittelbar.
vom prinzip habt ihr beide recht.
wenn man es korrekt machen will ist das was ug schreibt richtiger.
Hätte ich nun (nur bezogen auf die vorliegende Aufgabe versteht sich) die Befehlsfolge ITD, DTR verwendet, dann hätte garantiert jemand festgestellt, dass der ITD-Befehl überflüssig ist und dies angemeckert.
Ich stimme dir zu, ich vesuche auch immer, es den Fragestellern korrekt darzulegen, gelingt natürlich nicht immer, ich wollte ja nie Lehrer werden, hab zu wenig Geduld dazuHallo,
ich melde mich gerne nochmal.
So wie Volker argumentiert, tut es richtig gut. Das hat Niveau!
In diesem Forum gibt es aber leider Leute, die grundsätzlich ein Haar in der Suppe finden wollen. Hätte ich nun (nur bezogen auf die vorliegende Aufgabe versteht sich) die Befehlsfolge ITD, DTR verwendet, dann hätte garantiert jemand festgestellt, dass der ITD-Befehl überflüssig ist und dies angemeckert.
Wenn man im Forum jemandem helfen will (kostenlos versteht sich), dann schreibt man ein Programm. Das ersetzt aber keine Unterrichtsstunde, in der man alle Besonderheiten ausführlich besprechen könnte. Falls der "Geholfene" dann noch Verständnisschwierigkeiten haben sollte, kann er das ja gerne posten. Dann würde ich ihm eine sachliche Erklärung nachliefern.
In einem Punkt habe ich leider keine Erfahrung nämlich:
Wenn ein externer Programmierer einem Auftraggeber ein Programm abliefert (Problem ist ja mit der vorliegenden Aufgabenstellung vergleichbar), inwieweit wird der Auftraggeber in die exakte Programmierstrategie (Befehl für Befehl) eingewiesen. Ich würde eher erwarten das gesagt wird:"Hier ist das Programm, es ist getestet, alles i.O. Die Aufgabe ist damit abgeschlossen". Heute 16:48
@ug
Sei nicht ungerecht, Fehler korrigieren ist ok, aber nicht persönlich werden (wenn schon, dann per pn oder bei uns im Chat (wo du ja nicht hinwillst/hintraust))
Ich persönlich bin über jeden froh, der helfen will und wenn er einen Fehler macht, kann ich glänzen, ist doch auch schick, oder?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?