schönes Programmieren - was passt in einen Zyklus?

LittleJack86

Level-1
Beiträge
44
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie viele Anweisungen kann ich in einem Zyklus abarbeiten lassen, so dass es noch ein "schönes" Programm ist? Zykluszeitmäßig ist ja einiges möglich.

Speziell stellt sich mir gerade diese Frage bei einer S7-300 (314C-2DP).
Ich speichere täglich einen Messwerte in einem DB, also je Tag ein DW. Beim Jahreswechsel kopiere ich alle Werte in einen zweiten Bereich um. Aufgrund der Programmierung sind das 372 Werte (Doppelworte) welche ich verschiebe und etwas mehr als doppelt so viele welche bearbeitet werden.
Nun zykluszeitmäßig lässt sich das Ganze in einem Zyklus bewerkstelligen, nur ist das auch "schön"?
Irgendwie habe ich leichte bedenken.

Würde mich sehr über eure Hilfe freuen!

Gruß
Florian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie viele Anweisungen kann ich in einem Zyklus abarbeiten lassen, so dass es noch ein "schönes" Programm ist? Zykluszeitmäßig ist ja einiges möglich.

Speziell stellt sich mir gerade diese Frage bei einer S7-300 (314C-2DP).
Ich speichere täglich einen Messwerte in einem DB, also je Tag ein DW. Beim Jahreswechsel kopiere ich alle Werte in einen zweiten Bereich um. Aufgrund der Programmierung sind das 372 Werte (Doppelworte) welche ich verschiebe und etwas mehr als doppelt so viele welche bearbeitet werden.
Nun zykluszeitmäßig lässt sich das Ganze in einem Zyklus bewerkstelligen, nur ist das auch "schön"?
Irgendwie habe ich leichte bedenken.

Würde mich sehr über eure Hilfe freuen!

Gruß
Florian

Was verstehst du unter "schön" ?

Wenn du kein Problem mit der Zykluszeit bekommst, ist das doch in Ordnung.
 
Also NEIN, eigentlich ist es kein Problem.
Dennoch versuche ich alles eher Ressourcen schonend zu programmieren.
(Bekomme ich eh manchmal Kopfschmerzen davon :ROFLMAO:, mache mir schon immer sehr viele Gedanken über den Code)
Ich wollte eher nur mal wegen grundsätzlicher Anhaltspunkte nachfragen, sozusagen Richtwerte welche man nach Möglichkeit nicht überschreiten sollte.

Ich habe das Programm als FB geschrieben um es flexibel einsetzen zu können, wodurch man den FB somit auch für 20Messwerte verwenden könnte, wo es dann vermutlich schon zu Zeitproblemen kommen würde. Verwendet wird er aktuell nur für einen Messwert und somit ist es auch kein Problem.
 
...Ich habe das Programm als FB geschrieben um es flexibel einsetzen zu können, wodurch man den FB somit auch für 20Messwerte verwenden könnte, wo es dann vermutlich schon zu Zeitproblemen kommen würde. Verwendet wird er aktuell nur für einen Messwert und somit ist es auch kein Problem.

Ab wann ist bei dir ein Zeitproblem vorhanden?

1 Messwert -- Zykluszeit ~4ms
20 Messwerte -- Zykluszeit ~6ms
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also NEIN, eigentlich ist es kein Problem.
Dennoch versuche ich alles eher Ressourcen schonend zu programmieren.
(Bekomme ich eh manchmal Kopfschmerzen davon :ROFLMAO:, mache mir schon immer sehr viele Gedanken über den Code)
Ich wollte eher nur mal wegen grundsätzlicher Anhaltspunkte nachfragen, sozusagen Richtwerte welche man nach Möglichkeit nicht überschreiten sollte.

Ich habe das Programm als FB geschrieben um es flexibel einsetzen zu können, wodurch man den FB somit auch für 20Messwerte verwenden könnte, wo es dann vermutlich schon zu Zeitproblemen kommen würde. Verwendet wird er aktuell nur für einen Messwert und somit ist es auch kein Problem.

zeig deinen baustein und es wird dir gesagt ob und wo optimierungsbedarf besteht... diese esoterischen diskussionen àla "was macht ihr so? und warum denn?" hängen mir zum hals raus!
 
Moin,

du kopierst EIN mal am Tag ein Messwert und EIN mal im Jahr alle Messwerte?
Wieso Zykluszeit beachten? hast du noch ein grosses Programm laufen?
Lade und Trans und SFC20 Blokmove fertig. Verstehe ich gerade nicht :confused::confused::confused:
 
Wenn du ein schönes Programm möchtest:
Benutze ASCII-Art
Damit kann man schöne Sachen im Kommentar machen:ROFLMAO:

Wenn du ein optimales Programm möchtest.
Zeige deinen Code.
Wie ist deine Zykluszeit jetzt?
Um wieviel wird sie durch den Kopiervorgang verlängert?
Ergibt das Probleme?
 
So hier die Quelle mit FB und dem DB.
Ganz fertig ist's noch nicht, werde noch die schleifen mit LOOP machen, aber sonst glaube (hoffe) ich passt's.

