Step 7 SCL Übersetzungsfehler (PCS 7)

Paule79

Level-1
Beiträge
62
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe in TIA Portal Bausteine für PROFINET Geräte erstellt.
Nun ist es so, dass ich den dort erstellten Baustein gerne in PCS 7 importiert hätte. Klappt ja anscheinend auch mit kleinen Anpassungen.
Habe den Baustein als externe Quelle importiert und angepasst.

Leider bekomme ich mehrere für mich unschlüssige Fehlermeldungen.
Fehlermeldung_PCS7.JPG
z.B. wenn ich die erste Meldung anklicke... springt der Cursor an folgende Stelle:
DPRD_DAT(HIERHINLADDR...)

Kann mir jemand weiterhelfen?

Viele Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn ichh das richtig sehe, willst Du ne Software von ner S7-1500 auf ner S7-400 laufen lassen. DAs wird ohne größere Änderungen nicht gehen.

GEO_LOG sowie DESERIALIZE gibts in ner 400er schonmal nicht. Und die Systemvariablen aus der S7-1500 auch nicht...

Nebenbei, PCS7 funktioniert GAAAAAANZ anders als TIA... Keine Ahnung, was das für "Bausteine für PROFINET Geräte" sein sollen, ich würd da PCS7-konform erstmal die PCS7-Treiberbausteine verwenden, bzw. APL-Bausteine für die Feldgeräte...

Hast Du schon irgendwelche Erfahrungen mit PCS7 ???

Gruß.

PS: GEO_LOG gibts schon und Deserialize ist ne selbstgeschriebene Funktion?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke euch beiden für die schnelle Antwort!

@DeltaMikeAir ich meine herausgefunden zu haben, dass das RET_VAL in die Funktion gehört... aber kann mich da auch irren!

@ducati Ja genau, mehr oder weniger. Danke für die Info das wusste ich nicht. Nein ich habe nicht wirklich Erfahrungen mit PCS7 und versuche mich da gerade etwas mit.
Es hies zu mir: "Mach mal" :D aber genau damit tue ich mich gerade schwer.
Wieso kann ich die Funktionen GEO_LOG und Deserialize nicht verwenden? Ich finde Sie doch in der Bib und sie lassen sich einbinden. Oder funktioniert einfach eine 400er nicht damit?
 
Ich glaube, Du verrennst Dich in ne komplett falsche Richtung. Fange mal mit den Getting Starteds von PCS7 an. Bzw. les mal einige PCS7 Handbücher... Wenn das ne Produktivanlage werden soll, würd ich auch PCS7-Schulungen bei Siemens empfehlen.

Im ersten Schritt würd ich für PCS7 garkeine eigenen Bausteine Schreiben und verwenden. Es wird alles in CFC aus den PCS7 Standardbeusteinen erstellt, sonst funktionieren die ganzen schönen PCS7 Tools nicht...

Wie ich oben noch ergänzt habe, die GEO_LOG solls in der 400er schon geben, hab ich aber nie verwendet und kenn mich nicht aus...

https://support.industry.siemens.com/cs/document/63481413/simatic-pcs-7-übersicht?lc=de-ww

https://support.industry.siemens.co...n=ps&o=DefaultRankingDesc&pnid=16933&lc=de-WW


Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke ich werde das beherzigen und mir erstmal die Basics aneignen!
Ist wahrscheinlich der bessere und langfristigere Weg :)

Trotzdem nochmals zum aktuellen Problem
Fehler.JPG
Ich hatte ein ";" gelöscht... danach waren die Fehlermeldungen von vorher jedenfalls weg. Jetzt zeigt es auch an, dass "Deserialize" nicht vorhanden ist.
Könnt ihr mir zu den anderen Fehlern helfen?

Viele Grüsse
 
Wie ich oben noch ergänzt habe, die GEO_LOG solls in der 400er schon geben, hab ich aber nie verwendet und kenn mich nicht aus...


Gruß.

Experten, Experten. Natürlich gibts bei S7-400 und bei PCS7 "GEO_LOG" und "LOG_GEO" und auch "RD_LGADR" und viele andere äußerst sinnvolle Systemfunktionen. Sie werden auch in den PCS7-eigenen Treiber-Librarys desöfteren verwendet.


