Step 7 AWL Problem Bearbeitung

stepper7

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

ich habe ein Problem was ich mir nicht erklären kann.
Ich habe in AWL in einem Netzwerk ein paar Vergleiche gemacht, wo ich jedesmal ein Char mit einem DB Inhalt vergleiche.
Jetzt kommt mein Problem, dieses Netzwerk wird auch laut STATUS abgearbeitet. Aber das nächste Netzwer aufeinmal nicht mehr obwohl ich dort nichts verändert habe. Dort steht im Status aufeinmal überall 0.
Das übernächste wird wieder bearbeitet.
Habe mal probiert das Netzwerk an einer andere Stelle einzusetzen, dann passiert das gleiche das wieder das nächste Netzwerk nicht bearbeitet wird.
Habe ich da ein Fehler in diesem Netzwerk bei den ganzen Vergleichen evtl. ?

U(
L 'C'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_1
==I
)
U(
L '6'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_2
==I
)
U(
L '9'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_3
==I
)
U(
L '1'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_4
==I
)
= M 34.0

U(
L '6'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_5
==I
)
U(
L '0'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_6
==I
)
O
U(
L '5'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_5
==I
)
U(
L '9'
L "DB_ASM3LK2_DATEN".PROD_MAT_NR_6
==I
)
= M 34.1



Danke
LG
 
hallo stepppp7

dein Netzwerk wird bearbeitet, sonst würdest du keinen Status sehen und Sprünge hast du laut deinen Code keinen eingebaut.
Kann es sein, dass du vielleicht doch das VKE?
Poste mal ein Screenshot deiner Online-Ansicht. Dann kann man mehr erkennen.

MfG
Kapo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
VKE und STATUS ist alles komplett auf 0 in dem nächsten Netzwerk..wird zwar bearbeitet aber da stimmt was nicht.
Lösche ich mein Netzwerk davor wieder wird wieder alles normal bearbeitet darunter und im Status stehen wieder 1.
Kann das sein das ich Fehler in meinem Netzwerk habe, weil ich zum Beispiel Char mit ==i vergleiche ? Denn in FUP geht das auch nicht.
 
Meinst du denn das Statusbit oder das Statuswort? STA ist abhängig von Statusbit2. Also VKE 0 und STA 0 ist nicht ungewöhnlich.
Du kannst auch Chars per <>I ==I vergleichen. Da keine typprüfung stattfindet. Solange der umgerechnete Integerwert gleich ist, dann liefert ==I auf jedenfall eine 1 und STA übrigens auch.

mfG René
 
hast du schon mal auf deine CPU geschaut ob sie einen SF Fehler aufweist?

Problem 1: INT vergleich ist ein WORD vergleich, wobei CHAR nur 1 Byte lang ist
Problem 2: Wenn dein DB nicht genug deklariert ist, bricht er den Vergleich in diesen Netzwerk ab und spring ins nächste --> Status und VKE sind null
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
hast du schon mal auf deine CPU geschaut ob sie einen SF Fehler aufweist?

Problem 1: INT vergleich ist ein WORD vergleich, wobei CHAR nur 1 Byte lang ist
Problem 2: Wenn dein DB nicht genug deklariert ist, bricht er den Vergleich in diesen Netzwerk ab und spring ins nächste --> Status und VKE sind null

Zu 1: dann hat er ein Problem mit der Auswertung, aber nicht im nächsten Netzwerk
Zu 2: da der Zugriff symbolisch ist, kann man das eigentlich ausschliessen

@TE:
macht das nächste Netzwerk real was falsches oder glaubst Du das nur weil Du nur VKE und STAT auf null siehst?
Schreib mal am Anfang des nächsten Netzwerkes:

Code:
SET
=#Schmiermerker

Was steht dann da im VKE?

Edit: der Code ist einwandfrei!
 
Zuletzt bearbeitet:
VKE und STATUS ist alles komplett auf 0 in dem nächsten Netzwerk..wird zwar bearbeitet aber da stimmt was nicht.
Lösche ich mein Netzwerk davor wieder wird wieder alles normal bearbeitet darunter und im Status stehen wieder 1.
Kann das sein das ich Fehler in meinem Netzwerk habe, weil ich zum Beispiel Char mit ==i vergleiche ? Denn in FUP geht das auch nicht.
Was meinst Du eigentlich mit STATUS? Die Spalte "STA" rechts neben der Spalte "VKE" wenn man das AWL-Programm beobachtet?
Hast Du mal einen Screenshot von Deinem Problem?

Es ist nicht normal, wenn beim Beobachten Deines Programms die gesamte Spalte STA von einer = Anweisung bis zur nächsten = Anweisung nur 0 zeigt. Mindestens bei jedem Klammer_auf U( und jedem Klammer_zu ) muß STA als 1 angezeigt werden.

Was für eine CPU programmierst Du mit welcher Programmiersoftware?


Für S7-300/400 gilt:

Ob Du BYTEs oder INTs mit ==I vergleichst ist nur relevant bei FUP/KOP, weil da (meistens) eine Typprüfung aktiv ist.
In AWL vergleicht ==I die unteren 16 Bit vom AKKU1 mit den unteren 16 Bit vom AKKU2, ohne Typprüfung und egal wie der Inhalt der AKKUs zustande kam und egal was in den oberen 16 Bits der AKKUs steht.

Wenn auf nicht vorhandene DB-Bytes zugegriffen wird, dann wird ein Bereichslängenfehler in den Diagnosepuffer eingetragen und der OB121 aufgerufen, und wenn der OB121 vorhanden ist und kein STOP erzwingt, danach das Programm mit dem Ersatzwert 0 fortgesetzt. Es wird kein Programmteil abgebrochen oder übersprungen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das Problem gelöst bekommen, anscheinend muss das von mir nicht sauber programmiert gewesen sein.
Erstmal habe ich gesehen das auf diesem Ersatzprogrammiergerät von Uns noch eine alte Version vom Simatic Manager war. Dort war V5.5 SP3.
Das habe ich erstmal auf SP4 HF8 hochgerüstet.
Dann habe ich einen eigenen FC erstellt, das ganze in FUP gelöst. Char´s in DB kopiert kopiert und anschliessend mit ==D Doppelwörter verglichen. Später in dem passenden FC (AWL) habe ich dann einfach nur die ausgewerteten Merker eingefügt.
Jetzt funktioniert alles.
Ich habe auch das Gefühl das Siemens mit dem V5.5 SP4 auch einige Sachen verbessert haben. Z.B kann man jetzt in FUP auch CHAR mit ==I vergleichen ohne das er einen Formalfehler anzeigt. Das ging mit dem SP3 vorher nicht.
Vielen Dank !
 
Ich habe auch das Gefühl das Siemens mit dem V5.5 SP4 auch einige Sachen verbessert haben. Z.B kann man jetzt in FUP auch CHAR mit ==I vergleichen ohne das er einen Formalfehler anzeigt. Das ging mit dem SP3 vorher nicht.
Das ist keine Verbesserung sondern ein eher Bug, der heimlich zu einem Feature erklärt wurde, damit ein anderer Bug nicht mehr zuschlägt... Der Vergleich CHAR ==I in FUP ging auch schon vor dem SP4, man mußte nur bewußt die Typüberprüfung abschalten.
http://www.sps-forum.de/simatic/81815-feld-typpruefung-von-operanden-ausgegraut.html
In TIA werden alle möglichen "intelligenten" Prüfungen für die typischerweise ungenügend wissenden Programmierer eingebaut, und in Step7 classic werden die Typprüfungen einfach fest deaktiviert :roll:

Harald
 
Zurück
Oben