# s5time Multiplizieren



## settelma (30 Mai 2011)

Hallo zusammen,

kann mir jemand sagen wie ich eine s5time multiplizieren kann. Ist das überhaupt möglich.

Ich will am Panel ( TP177a ) einen Wert einstellen ( z.B. 1 ). Dieser wert soll mit einem Umrechnungsfaktor ( z.B. 1,7 ) multipliziert werden. Dieses Ergebnis will ich dann als S5time an den Zeiteingang einer Einschaltverzögerung legen. Ich verwende eine S7 315.

Vielen Dank

Gruß Markus


----------



## bike (30 Mai 2011)

settelma schrieb:


> Hallo zusammen,
> 
> kann mir jemand sagen wie ich eine s5time multiplizieren kann. Ist das überhaupt möglich.
> 
> ...



Ja, auch dies geht.
Doch ist es einfacher wenn du einen IEC timer nimmst.(z.B.SFB4)
Beim s5t musst du auf die Skalierung des Timers manuell machen.
Der Wert muss BCD sein.
Du musst dir das Zahlenformat in der Hilfe genau anschauen, dann klappt auch dieses ;-)


bike


----------



## settelma (30 Mai 2011)

Kannst du mir das genauer erklären?

So funtioniert das nicht oder?

L DB100.DBW 0 // der einstellbare Wert am TP als int
L 1.700000e+000 // Multiplikationswert
*I 
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time
NOP 0


----------



## Paule (30 Mai 2011)

settelma schrieb:


> Kannst du mir das genauer erklären?
> 
> So funtioniert das nicht oder?
> 
> ...


Nein,
wenn dann vielleicht so:


```
L DB100.DBW 0 // der einstellbare Wert am TP als int
ITD
DTR
L 1.700000e+000 // Multiplikationswert
*[COLOR=red]R[/COLOR]
[COLOR=black]RND[/COLOR]
[COLOR=black]ITB[/COLOR]
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time
```
Aber bike's Vorschlag mit dem IEC Timer ist wirklich besser.
Dann kannst Du gleich alles in Millisekunden rechnen und nicht in dem umständlichen BCD Format.
Und man ist nicht so sehr bei der Zeit eingeschränkt.


----------



## bike (30 Mai 2011)

Paule schrieb:


> T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time



Fehlt da nicht noch die Skalierung in den Bits 12 und 13?
Da muss noch gerechnet werden.
Muss ein s5t verwendet werden?

Gehen tut nahezu alles, doch ob es Sinn macht? 


bike


----------



## settelma (30 Mai 2011)

Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär. Die S5t ist BCD Codiert oder?


----------



## IBFS (30 Mai 2011)

settelma schrieb:


> Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär. Die S5t ist BCD Codiert oder?



Ich wette, das in der S7-Hilfe der spezielle BCD-Aufbau von S5TIME beschrieben ist. 

Frank


----------



## bike (30 Mai 2011)

settelma schrieb:


> Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär. Die S5t ist BCD Codiert oder?



Ja, das ist es, doch bei der Multiplikation musst du beachten, wenn aus zentel auf einmal Sekunden oder 10 Sekunden als Ergebnis werden.

Welchen Zahlenrahmen haben die Eingaben?
Dann kann man ggF eine Funktion programmieren.


bike


----------



## settelma (30 Mai 2011)

Ich brauche nur Zeiten von ca. 0,3s bis 30s.
Gruß Markus


----------



## bike (30 Mai 2011)

settelma schrieb:


> Ich brauche nur Zeiten von ca. 0,3s bis 30s.
> Gruß Markus



Wenn du nun weißt, wie du die Zahlen eingeben willst, kannst du die Zahl umrechnen.
Die Integerzahl überprüfen welcher Zahlenrahmen benutzt wird.
Du kannst es als 10 in Bit 12 und 13 deklarieren, die Zeit aus Integer in BCD wandeln und an den Timer anschalten.
Du musst nur die Zahlen auf Gültigkeit und das gewandelte Ergebnis prüfen, wenn da ein Fehler drin ist geht die PLC auf Stopp.  

Alles geklärt?


bike


----------



