schönes Programmieren - was passt in einen Zyklus?

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Florian,

hier noch einmal ein Auszug aus Deinem Programmcode:

Code:
NETWORK
TITLE =Tag, Monat und Jahr aus dem Date_And_Time-Format extrahieren
//Das Date_And_Time-Format ist ein zusammengesetztes Datenformat und ist wie 
//folgt aufgebaut:
//
//Byte Inhalt 
// 0   Jahr
// 1   Monat
// 2   Tag
// 3   Stunde
// 4   Minute
// 5   Sekunde
// 6   Die beiden höchstwertigen Ziffern von MSEC
// 7   Die niederwertigere Ziffer von MSEC
// 7   Wochentag (1=Sonntag, 2=Montag,...7=Samstag)
// TAG aktuell
      L     LB     2; //aktueller Tag im temporären Datenbereich
      BTI   ; 
      T     #Tag_a; 
// MONAT aktuell
      L     LB     1; //aktuelles Monat im temporären Datenbereich
      BTI   ; 
      T     #Monat_a; 
// JAHR aktuell
      L     LB     0; //aktuelles Jahr im temporären Datenbereich
      BTI   ; 
      T     #Jahr_a; 
      L     10; 
      MOD   ; 
      T     #Jahr_a_000x; //letzte Stelle des aktuellen Jahres
NETWORK
TITLE =Aktuelle Zeit aus dem Date_And_Time-Format extrahieren
// STUNDE aktuell
      L     LB     3; //aktuelle Stunde im temporären Datenbereich
      T     #Stunde_a; 
// MINUTE aktuell
      L     LB     4; //aktuelle Minute im temporären Datenbereich
      T     #Minute_a; 
//SEKUNDE aktuell
      L     LB     5; //aktuelle Sekunde im temporären Datenbereich
      T     #Sekunde_a;

Die Werte für das Datum (INT) und die Zeit (INT) kannst Du mit indirekter Adressierung aus der Systemzeit (DATE_AND_TIME) auslesen.

Siehe dazu das folgende Programbeispiel:

http://www.sps-forum.de/showthread.php?t=41995

http://www.sps-forum.de/showpost.php?p=305922&postcount=10

Gruß Kai
 
Ich habe einen Protokollierungsbaustein, der mir bei der Fehlersuche einer neuen Anlage hilft. In diesem Baustein werden ca. 300 Worte pro Fehler während meines Automatikbetriebs kopiert (CPU 315-PN/DP). Das Kopieren erledige ich mit dem SFC20 (BlockMove) und spüre gar keine nennenswerte Zyklusbelastung.

Sollte es aber eine zu hohe Belastung geben, dann hier mal nen Tip:

Kopiere die Werte in Etappen über mehrere SPS-Zyklen!
z. B.:
1. DBW0 - DBW49
2. DBW51-DBW99
3. ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Kai!
Das werd ich so (ähnlich) umsetzen.

Soweit so gut, ich wage mich mal an den nächsten Punkt:
Einheitlicher Programmfluss
der gesamteindruck: ambitioniert aber im wesentlichen gestückelt. es läßt sich kein einheitlicher fluß erkennen ...
Das ist mir jetzt aber an sich etwas unverständlich, also nicht dass mein Prog keinen hat :ROFLMAO:, eher was damit überhaupt gemeint ist.
Das alle Anweisungen, bzw. Bearbeitungsschritte nach einem "vernünftigen" bzw. logisch-nachvollziehbaren System gereiht sein sollte?
...ein kleines Bsp. zur Verständnis wäre auch hier super.

@vierlagig
wenn du mir das noch erklären könntest :-D , DANKE!
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: ...
 
Zurück
Oben