Wert 0-1000 dividieren und als Druck 0-6bar ausgeben

Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht voll in meine Richtung, ich komm auch mit Hochsprache zurecht, aber ich muss an die nachfolgenden Monteure denken, die mit dem von mir geschaffenen programmen noch mehrere Jahre bis Jahrzehnten zurecht kommen müssen. Ich kann nicht vorraussetzen dass die mit einer "Hochsprache" zurechtkommen.

Meiner Meinung nach ist es wichtig dass derjenige der das Programm schreibt auch an die der jeweiligen Umgebung angepasste vorraussichtlichen Wartungsleute denkt.

(das sind leider nicht in allen Fällen 1a Leute sonder Leute von der Stange (eben teilweise "Blitzer")).
Aber wenn der Programmierer mitdenkt und entsprechend vorsorgt
(und das seh ich auch in der Anwendung von größtenteils FUP, (warum wird in der Sicherheitsgerichteten Anwendung FUP vorrausgesetzt, das hat schon seine Berechtigung))
und in seinem Programm auch noch entsprechende Kommentare einbaut, dann wird auch in der Zukunft ein einfacher Monteur noch mit der Programmdoku enträtseln können was die Steuerung machen soll, bzw. warum sich nicht das entsprechende macht.

PS: bin selber kein Ing. und bei uns gibt es auch keinen einzigen Ing. der sich mit SPS und Speziell mit S7 beschäftigt, Programmierer sind alle im Selbststudium ausgebildet, bzw einige wenige haben bei Siemens eine Grundlagenausbildung gemacht. Jedoch sind alle die mit der Programmierung vertrauten Leute direkt mit dem Prozess Vertraut (meist seit dem 2. Lehrjahr ihrer Ausbildung), das unterscheidet wahrscheinlich die Ansicht der reinen "Programmierer" in diesem Forum von dieser Sichtweise.
 
Zuletzt bearbeitet:
die mit dem von mir geschaffenen programmen noch mehrere Jahre bis Jahrzehnten zurecht kommen müssen.

Meiner Meinung nach ist es wichtig dass derjenige der das Programm schreibt auch an die der jeweiligen Umgebung angepasste vorraussichtlichen Wartungsleute denkt.

(das sind leider nicht in allen Fällen 1a Leute sonder Leute von der Stange (eben teilweise "Blitzer")).
Das widerspricht sich aber ein bisschen.
Wer weiß was die Leute in "Jahrzehnten" über Dein Programm sagen?
"Mann, war das ein Anfänger" oder "Nach Stand der Technik zu diesem Zeitpunkt, plausible Lösung".
Denk mal dran wie unsere Programme vor 10 Jahren ausgeschaut haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja, hab an diesen Programmen zu lernen angefangenm daher komt mein Input, gab "solche und ander Programmierer", bei den einen fandest du relativ schnell rein, bei denen die nur in AWL (und das vergleiche ich heute fast mit den Hochsprachen) alles ohne Kommentarge progt haben, da brauchte Stunden bis wochen bis du kapiert hattest, was da abläuft
 
WOW ... wollte eigentlich nicht so eine Grundsatzdiskussion auslösen :ROFLMAO: sondern nur eine Lösung für mein Problem.

Das habe ich gefunden und hoffe das ich so auch die Werte später in der Visual. richtig angezeigt bekommen kann.

Sitze nun am FB für das MID, benötige da keine Megafunktionen sondern nur den aktuellen Durchflusswert, lese mich bissel in die Unterlagen rein und falls ich wieder hänge muss ich euch nochmal um Hilfe bitten :) werde es jetzt aber so machen, dass ich Berechnungen in AWL schreibe und mir versuche das auch anzueignen. ich denke mit meinen nur grundlegenden Kenntnissen wird mein Programm eh keine Augenweide ... :rolleyes:
 
@ A-n-d-y

diese Grundsatzdiskussion findet alle paar Wochen mit immer dem gleichen Ergebnis statt.
Mach die keine Sorgen, da kannst du nix für.

peter(R)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal schnell zurück zu seinem eigentlichen Prob

Da hast Du dann aber 0,1,2,3,4,5,6 als Anzeige.... keine Kommstellen.

Wenn Du den Int Wert vorher in Real wandelst schauts schon besser aus...

Code:
L P_INT //Druck Integer
DTR //Wandelt DINT in Real
L 166.6
/R
T P_Real //Druck Real 0-6 bar

lG
Karl

Warum hat er da nur 1,2,3,4 usw.

Du wolltest in deiner Anzeieg x,xx bar. Dann skaliere deinen Wert einfach nicht auf 0-6 Bar sondern auf 0-600. Im bedienteil also in deiner WinCC flex anzeige gibts du dann die Variable an und wo du das komma haben willst. Damit machst du dann aus var: 600 -> Anzeige: 6,00

Nur weil du ein Komma Anzeigen willst brauchst du nicht gleich eine REAL zahl. Und somit kannst du wie schon erwähnt mit FC 105/106 arbeiten.
 
Hmmm ... also ich verstehe vom Sinn her beide Ausführungen, das sind doch dann 2 Lösungswege die zum Ergebnis führen, oder?
Gibt es da jetzt bestimmte Vorteile an dem zweiten Weg oder am ersten Weg der einer der beiden Wege bevorzugt? (rein fürs Verständis)
 
Hallo,

Ich würde das Ganze mit FC106 verkuddeln. (Auflösen ohne Komma)