## settelma (30 Mai 2011)

Na ja schau mer mal.

Ich versuchs mal.

Danke für die Hilfe.

Gruß Markus


----------



## settelma (30 Mai 2011)

bike schrieb:


> Wenn du nun weißt, wie du die Zahlen eingeben willst, kannst du die Zahl umrechnen.
> Die Integerzahl überprüfen welcher Zahlenrahmen benutzt wird.
> Du kannst es als 10 in Bit 12 und 13 deklarieren, die Zeit aus Integer in BCD wandeln und an den Timer anschalten.
> Du musst nur die Zahlen auf Gültigkeit und das gewandelte Ergebnis prüfen, wenn da ein Fehler drin ist geht die PLC auf Stopp.
> ...


 
Tja das funktioniert wunderbar bis zur Zahl 12. Ab 13 passen die Werte nicht mehr. Ich hab das mit dem Bit 12 und 13 noch nicht verstanden.

Kannst du mir das ( für Einsteiger ) nochmal erklären.

Danke 

Gruß Markus


----------



## bike (30 Mai 2011)

settelma schrieb:


> Tja das funktioniert wunderbar bis zur Zahl 12. Ab 13 passen die Werte nicht mehr. Ich hab das mit dem Bit 12 und 13 noch nicht verstanden.
> 
> Kannst du mir das ( für Einsteiger ) nochmal erklären.
> 
> ...



Die ersten 3 Nibble(4bit) beinhalten die Zahl im BCD Format.
Da kann Maximal 999 drin stehen.
Mit den beiden Bits, 12 und 13  wird skaliert.
00 = Zeitbasis 0,01s
01 = 0,1s
10 = 1 s
11 = 10s 

wenn du 0,3 sek hast, dann schaut das  Zeitwort so aus:
xx01 0000 0000 0101
Die beiden xx sind relevant 01 = skaliert auf 0,1 s und am ende die 3 sind hoffe ich klar.

Du nimmst eine Integerzahl und wandelst diese mit I_BCD?
Und was machst du dann?


bike


----------



## settelma (30 Mai 2011)

Ich habs so im Programm stehen.
Den DB100.DBW 2 lege ich direkt auf den Zeiteingang der Einschaltverzögerung.

L DB100.DBW 0 // der einstellbare Wert am TP als int
ITD
DTR
L 1.700000e+000 // Multiplikationswert
*R
RND
ITB
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time


----------



## bike (30 Mai 2011)

settelma schrieb:


> Ich habs so im Programm stehen.
> Den DB100.DBW 2 lege ich direkt auf den Zeiteingang der Einschaltverzögerung.
> 
> L DB100.DBW 0 // der einstellbare Wert am TP als int
> ...



Und was steht in dem DBW?
Zum skalieren musst du die Bits setzen
set
= db100.dbx12.0
clr 
= db100.dbx13.0
damit du auf die 0,1 sek Skalierung kommst.


bike


----------



## PN/DP (30 Mai 2011)

settelma schrieb:


> Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär.


Tip1: Wenn Du am Panel die Zeit unbedingt als S5TIME eingeben willst, dann kannst Du auch den Eingabewert mit FC33 S5TI_TIM in TIME# umwandeln, Deine Multiplikation machen und anschließend mit FC40 TIM_S5TI in S5TIME zurückwandeln (Standard Library > IEC Function Blocks).
Tip2: Ganzzahl-Multiplikation mit Runden: TIME# * 1,7 = (TIME# * 17 + 5) / 10

Harald


----------



## M-Ott (31 Mai 2011)

Skalieren kann das Panel eigentlich auch selbst:
In den Eigenschaften der Variablen gibt es unter "Eigenschaften" den Punkt "Lineare Skalierung". Da gibst Du bei "Anfangswert" auf beiden Seiten "0" ein und als "Endwert" bei "Steuerung" einen Wert ein, der 1,7-mal höher ist, als der, den Du bei "Bediengerät" eingibst.
In der Steuerung musst Du dann nichts mehr machen, da das Panel direkt die S5TIME skaliert, einschließlich der richtigen Zeitbasis.


----------



