TIA Pointer am INPUT mit SCL zerlegen?

PlutoRB

Level-2
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle miteinander
Ich habe folgendes Problem.
Ich habe mir im Step7 Manager einen Baustein geschrieben, bei dem ich am Eingang über einen Any Pointer einen Datenbereich übergebe. Im BAustein zerlege ich den Datenbereich und berechnen mir den Inhalt aus dem Pointer, also z.B. Datenbausteinnummer, Startadresse, Länge.

//Länge Datenbereich Zeiger
L DIW [AR2,P#4.0]
T #iDataLength
//Nummer Datenbaustein
L DIW [AR2,P#6.0]
T #iDataDB
//Startbyte Zeiger
L DID [AR2,P#8.0]
L P#DBX 0.0
-D
SRD 3
T #iDataStartByte

Der Any-Pointer liegt in der Schnittstelle im Eingangsbereich ab Adresse 2.0.

Jetzt haben wir aber eine S7-1200. Die kann kein AWL. Und ich möchte kein FUP oder KOP, sondern SCL.
Jetzt die Frage: Wie kann ich in einem SCL Baustein einen Pointer auslesen und an die Daten Bausteinnummer, Startadresse und Länge kommen.
Danke.
MfG
Rouven Bleich
 
Danke erst mal für die Antworten. Das hilft mir schon mal weiter.

Any Pointer gibt es nicht in der 1200? Schade. Und AWL auch nicht. Dann wird's aber dünn.

Rouven
 
So... jetzt hab ich gleich die nächste Frage. Was ist eure Meinung?
Ich nutze den Any-Pointern in vielen Bausteinen bei den S7-300er Steuerungen um einen Datenbereich zu übergeben.
Grundsätzlich wäre es schon toll, die zukünftig die gleichen Bausteine für die 1200 und 1500 Steuerungen nutzen zu können.
Deswegen hier die Frage: Lieber die alten (und guten) Bausteine der 300 in die 1500 übernehmen und halt dann wenn es sein muss einen eigenen für 1200 entwickeln ODER lieber alle Bausteinen in die Hand nehmen und so umstellen dass er in der 1200 und 1500 läuft.

Danke für eure Meinungen.

Rouven
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Any pointer scheint in der 1200er nicht zu gehen
Was denkt sich Siemens nur dabei? Auch wenn es verschiedene Leistungsklassen sind, so könnte man doch die Programmierung einheitlich gestalten, oder nicht? Was hieß TIA nochmal, Total Irrsinnige Applikation oder was? Ich bin zur Zeit gerade dabei, mich mit TIA anzufreunden, zunächst erst mal mit S7300/400. Aber wenn ich das schon wieder lese...
 
Ich habe mir da auch schon sehr meinen Kopf gemacht, was machen. Ich werde aber weiterhin awl und nicht optimierte Bausteine verwenden in der 1500er.
Hardwaretimer gibt es in der 1200er ja nicht nur IEC Timer.
Die IEC Timer kann man meiner Meinung nach nur in einem FB mit Multiinstanz vernünftig verwenden wo man früher Hardwaretimer genommen hat, oder man hat für jeden Timer einen eigenen DB was ein Programm auch nicht grad Übersichtlich macht. Und irgendwo in diesem FB hat man dann wieder einen Merker oder Eingang oder Ausgang und greift somit von Außen ohne Schnittstelle zu oder man hat eine große Schnittstelle und macht einfache Sachen kompliziert, eigentlich gegen jede meiner Prinzipien .
Und das sind jetzt nur die Grundlegenden Basics.
Profibus/ Profinetdiagnose ist in der 1200er/1500er anders wie in der 300er. AWl gibt es in der 1200er nicht. Also so ganz durchgängig ist das halt alles nicht. Entweder du machst vieles neu in FUP/ KOP/ SCl und nutzt IEC Timer, dann kannst du das überall Nutzen. Oder du musst dich halt für eine Baureihe Entscheiden so wie ich auf 300er und 1500er wo ich dann halt AWL weiterhin nutzen kann.
Anmerkung: Any Pointer ist in der 1500er auch nicht mehr so mächtig wie in der 300er/400er und Variant scheint irgendwie in den Kinderschuhen zu stecken. Ich habe für die 1500er den Block_Move als ANY mit SCL realisiert und Any ist nicht in der In/Out Schnittstelle gegangen wie in Classic. Und ich habe auch ein paar Stunden gebraucht bis es funktioniert hat.
Simuliert und gespielt habe ich schon viele Stunden mit TIA. Aber es stürzt halt oft ab und auch zwischen Projekten Bausteine hin und her kopieren macht mir immer wieder Probleme. So bleibt es halt noch eine Zeit im Giftschrank bis es produktiv eingesetzt wird. Panels werde ich im TIA machen, Das Klappt erstaunlich gut und das finde ich sogar noch besser wie WinCC flexible. Aber das
SPS
Programm wird für eine gewisse Zeit noch in Classic bleiben.
 
Zuletzt bearbeitet:
Ich werde aber weiterhin awl und nicht optimierte Bausteine verwenden in der 1500er.
Hardwaretimer gibt es in der 1200er ja nicht nur IEC Timer.
Die IEC Timer kann man meiner Meinung nach nur in einem FB mit Multiinstanz vernünftig verwenden wo man früher Hardwaretimer genommen hat, oder man hat für jeden Timer einen eigenen DB
Die optimierten Bausteine schließen doch keine Multiinstanz aus?!
:confused:
 
Habt ihr mal ein konkretes Beispiel das man ohne einen Any-Pointer nicht programmiert bekommt?

Wenn man nicht gerade Kommunikationsbausteine mit variablen Längen in der SPS programmieren muss, konnte ich meine Probleme bisher in der 1200er auch ohne Any-Pointer mit entsprechenden Datentypen oder Arrays lösen. Ist manchmal etwas mehr Aufwand, aber das Programm wird dadurch eher besser als schlechter lesbar.
 
Anwendung sind für mich Kommunikationsbausteine und flexible LIFO/FIFO Bausteine und flexible Schieberegister.
@ Thomas: Any ist für die Übersichtlichkeit nicht zuträglich, da hast du recht, aber halt für die Flexibilität.
Und man will halt seine Bausteine immer wieder verwenden können.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke auch, Array of UDT könnte man oft statt Any einsetzen. Was allerdings bei variablen Datenlängen am Besten einzusetzen ist … ? Da mache ich mir dann Gedanken, wenn wir beginnen müssen diesen Schrott, der sich TIA schimpft, einzusetzen. Hoffentlich warten unsere Kunden noch solange damit, bis bei mir ein neuer Laptop dran ist. :ROFLMAO:
 
Das Problem wurde ja in einem anderen Thread schon angesprochen, dass man bei TIA in SCL bei der Arraydefinition keine Konstanten mehr einsetzen kann. Ansonten ließen sich damit sicher 90% der Any-Anwendungsfälle lösen.

Bei vielen Fällen liegt aber auch meiner Meinung nach ein Design-Fehler vor. Z.B. kommt hier im Forum regelmäßig die Anfrage, einen Störmelde-DB durchgehen zu müssen um zu prüfen ob eine Störung anliegt, und dann eine Sammelmeldung zu erzeugen. Das artet ja meistens auch in Any-Pointer und Absolutadress-gefrickel aus.
Warum wird nicht das Programm so geschrieben, dass die Funktion welche die Störmeldungen erfasst eine Sammelstörung, Sammelwarnung etc. automatisch generiert (z.B. indem eine IN_OUT Variable bei Störung gesetzt wird). Dann entfällt das Problem über unstrukturierte Daten iterieren zu müssen ganz einfach.

Ich habe bei Step7 meine Schieberegister usw. alle in SCL auf Arrays umgestellt. Somit habe ich prinzipiell keine Probleme den großteil meiner Programme auf TIA umzustellen, nur das mit den weggefallenen lokalen Konstanten ist unschön :-(


Aber mit dem Variant Datentyp ist vielleicht noch was in Arbeit.
Siemens hat sich das ja zumindest schonmal patentieren lassen, ist schließlich reinste Raketentechnik...
 
Programmieren ist halt auch eine Frage der persönlichen Vorlieben. Und ganz speziell SPS. Fängt an bei der Sprache AWL, KOP... und hört seit TIA auf bei optimierten Bausteinen oder mit Absolut Adressen.
Aber da fangen wir jetzt nicht mehr die 1001 Diskussion an.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Hucki Das war auch nicht mein Kontext in diesem Satz, sondern die Verwendungsmöglichkeiten von Timern im TIA Portal
Sorry, wenn ich den eigentlichen Kontext so nicht entnehmen konnte.

Also ich kann für mich nicht wirklich sagen, dass mir die mögliche Verwendung eines S5-Timers fehlt.
Zumal hier eh' in jedem (gefühltem) 2. Thread die Verwendung der IEC-Timer empfohlen wird.
 
Hi

wenn man hier schon auf den Timern rum reitet.
Die IEC-Timer der 1200/1500 sind deutlich besser als die S7-timer der 300/400. Zählen 24 Tage mit einer Auflösung von 1ms und ohne einen Jitter von 10ms.
Ich weine den S7-Timern keine Träne nach. Und ganz klar jeder Timer darf nur einmal im Zyklus gestartet werden, also am besten die Instanz im STATIC des FB deklarieren in dem dieser auch gebraucht wird. Abfragen kannst du ihn wo immer du willst. Dort läuft der auch, nicht so wie der Käse bei 300/400.

Beim ANY schwanke ich noch. Vieles was man früher, als die Zukunft noch besser war, mit ANY und Adressregister gemacht hat, kann man jetzt bereits wesentlich verständlicher mit
Code:
array[ #index ]
in allen Sprachen hinbekommen. Was noch fehlt ist die Flexibilität für FIFOs, LIFOs, Ringpuffer oder andere Container, welche beliebigen Inhalt in beliebiger Menge enthalten sollen.

Auf die Erweiterungen die den Variant für uns benutzbar machen warte ich noch.

'n schön' Tach auch
HB
 
Zurück
Oben