Da hast als Ergebnis eine Ganzzahl.
Die läßt sich auch "einfacher" Handhaben (keine Rundungsfehler...)
Komma in Flex verschieben und fertig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jop, sind zwei verschiedene.

Der eine geht davon aus das du "richtige" Kommazahlen anzeigst und damit Rechnest, also in REAL.

Der andere Rechnet einfach mit den Werten ohne Komma und mit Ganzzahlen und schiebt das Komma dann einfach in der Visu dazwischen.

Es wird immer mehr als einen Lösungsweg geben. Und es wird immer so sein das es Vor- und Nachteile gibt bzw. sich einer besser eignet als der andere. Aber leider ist das wie mit der Kunst oder Essen - geschmecker sind verschieden (Ohne jetzt unsere Lieblingsdiskussion anfangen zu wollen *ROFL*)
 
So dann hab ich das jetzt mal gemacht bzw probiert habe jetztnoch ein paar Fragen:

also

Code:
L P_int // Laden des Druckwertes 0-1000
ITD // von INT auf DINT wandeln
DTR // von DINT zu Real wandeln
T P_real // schreiben des gewandelten Werts in MD
meine Fragen nun zum FC106 stimmt das so?:

Code:
EN // was muss hier stehen, eine 1 oder?
IN // P_real aus MD
HI_LIM // 6.000000e+002
LO_LIM // 0.000000e+000
BIPOLAR // False also eine 0, oder?
RET_VAL // ???????? keine Ahnung, was muss hier hin?
OUT // das ist das Ergebnis, kann ich dieses in ein MW schreiben um mit es mit Flex anzuzeigen? der nimmt nur ein AW kein MW


Sind sicherlich Anfängerfragen die mich aber vor ein Problem stellen :confused:
 
in RET_VAL gibt der FC wenn nötig eine Fehlermeldung aus.
Also irgendein MW (freies natürlich) hinschreiben.

Ins OUT kann man alles mögliche reinschreiben solange es INT ist MW, DBxx.DBWxx, theoretisch auch AW (macht aber wenig Sinn). Bei mir eigentlich immer DBxx.DBWxx weil Daten gehören eigentlich in einen DB.

bei EN braucht nix zu stehen, dann wird er immer abgearbeitet (bei jedem Zyklus).

peter(R)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab mir gerade deinen ersten Beitrag nochmal genau durchgelesen.. du willst ja gar nicht das Eingangswort direkt abfragen sondern hast ja schon einen Wert von 0-1000 und das als WORD wenn ichs nun endlich verstanden hab.

SCALE und UNSCALE also FC105 und FC106 sind im wesentlichen dazu da EW bzw. AW auf die Wertebereiche der Analogen Ein-Ausgabe-Baugruppen zu skalieren bzw zurückzurechnen.

Solltest du den Richtigen Druckwert schon in der Steuerung brauchen würd ich ihn mir einfach errechnen, aber eben Auf alle Stellen die ich brauche ohne Komma.

Der wert 0-1000 * 6 / 10 = Variablen Wert = Anzeigewert(Komma mit drin)

z.B
Sensorwert: 100 = 100 * 6 / 10 = var_wert: 60 = Anzeigewert: 0,60
Sensorwert: 500 = 500 * 6 / 10 = var_wert: 300 = Anzeigewert: 3,00
Sensorwert: 1000 = 1000 * 6 / 10 = var_wert: 600= Anzeigewert: 6,00

Hier fällt dann natürlich gleich auf das durch das gerechne eine gewisse Auflösung aufkommt die du nicht mehr umgehen kannst. Was bei REAL nicht so wäre.

Wenn du in der Steuerung auch mit dem 0-1000 Rechnen kannst dann:
würd ich einfach die Liniare Skalierung im WinCC flex aktivieren. Die findest du wenn du die Variable schon angelegt hast unter im in den Variableneigenschaften. Dazu gehst du im Übersichtsbaum auf Kommunikation -> Variablen -> suchst deine Variable raus -> Rechtsklick eigenschaften -> eigenschafte -> Liniare Skalierung. Dors stellst du unter Steuerung 0-1000 ein und unter Bediengerät 0-600. Und in der Anzeige stellst du noch ein das die Dezimalstelle um 2 stellen verschoben ist.

fertisch.
 
Zuletzt bearbeitet:
Morgen,

ja genau, ich habe den Drucksensor an einer Aumatic Steuerung, die mit Profibus angesprochen wird, der Drucksesnor ist aber analog 4-20mA, die Steuerung selbst verarbeitet das Signal und gibt es mir auf 2 Byte als Promille Wert von 0-1000 aus über Profibus aus. Also der Wert wird intern in der Steuerung verarbeitet. Ich muss diesen dann nur noch so anpassen das die 0-1000 auf 0-6bar Arbeitebereich des Drucksensors ausgegeben werden.

deshalb meine Idee am Anfang einfach zu dividieren um auf 0-6 zu kommen. Da ich nun aber gelesen habe das ich das auch bei FLEX einstellen kann, werde ich es auf 0-600 rechnen.

DANKE .., schonmal

Kurze Frage noch, ich hab ja mehrere Baustellen, also mehrere Geräte die ich ansprechen muss wie z.B. ein MID soll ich dafür nen neuen Thread aufmachen damit auch andere ihn finden können oder soll ich weiter hier posten wenn ich noch Fragen hätte?
 
Ich würde einen neuen aufmachen, da man sonst aus der Überschrift nicht mehr ersehen kann um was es geht und mancher gar nicht reinschaut obwohl er zum aktuellen Thema durchaus was sagen könnte.

peter(R)
 
Zurück
Oben