## settelma (31 Mai 2011)

Das mit der Skalierung funktioniert ja einwandfrei.

Habs gerade mal getestet. Und ich brauch keine Hand ans Programm zu legen.

Vielen Dank für den Tipp.

Hat das auch irgendwelche Nachteil.

Gruß Markus


----------



## bike (31 Mai 2011)

settelma schrieb:


> Hat das auch irgendwelche Nachteil.



Wenn da ein Fragezeichen stehen sollte, dann ja.
Denn es ist für jeden der das Programm nicht erstellt hat, wenn 10 eingegeben wird und mit 17 gearbeitet wird.
So etwas ist fatal und die schlechteste Lösung die ich mir vorstellen kann.
Was soll der arme Instandhalter oder nachfolgende Programmierer tun, wenn er nicht das gesamte Programm und die Visualisierung analysieren will/kann.

Jeder kann irgend etwas irgendwie verbiegen, doch ist das sinnvoll?



bike


Ps: es geht auch anders. Doch scheinbar ist die Bequemlichkeit mehr wert als gute Programme zu erstellen. 
Meine Meinung, das ist MIST!


----------



## settelma (31 Mai 2011)

Genau deshalb hab ich gefragt.
Das ist keine Sache von Bequemlichkeit. Ich hab das Programm mittlerweile auf IEC Timer umgestellt. Hab also jetzt beide Versionen. Für mich ist es aber sehr hilfreich um neue Sachen zu lernen. 

Nochmal zu der Geschichte mit den IEC Timern. Das hat noch nicht so richtig funktioniert.

Ich hab den Timer in einen FC gezogen und genauso angesteuert wie den Siemens Timer. An Ausgang Q einen Merker gesetzt den ich dann im Programm wie den Siemens Timer verschalten hab.
Allerdings hat mir der Timer den Merker nie gesetzt bzw. die Zeit ist nicht abgelaufen. Ich weiss wiedermal nicht an was das liegt. Ich habs so gemacht wie es in der Hilfe steht.

Noch ne andere Frage. Ich benötige 20 Timer. Muss dann wirklich für jeden ein eigener Datenbaustein erzeugt werden. Da bekommt man ja ganze Massen zusammen.

Gruß Markus


----------



## IBFS (31 Mai 2011)

settelma schrieb:


> Noch ne andere Frage. Ich benötige 20 Timer. Muss dann wirklich für jeden ein eigener Datenbaustein erzeugt werden. Da bekommt man ja ganze Massen zusammen.



Stichwort MULTIINSTANZ.

Wenn du die Timeraufrufe sowieso in einem FB hast, ist es ganz einfach.
Einfach im STAT-Bereich 

Verzoergerung_01  :  TON 
Verzoergerung_02  :  TON 
Verzoergerung_03  :  TON 
Verzoergerung_19  :  TON 
Verzoergerung_20  :  TON 

usw.  anlegen.

Im Programm ist dann nur noch   #Verzoergerung_1    anstatt dem DB anzutragen.

Frank


----------



## M-Ott (1 Juni 2011)

bike schrieb:


> Wenn da ein Fragezeichen stehen sollte, dann ja.
> Denn es ist für jeden der das Programm nicht erstellt hat, wenn 10 eingegeben wird und mit 17 gearbeitet wird.
> So etwas ist fatal und die schlechteste Lösung die ich mir vorstellen kann.
> ...
> Meine Meinung, das ist MIST!


Ich verstehe Deine Aufregung nicht.
Für genau so etwas gibt es doch Symbolkommentare.
Wenn man das im Symbolkommentar vermerkt, wo ist dann das Problem? Ist doch dann ganz klar und eindeutig erkennbar.


----------



## bike (1 Juni 2011)

M-Ott schrieb:


> Ich verstehe Deine Aufregung nicht.



Ich kenne nicht einmal das Wort das du erwähnst.
Ich bin es gewohnt nicht an irgendeiner Stelle einen Wert zu verändern, das nicht nachvollziehbar ist. Die PLC kann dies sehr gut und besser und nachvollziehbar.
Ich will nicht in einem WinCC flex Projekt mich einlesen und zu schauen, wie welcher Wert verbogen wird.