Code:
IF pbEN_SUB AND SZL_BUSY THEN 
    (* Diagnosefähiges Ereignis hat stattgefunden *)
    IF NOT V1_AKTIV THEN 
        (* RALARM nicht fehlerfrei abgearbeitet *)
        IF SFC51_OK THEN 
            (* RDSYSSTAT fehlerfrei abgearbeitet *)
            IF IO_TYPE=B#16#55 THEN
                (* Ausgangsadressraum wird diagnostiziert *)
                ERROR       :=  LOG_GEO (
                                        LADDR   := IO_ADDR OR W#16#8000,
                                        AREA    := IOID_PN,
                                        MASTER  := PER_ADR_PN,
                                        STATION := SZL_HEADER_PN.LENTHDR,
                                        SLOT    := SZL_HEADER_PN.N_DR,
                                        SUBSLOT := SZL_HEADER_PN.SUBSLOT,
                                        OFFSET  := SZL_HEADER_PN.OFFSET
                                        ); 
                IF DIAG_BUF THEN
                    (* Diagnosemeldungen eingeschaltet *)
                    wINFO1      :=  INT_TO_WORD(ERROR);
                    dwINFO2     :=  SHL(IN := INT_TO_DWORD(SZL_HEADER_PN.LENTHDR), N := 24);
                    dwINFO2     :=  dwINFO2 OR (SHL(IN := INT_TO_DWORD(SZL_HEADER_PN.N_DR),N := 16));
                    dwINFO2     :=  dwINFO2 OR (SHL(IN := INT_TO_DWORD(SZL_HEADER_PN.SUBSLOT),N := 8));
                    
                    iRET_VAL    :=  WR_USMSG    (   
                                                SEND    :=  TRUE,
                                                EVENTN  :=  W#16#A211,
                                                INFO1   :=  wINFO1,
                                                INFO2   :=  dwINFO2
                                                ); 
                END_IF;    
                
            ELSE



Ich hatte ein ";" gelöscht... danach waren die Fehlermeldungen von vorher jedenfalls weg. Jetzt zeigt es auch an, dass "Deserialize" nicht vorhanden ist.
Könnt ihr mir zu den anderen Fehlern helfen?

Ein grundsätzliches Studium der Basics, wie schon von Ducati erwähnt, wäre hilfreich und wünschenswert, bevor man anfängt eigene Bausteine für PCS7-Hardware zu schreiben. Was möchtest Du da machen wenn ich fragen darf - die Basic Library nachbauen ?
 
Zuletzt bearbeitet:
Ein grundsätzliches Studium der Basics, wie schon von Ducati erwähnt, wäre hilfreich und wünschenswert, bevor man anfängt eigene Bausteine für PCS7-Hardware zu schreiben. Was möchtest Du da machen wenn ich fragen darf - die Basic Library nachbauen ?

Ja stimmt, da geb ich dir/euch voll und ganz recht. Es sind Funktionsbausteine welche ich in TIA entwickelt habe. Damit sollen Prozesswerte aus Messgeräten ausgelesen und leicht verarbeitet werden können. Dies habe ich eben mit den oben genannten Funktionen gemacht. Ich habs jetzt soweit hinbekommen, dass ich nur noch die Funktion "Deserialize" ersetzen muss. Gibt es da eine Möglichkeit. Wenn nicht fuchs ich mich einfach etwas rein.
Werde auch mal meine Vorgesetzen Ansprechen ob nicht auch eine Schulung in Frage kommt...

Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Werde auch mal meine Vorgesetzen Ansprechen ob nicht auch eine Schulung in Frage kommt...
Grüsse

Was das wohl für vorgesetzte sind, die völlig unvorbereitete Leute mit solchen Aufgaben konfrontieren. Und das ist jetzt bestimmt irgend so ein mittelständisches Unternehmen, was in der öffetlichkeitswirksamen Darstellung große Stücke auf seine "fundierte technische Kompetenz" hält. Unser Land steuert glänzenden Zeiten entgegen.
 
Ich habs jetzt soweit hinbekommen, dass ich nur noch die Funktion "Deserialize" ersetzen muss. Gibt es da eine Möglichkeit. Wenn nicht fuchs ich mich einfach etwas rein.

Naja, wie wir versuchen Dir zu erklären, brauchst Du mit sehr hoher Wahrscheinlichkeit Deinen selbstgeschriebenen Baustein unter PCS7 nicht.

