TIA S7 1200 SCL Array of TON

Zuviel Werbung?
-> Hier kostenlos registrieren
So wie es jetzt ist, habe ich für alle Aufrufe 1 Zeile im SCL Code, welche eben variabel ist und innerhalb einer Schleife abgearbeitet werden kann.
Du hast noch nicht erklärt, wie Du die unterschiedlichen Timerbedingungen (für Versorgung des Timer.IN) für 128+ Timer in 1 Zeile SCL unterbringst.. wie lang ist diese eine Zeile?

Harald
 
Hallo Harald,

als Timer IN wird eine temporäre Variable im FC genutzt. Der Aufruf sieht also ungefähr so aus
Code:
"TON"(IN := #VariableXYZ, PT := 1000, "Time" := "DBxyz".TimerArray[#_I]);

Gruß,
Mathias
 
An dieser Stelle muss ich Harald mit einem Einwand aus Beitrag #15 Recht geben.
Wenn die Variable_XYZ nicht auch wieder ein Array-Element ist, sondern vielmehr aus unterschiedlichen Ecke des Speichers kommt, dann ist diese Vorgehensweise eigentlich unsinnig da du dann wirklich nichts einsparst.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
VariableXYZ ist auch ein array.

Ich hab bisher einige Varianten durch als FB einzel/multiinstanz FC mit shared DB of IEC_Time und eben die jetzige und bei allen anderen muss ich f7r jedes Element einen expliziten Aufruf machen egal ob das jetzt SCL oder FUP ist und daher benötigt das Programm dementsprechend einiges mehr an Speicher.

Wie gesagt, ich bin ziemlicher Neuling und hatte bisher nur einen kleinen sps Kurs, daher kann ich natürlich immer etwas übersehen haben und wende mich ja auch an euch :)

Gruß,
Mathias
 
Zuletzt bearbeitet:
Ich hab bisher einige Varianten durch als FB einzel/multiinstanz FC mit shared DB of IEC_Time und eben die jetzige und bei allen anderen muss ich f7r jedes Element einen expliziten Aufruf machen egal ob das jetzt SCL oder FUP ist und daher benötigt das Programm dementsprechend einiges mehr an Speicher.

Es ist ja nicht schlecht sparsam zu Programmieren. Allerdings IMHO ist die Lesbarkeit höher zu gewichten als die Speicheroptimierung.

Es ist oftmals billiger eine grössere/schnellere SPS einzusetzen als der Mehraufwand sich durch ein unverständliches Programm sich durcharbeiten zu müssen. Die grössere/schnellere SPS hat sich oft schon beim ersten Serviceeinsatz oder bei der ersten Programmerweiterung rentiert (natürlich wenn das Programm dann auch wirklich Lesbar programmiert wurde).

mfG René
 
Hallo an alle,

habe vor geraumer Zeit einmal eine Methode gezeigt wie man in SCL ein Array of FB proggen kann.
Lieder ist diese Methode nur auf Klassik S7 Anwendbar, da das Tia Portal andere Compiler verwendet.
Das man für diese Methode leistungsstarke SPSen braucht erklärt sich von selbst, da jedes Arrayelement der Instanz eines FB entspricht.


Erklärung der Methode, sowie ein Beispiel.
http://www.sps-forum.de/programmierstrategien/32102-erstellen-eines-array-1-x-fb-sfb-scl.html

Verwendung der Methode zwecks Berechnung eines P-t(n), nmax=16, mittels eines Array of FB(P-Tn).
http://www.sps-forum.de/programmierstrategien/34461-regelstrecken-simulationsbausteine.html

MfG Bernard
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
"TON"(IN := #VariableXYZ, PT := 1000, "Time" := "DBxyz".TimerArray[#_I]);
VariableXYZ ist auch ein array.
Hallo Mathias,

in dem Code, den Du uns bisher gezeigt hast, ist #VariableXYZ kein Array.
Wie wäre es, wenn Du uns mal Deinen echten Code zeigst? Ansonsten rätseln wir hier nur rum, wo das geniale in Deinem Code steckt.

Und: wenn VariableXYZ ein Array oder eine Kopie eines Array-Elementes ist, so muß es doch irgendwas geben, was jedem einzelnen Array-Element einen Wert zuweist. Dafür muß dann doch je Timer eine Zeile SCL "verschwendet" werden. Dort könntest Du aber ebensogut direkt den normalen Timeraufruf hinschreiben.

Harald
 
Hallo Harald,

Dann stell es dir so vor:
Code:
[COLOR=#333333][I]"TON"(IN := "DBxyz".BoolArray[#_I], PT := 1000, "Time" := "DBxyz".TimerArray[#_I]);[/I][/COLOR]

und die Daten für das BoolArray kommen von außerhalb der SPS.

Gruß,
Mathias
 
Zurück
Oben