Wenn an x Stellen ein Wert berechnet, geändert oder sonst wie beeinflusst wird, ist das kein guter Stil.

Wenn du dies so machst, okay, doch ob es deshalb richtig und gut ist?
Nicht alles was möglich ist sollte auch gemacht werden.
Nach mir kommt immer wieder ein anderer Programmierer oder Instandhalter  und an den denke ich

bike


----------



## Verpolt (1 Juni 2011)

bike schrieb:


> ...Ich will nicht in einem WinCC flex Projekt mich einlesen und zu schauen, wie welcher Wert verbogen wird.
> 
> Wenn an x Stellen ein Wert berechnet, geändert oder sonst wie beeinflusst wird, ist das kein guter Stil.
> bike



*ACK*

Allerdings:

Wieso gibt es die lineare Skalierung in WinCCflex?
Wozu gibt es Referenzdaten, Netzwerk und Symbolkommentare?
Warum sind viele Panels scriptfähig?
Warum kann man z.B. Analogwerte in einem Frequenzumrichter / Servoregler skalieren? (nicht standalone)
Ich denke, das kann man nicht einfach pauschalisieren. Hängt auch sehr vom Pflichtenheft des Kunden ab. (Wobei da die Skalierung da kleinste Übel ist   )


----------



## Jochen Kühner (1 Juni 2011)

*Skalierung...*

Ich sehe die skallierung in Flex auch nicht als Problem, da man in der SPS ja immer noch sieht was abläuft (Ich sehe ja genau welche zeit in dem Datenwort steht, und diese wird dann auch benutzt). Ob diese nun in Flex anderst dargestellt wird, ist ja meinem SPS Programm egal!


----------



## rostiger Nagel (1 Juni 2011)

die Skallierung in der HMI ist doch genau für diese zwecke vorhanden, also
warum nicht nutzen. Es spricht nichts dagegen.


----------



## bike (1 Juni 2011)

Warum in der HMI skalieren, wenn es die PLC besser und übersichtlicher kann?
Wenn ein Wert als 1 sek eingegeben wird, dann sind das für mich 1 sek und nicht 1,7 sek, ganz einfach.
Ich finde die Fehler und Probleme, egal wo welcher Wert wie verändert wird.
Doch ich denke an die Kunden und deren Instandhalter.

Nicht alles was machbar ist, ist auch gut.


bike


----------



## rostiger Nagel (1 Juni 2011)

Also ich verstehe mal wieder dein Problemm nicht, mit so einen Firlefanz kann
mann die Steurung endlasten und seinen Code übersichtlicher gestalten.
Es könnte ja auch eine Anwendung geben wo eine Vielzahl von eingaben
vorhanden sind sagen wir mal 500 Timer, dann brauche ich doch nicht
umbedingt die Steuerung damit belasten.

Wenn es Dokumentiert ist, über Baustein, Netzwerk oder Zeilenkommtar, 
sollte jeder damit klar kommen, wenn nicht, hat er nichts vor einen Programmier
Gerät zu suchen.


----------



## Larry Laffer (1 Juni 2011)

Eigentlich wollte ich mich ja nicht hier mit reinhängen ... aber nun ...

Ich muß Bike hier voll zustimmen. Ich selbst bin auch ein großer Verfechter davon, die Werte (von was auch immer) nicht in kryptischen Inkrementen sondern in der jeweils benötigten und am Besten auch noch in einer nach dem SI-Einheitensystem darzustellenden Form (auch) in der Steuerung zu haben. Will ich mit mm arbeiten, dann errechne ich mir die und arbeite damit. Wenn ich in Industriestunden (oder -Minuten) rechnen/arbeiten will dann gilt das Gleiche. Für die Lineare Skalierung habe ich bislang noch keinen sinnvollen Einsatzfall gehabt.

Und zum Thread : man kann sich eine S5Time auch in einen Zeitwert (auch als Realzahl) umrechnen, damit rechnen und dann wieder in S5Time zurückrechnen - das ist nicht schwierig ...

Gruß
Larry


----------



## M-Ott (1 Juni 2011)