Und Du solltest diesen auch besser nicht benutzen, weil Du damit das ganze PCS7 Konzept aushebelst...

Und zu GEO_LOG, ich kenn den nicht, weil ich eben unter PCS7 bisher keine Treiberbausteine schreiben brauchte und auch froh drüber bin 😁
 
Zuletzt bearbeitet:
Man bei den Baugruppentreibern auch mal den Ball flach halten, da kann man auch eine Minimallösung anstreben die wenigstens den Wertstatus korrekt darstellt (was meiner Meinung nach das wichtigste ist) wenn z.B. der Profibusteilnehmer ausfällt um in der OS sehen zu können welche Werte davon betroffen sind. Falls du bzw. der Kunde noch Maintenance verwendet könnte es aufwändiger werden, aber das scheint mit nicht sehr verbreitet zu sein.

Als erstes würde ich die gesamten Adressen ins Prozessabbild legen, das ist bei den 400er CPUs für PCS7 meistens schon sehr groß eingestellt. Dann fällt der DPRD/DRWR schon einmal weg.
Dann vergibst du allen Daten von deinem Gerät ein Symbol in der Symboltabelle mit Ex.y, EWx oder EDx, je nach dem was sich dort befindet. Ja, das ist etwas Aufwand, dafür aber für alle nachvollziehbar.
Dann wertest du selber den Ausfall des Profibusteilnehmers aus, und blendest dann entweder 16#80 oder 16#0 in den Signalstatus ein. Oder wenn das Gerät selber z.B. noch in eine Art Simulationsmodus geschaltet werden kann, dann evtl. auch noch 16#60. Entweder du schreibst dir selber einen kleinen FB der dann auch gleich noch die Umrechnung/Skalierung vornimmt, oder du baust das alles diskret aus Elementen in CFC zusammen, hängt davon ab ob du vorhast das öfters zu verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Thomas, der TE hatte noch nie mit PCS7 zu tun. D.h. er weiss garnicht, was Treiberbausteine sind und wie PCS7 funktioniert. Er will irgendeinen TIA Baustein ins PCS7 bringen, warum ist mir nicht klar.
Ich vermute mal, dass die gewünschte Funktion mit Standart PCS7 Treiberbausteinen und APL-Bausteinen umsetzbar ist. Evtl. noch nen Musterplan, wenn das mehrfach verwendet werden soll usw.
Ich hab so oft erlebt, wie der klassische S7-Programmierer vom PCS7 eigentlich nur das Step7 und das WinCC genutzt hat, und von den PCS7 Funktionen garnichts. Vielleicht noch bissl CFC wenns hoch kommt.
Dann brauchst aber auch kein PCS7 kaufen. Hab auch schon erlebt, wie der Programmierer seine FUP-Software vom Endkunden um die Ohren gehauen bekam ;)

Letztens haben wir erst einen großen Auftrag nicht bekommen, weil zu teuer. Der Anlagenbauer wollts dann mit seinen eigenen Nachwuchs S7-Programmierern die noch nie PCS7 gesehen haben, selbst machen. Was dabei rauskommt, will ich garnicht wissen. Viel Ärger auf jeden Fall...

Aber jeder wie er meint...
 
Ich kann euren Unmut gut verstehen. Klar bin ich "Anfänger" und muss mich da reinarbeiten. Aber es liegt nunmal nicht in meiner Hand darüber zu entscheiden.
Trotzdem Danke für eure Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann euren Unmut gut verstehen. Klar bin ich "Anfänger" und muss mich da reinarbeiten. Aber es liegt nunmal nicht in meiner Hand darüber zu entscheiden.
Trotzdem Danke für eure Hilfe.

Nee, wir sind nicht unmütig, wir sind immer so 😁
Was mich betrifft, will ich Dich nur drauf hinweisen, dass PCS7 Programmierung erstmal nichts mit klassischer Step7 oder TIA Programmierung zu tun hat. Um Dich davor zu bewahren, in eine komplett falsche Richtung zu laufen. Wenn Du das erste Kennenlernen und die 2 Getting Starteds durchgearbeitet hast, bekommst Du davon schonmal einen ersten Eindruck. Hast Du denn wenigstens ne ES-OS-Singlestation und ne 410er SPS zum rumspielen?
 
Zurück
Oben