s5time Multiplizieren

Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
...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 :ROFLMAO: )
 
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!
 
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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 ...
 
... dann bau ich dir (ggf. nachher) den Code-Schnipsel mal in AWL um - er sieht halt nur in SCL schöner aus ... ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Hallo Markus,

im Folgenden die beiden Wandler als AWL-Quelle :

Wandlung von Zeit [Sek.] nach S5Time :
Code:
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.] :
Code:
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
 
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
 
Zurück
Oben