Leute, Leute...
Ein großer Teil der Teilnehmer hier (wahrscheinlich auch Ihr beide, Larry und bike) verwendet in seinen Programmen indirekte Adressierung und Schleifen, wahrscheinlich sogar beides auf einmal: indirekte Adressierung in Schleifen.
DAS sind teilweise kryptische Elemente und das sind auch Dinge die man anders lösen könnte, es aber der Einfachheit halber nicht tut.


----------



## bike (1 Juni 2011)

M-Ott schrieb:


> Leute, Leute...
> Ein großer Teil der Teilnehmer hier (wahrscheinlich auch Ihr beide, Larry und bike) verwendet in seinen Programmen indirekte Adressierung und Schleifen, wahrscheinlich sogar beides auf einmal: indirekte Adressierung in Schleifen.
> DAS sind teilweise kryptische Elemente und das sind auch Dinge die man anders lösen könnte, es aber der Einfachheit halber nicht tut.



Das eine hat doch mit dem anderen nichts zu tun.
Und im Ernst, skaliere doch was und wo du willst.
Ich finde es eben nicht sauber und richtig, im flex dies zu tun.


bike


----------



## settelma (1 Juni 2011)

Ich wollte hier ja kein Feuer entfachen. Ich hab einfach zu wenig Erfahrung damit. Aber es ist echt interessant die verschiedenen Meinungen zu hören. Ich denke die Programmiererei ist ziemlich individuell. 

Jetzt aber nochmal zu eigentlichen Thema.

Larry, kannst du mir bitte ( möglichst genau ) schreiben oder erklären wie das mit dem umrechnen funktioniert. Ich hab das skalieren im Flex ausprobiert und es funktioniert, will aber die andere Sache mit umrechnen auch noch ausprobieren.

Danke

Gruß Markus


----------



## Larry Laffer (1 Juni 2011)

M-Ott schrieb:


> Leute, Leute...
> Ein großer Teil der Teilnehmer hier (wahrscheinlich auch Ihr beide, Larry und bike) verwendet in seinen Programmen indirekte Adressierung und Schleifen, wahrscheinlich sogar beides auf einmal: indirekte Adressierung in Schleifen.
> DAS sind teilweise kryptische Elemente und das sind auch Dinge die man anders lösen könnte, es aber der Einfachheit halber nicht tut.


 
Sorry ...
Indirekte Adressierung selten und Schleifen in AWL gar nicht - nur in SCL - und da sind die nicht kryptisch ...


----------



## Larry Laffer (1 Juni 2011)

settelma schrieb:


> Ich Larry, kannst du mir bitte ( möglichst genau ) schreiben oder erklären wie das mit dem umrechnen funktioniert.


 
Hallo Markus,
kannst du mit SCL-Code etwas anfangen ?
Wenn ja, dann habe ich für beide Richtungen je ein Script.

Gruß
Larry


----------



## settelma (1 Juni 2011)

Mit SCL hab ich noch nichts gemacht.

Wie gesagt, ich steh immernoch am Anfang und bin bei FUB und AWL.

Gruß Markus


----------



## Larry Laffer (1 Juni 2011)

... dann bau ich dir (ggf. nachher) den Code-Schnipsel mal in AWL um - er sieht halt nur in SCL schöner aus ...


----------



## settelma (1 Juni 2011)

Alles klar

Danke


----------



## PhilippL (1 Juni 2011)

settelma schrieb:


> Ich wollte hier ja kein Feuer entfachen. Ich hab einfach zu wenig Erfahrung damit. Aber es ist echt interessant die verschiedenen Meinungen zu hören. Ich denke die Programmiererei ist ziemlich individuell.



Hi,

ich gebe jedoch zu Bedenken, dass ein guter Programmierer sich von einem anderen darin unterscheidet wie gut sein Programm strukturiert und kommentiert ist. Will heißen wenns auch der Instandhalter und/oder Kollege versteht und es klar und verständlich gemacht ist dann ist der Herr Programmierer für mich ein guter Programmierer. Was hilft es wenn das Programm nur 200 AWL Zeilen hat und ich ca. 20 Stunden brauch bis ich versteh was gemacht wird wenn es doch auch in ein paar KOP/FUP Netzwerken schöner anzuschauen und für mein Verständnis besser zu verstehen ist.