Jetzt bin ich aber schon gespannt wie niederschmetternd das Resultat wird :ROFLMAO:.
 

Anhänge

  • Quelle.zip
    6,5 KB · Aufrufe: 27
Nochmals, in diesem Fall ist die Zeit eh kein Problem!
Es geht mir eher grundlegend um die Programmierung, ich bin ja nur ein Gelegenheitsbastler, habe eigentlich mehr mit Fehlersuche als mit dem schreiben von Programmen zu tun und schreibe nur ab und zu ein paar Ergänzungen. Und will es hald so gut als möglich machen.
 
@PN/DP
Stimmt, ist ein ganz anderer Ansatz.
Ich kopiere die Werte sowieso nur innerhalb des DB um, könnte somit auch einfach die Adresse jedes 2te Jahr mit einem Offset berechnen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nochmals, in diesem Fall ist die Zeit eh kein Problem!
....
Falls die Zeit kein Problem ist, mache es doch so wie PN/DP und schone deine Ressourcen
Also NEIN, eigentlich ist es kein Problem.
Dennoch versuche ich alles eher Ressourcen schonend zu programmieren.
(Bekomme ich eh manchmal Kopfschmerzen davon :ROFLMAO:, mache mir schon immer sehr viele Gedanken über den Code) ....
 
beim überfliegen sind mir folgende stellen als unschön aufgefallen

Code:
*
//Monat gestern
      L     LB     9                    //Monatsbyte aus dem Datum von gestern
      BTI                               //BCD-Wert in Integer wandeln
      T     #Monat_b                    //Wert im temporären Variablenbereich speichern

//Tag gestern
      L     LB    10                    //Tagesbyte aus dem Datum von gestern
      BTI                               //BCD-Wert in Integer wandeln
      T     #Tag_b

Code:
*
      L     DBB    0                    //Erstes Byte im Format Date_And_Time ist das Jahr im HEX-Format
      L     LB     0                    //Aktuelles Jahr
      ==I   
      SPB   M010                        //Datenbaustein gültig und aktuell

Code:
*
//Date_And_Time in DB schreiben
      L     LD     0
      T     DBD    0
      L     LD     4
      T     DBD    4

ebenso: ist es notwendig für jeden wert die uhrzeit a) extra zu holen und b) auch noch zu zerlegen? ... gibt doch nur unhübsche verschiebungen in den Milisekunden...

wenn du schon hardcodiert auf irgendwelche zellen in einem datenbaustein zugreifst, dann mach es doch qualifiziert und symbolisch... bsp. hier

Code:
*
      L     DBW 3032                    //Datum des max.Wertes
      T     #MaxDat                     //in Ausgangsvariable schreiben
      L     DBD 3034                    //Maximalwer
      T     #MaxValue                   //in Ausgangsvariable schreiben

der gesamteindruck: ambitioniert aber im wesentlichen gestückelt. es läßt sich kein einheitlicher fluß erkennen ... pluspunkte gibt es für die kommentierung, die in den meisten teilen vorbildlich bis übermotiviert durchgeführt wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@vierlagig
erstmal DANKE für's anschauen.

Könntest du die störenden Punkte genauer beschreiben?
Also wegen dem dauernden lesen und zerlegen der Dat-Time Werte, ist auf jeden Fall ein guter Einwand.
Aber wie besser machen?
Das Datum und die Uhrzeit brauche ich aber schon alleine wegen den Statuswerten, das Zerlegen der Uhrzeit könnte ich natürlich abhängig von ??? ...z.B. nur der Stunde machen?

Was meinst du bei den ersten drei Codes welche du eingefügt hast? ...wegen symbolisch Adressieren?
 
ja, wegen symbolisch adressieren.
zugriff auf L, LB, LW und LD ist alles andere als schön.

mir fallen spontan drei vier möglichkeiten ein, wie man das mit dem zeit zerlegen und speichern lösen könnte :rolleyes:

vom globalen db über eingebettete funktionen die nur einmal im zyklus ausgeführt werden aber trotzdem immer einen wert zurückgeben ... da gibt es ein paar zwischenstufen auch mit multiinstanzen und multiinstanzen und UC :rolleyes: ... die frage sollte ja "nur" als denkanstoß dienen :ROFLMAO:
 
Guten Morgen!

...na gut, bezüglich symbolischer Adr. ist ja kein Problem, aber wie ich z.B. LB anders löse :confused: um aus dem D&T-Format die Bytes heraus zu heben :confused::confused:
Und ja, eigentlich habe ich am Beginn des Themas etwas anderes erwartet, bin aber sehr interessiert wie ich es denn besser machen könnte, ich will ja was lernen!
Wie gesagt symbolisch ist kein Problem, aber dann fällt mir leider nichts mehr ein. Und wenn du dir die Zeit nimmst und mir etwas beibringst wäre ich auf jeden fall dankbar darüber :rolleyes: :ROFLMAO:

Lg
Florian
 
Zurück
Oben