Aber jetzt back to topic...

Ich seh es leider genauso wie Bike... Skalierungen gehören ins SPS-Programm und wenn mir einer sagen will "wieso die CPU belasten" mit ein Paar Code Zeilen die CPU belasten... ja ne is klar!

Gruß

PhilippL


----------



## Larry Laffer (1 Juni 2011)

Hallo Markus,

im Folgenden die beiden Wandler als AWL-Quelle :

Wandlung von Zeit [Sek.] nach S5Time :

```
FUNCTION FC 501 : VOID
VAR_INPUT
  Zeit_s : REAL ; 
END_VAR
VAR_OUTPUT
  Zeit_S5T : S5TIME ; 
END_VAR
VAR_TEMP
  Zeit_DInt : DINT ; 
  iFaktor : INT ; 
  iZeit : INT ; 
END_VAR
BEGIN
NETWORK
TITLE =Zeit in Millisekunden wandeln
      L     #Zeit_s; 
      L     1.000000e+003; 
      *R    ; 
      RND+  ; 
      T     #Zeit_DInt; 
NETWORK
TITLE =überprüfen ob Zeitwert im legalen Bereich für S5Time
      L     #Zeit_DInt; 
      L     10; 
      >=D   ; 
      SPB   Chk2; 
      L     10; 
      T     #Zeit_DInt; 
Chk2: L     #Zeit_DInt; 
      L     L#9990000; 
      <=D   ; 
      SPB   ChkX; 
      L     L#9990000; 
      T     #Zeit_DInt; 
ChkX: NOP   0; 
NETWORK
TITLE =umrechnen
      L     #Zeit_DInt; 
      L     9990; 
      <=D   ; 
      SPBN  Tx1; 
      L     0; 
      T     #iFaktor; 
      L     #Zeit_DInt; 
      L     10; 
      /D    ; 
      T     #iZeit; 
      SPA   TxX; 
Tx1:  L     #Zeit_DInt; 
      L     L#99900; 
      <=D   ; 
      SPBN  Tx2; 
      L     1; 
      T     #iFaktor; 
      L     #Zeit_DInt; 
      L     100; 
      /D    ; 
      T     #iZeit; 
      SPA   TxX; 
Tx2:  L     #Zeit_DInt; 
      L     L#99900; 
      <=D   ; 
      SPBN  Tx3; 
      L     2; 
      T     #iFaktor; 
      L     #Zeit_DInt; 
      L     1000; 
      /D    ; 
      T     #iZeit; 
      SPA   TxX; 
Tx3:  L     3; 
      T     #iFaktor; 
      L     #Zeit_DInt; 
      L     10000; 
      /D    ; 
      T     #iZeit; 
TxX:  NOP   0; 
NETWORK
TITLE =umformen
      L     #iFaktor; 
      SLW   12; 
      L     #iZeit; 
      ITB   ; 
      OW    ; 
      T     #Zeit_S5T; 
END_FUNCTION
```
 
Wandlung von S5Time nach Zeit [Sek.] :

```
FUNCTION FC 502 : VOID
VAR_INPUT
  Zeit_S5Tx : S5TIME ; 
END_VAR
VAR_OUTPUT
  Zeit_s : REAL ; 
END_VAR
VAR_TEMP
  Zeit_DInt : DINT ; 
  iFaktor : INT ; 
  iZeit : INT ; 
END_VAR
BEGIN
NETWORK
TITLE =Zeit in Millisekunden wandeln
      L     #Zeit_S5Tx; 
      L     W#16#FFF; 
      UW    ; 
      BTI   ; 
      L     10; 
      *I    ; 
      T     #Zeit_DInt; 
      L     #Zeit_S5Tx; 
      SRW   12; 
      T     #iFaktor; 
NETWORK
TITLE =umrechnen
      L     #iFaktor; 
      L     1; 
      >=I   ; 
      SPBN  Tx2; 
      L     #Zeit_DInt; 
      L     10; 
      *D    ; 
      T     #Zeit_DInt; 
Tx2:  L     #iFaktor; 
      L     2; 
      >=I   ; 
      SPBN  Tx3; 
      L     #Zeit_DInt; 
      L     10; 
      *D    ; 
      T     #Zeit_DInt; 
Tx3:  L     #iFaktor; 
      L     3; 
      >=I   ; 
      SPBN  TxX; 
      L     #Zeit_DInt; 
      L     10; 
      *D    ; 
      T     #Zeit_DInt; 
TxX:  NOP   0; 
NETWORK
TITLE =umformen
      L     #Zeit_DInt; 
      DTR   ; 
      L     1.000000e+003; 
      /R    ; 
      T     #Zeit_s; 
END_FUNCTION
```
 
Gruß
Larry


----------



## IBFS (1 Juni 2011)

Larry Laffer schrieb:


> Ich muß Bike hier voll zustimmen. Ich selbst bin auch ein großer Verfechter davon, die Werte (von was auch immer) nicht in kryptischen Inkrementen sondern in der jeweils benötigten und am Besten auch noch in einer nach dem SI-Einheitensystem darzustellenden Form (auch) in der Steuerung zu haben.



Ich habe bisher maximal die Kommaverschiebung in den Panels verwendet.

Heutzutage muss man auch keine SPS mehr "entlasten".

Ich will im Prinzip das in der VAT (ach ne, heißt jetzt Beobachtungsliste) sehen,
was auch im Panel steht - WEIL - wenn du später mal auf die Daten der SPS 
direkt mittels OPC zugreifen willst, dann mußt du dort auch noch herumbasteln 
und linear skalieren. Das ist doppelter Mist.

Daher gilt für mich - Lineare Skalierung im Panel nur im absoluten Notfall.

Frank


----------



## Jochen Kühner (1 Juni 2011)

bike schrieb:


> Das eine hat doch mit dem anderen nichts zu tun.
> Und im Ernst, skaliere doch was und wo du willst.
> Ich finde es eben nicht sauber und richtig, im flex dies zu tun.
> 
> ...



Und ich finde es unötig dies auf der Sps zu tun, wenn es in flex dafür ne tolle möglichkeit gibt! Es kann ja auch sein du hast in flex mehrere felder für den gleichen wert, einmal als z.B. Stunden und einmal als minuten, beides zum eingeben, dann kannst du es mit zwei variablen auf den gleichen wert welche skaliert sind am einfachsten lösen.

Aber dies sind halt unterschiedliche Ansichten.


----------



## bike (1 Juni 2011)

Jochen Kühner schrieb:


> Und ich finde es unötig dies auf der Sps zu tun,...



Das stimmt bis zu einem gewissen Punkt.
Wir haben an einem Projekt ca 4 Monate nach einem Fehler gesucht.
Der KUnde schrieb: wir geben 10m/min ein, es werden aber 10,2 m/min angezeigt.
Jetzt war guter Rat teuer.
Das Ergebnis: in der Visualisierung wurde bei der IB der Umrechenfaktor geändert, die Weiterverarbeitung in PLC und die Anzeige der Ergebnisse wurde nicht angepasst.
Und wer ist jetzt schuld?

Daher finde es nicht gut, wenn Werte,  die in der PLC be- und verarbeitet werde, wo anders als in eben dieser berechnet und skaliert werden.

Es ist Ansichtssache, doch was wird gemacht, wenn die selbe Funktion ohne HMI im Programm verwendet wird?
Ich habe keine Lust Funktionen zu schreiben und zu warten, einmal mit HMI und verbiegen und einmal ohne HMI.
Wenn ihr es anders macht, gerne. Das ist euer Programm.

Die Frage war, was gegen das Skalieren spricht und das habe ich versucht zu schrieben. 


bike


----------



## settelma (3 Juni 2011)

Danke für den Programmteil Larry.

Ich versuch jetzt mal beide Möglichkeiten und schau was mir besser gefällt.
Wie gesagt bin ich ( leider ) immernoch Anfänger und will nur dazu lernen.

Gruß Markus


----------

