TIA BLKMOV Konvertiert

Beiträge
95
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,
ich habe ein S7V5.5 Programm in TIA V14 Konvertiert.
Zum Einsatz kommt aktuell eine S7 1516 PN/DP.
Allerdings hängt sich meine Steuerung immer an der Selben stelle auf.


Programmtext:

A #RESET
JC M200 // Keine Bearbeitung bei RESET-Funktion


LAR1 P##QUELLE // Anfangsadresse ANY-Pointer in AR1
L BYTE#16#10 // Systax-ID ==> S7 (10 Hex)
T LB [ AR1 , P#0.0 ]
L BYTE#16#02 // Typekennung ==> Byte (02 Hex)
T LB [ AR1 , P#1.0 ]
L #ANZ_DATEN // Anzahl Daten in Byte ==> Hier variabel
T LW [ AR1 , P#2.0 ]
L #Q_DB // DB-Nummer ==> Hier variabel
T LW [ AR1 , P#4.0 ]
L #Q_ADR // Startadresse Byte ==> Hier variabel
SLD 3
T LD [ AR1 , P#6.0 ]
L BYTE#16#84 // Quellkennung Daten ==> (84 Hex)
T LB [ AR1 , P#6.0 ]


LAR1 P##ZIEL // Anfangsadresse ANY-Pointer in AR1
L BYTE#16#10 // Systax-ID ==> S7 (10 Hex)
T LB [ AR1 , P#0.0 ]
L BYTE#16#02 // Typekennung ==> Byte (02 Hex)
T LB [ AR1 , P#1.0 ]
L #ANZ_DATEN // Anzahl Daten in Byte ==> Hier variabel
T LW [ AR1 , P#2.0 ]
L #Z_DB // DB-Nummer ==> Hier variabel
T LW [ AR1 , P#4.0 ]
L #Z_ADR // Zieladresse Byte ==> Hier variabel
SLD 3
T LD [ AR1 , P#6.0 ]
L BYTE#16#84 // Quellkennung Daten ==> (84 Hex)
T LB [ AR1 , P#6.0 ]


CALL BLKMOV // Kopieren ( An diese Stelle werde ich verwiesen sobald sie SPS in stopp geht)
blk_type:=Variant
SRCBLK :=#QUELLE
RET_VAL :=#SFC_RET
DSTBLK :=#ZIEL


M200: NOP 0



Der Fehler der an der CPU Angezeigt wird lautet:

Beschreibung:

Temporärer CPU-Fehler: DB 0 nicht geladen, Zugriff in FC 109
betrifft OB 100-Ausführung

PLC_1 / PLC_1



interne Adressierungsdetails: Caddr=16#00000092, Bereich: Bereich 00, Adr: 0


Hilfe:

Der DB ist auf der CPU nicht vorhanden.
Behebung:
Laden oder erstellen Sie den notwendigen Datenbaustein.
Prüfen Sie den Namen/die Nummer des verwendeten Datenbausteins.

Hat da jemand eine Idee ?
Gruß
 
Ja das Programm soll im Prinzip nur auf eine neue Steuerung konvertiert werden.
Die meisten Sachen sind angepasst oder neu Programmiert worden.
Der Kunde möchte das Programm so behalten.....

Ich habe jetzt auch den Fehler gefunden, allerdings noch keine Lösung.
In der alten Steuerung war ein OB85 der den Fehler unterdrückt.
Für die neuen Steuerungen gibts da allerdings kein Ersatz.
Hat jemand eine Idee wie man den OB85 ersetzten kann ?

Danke schonmal und Gruß
 
J.. In der alten Steuerung war ein OB85 der den Fehler unterdrückt.
Für die neuen Steuerungen gibts da allerdings kein Ersatz.
Hat jemand eine Idee wie man den OB85 ersetzten kann ? ..
Der OB85 wird völlig überbewertet. Lösche doch einfach den Programmteil, der Probleme bereitet.


Ok, nachträglich noch ein vielleicht nützlicher Tipp:
Es wird auf einen DB0 zugegriffen, den es nicht gibt. Den hat es vorher in der S7 auch nicht gegeben. Richtigerweise müsstest du prüfen, wo die beiden Variablen für die DBs gebildet werden, welche Werte sie annehmen dürfen und dort etwas korrigieren. Eventuell kann man diese Werte begrenzen. Hierfür müsste man aber wissen, was man tut. Einfach mal den OB85 in die Steuerung zu bringen ist absolut Oberpfui. So etwas kann man vorübergehend mal machen, wenn man weiß was man tut, aber nicht dauerhaft. Ich habe aber auch schon derartige Programme vorgefunden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
kannst du mal einen screenshot einstellen incl die das db/db2 ar anzeigen?

was wird denn an L #Q_DB // DB-Nummer ==> Hier variabel
und L #Z_DB // DB-Nummer ==> Hier variabel
übergeben?
 
Wenns auf der 300er eh nicht funktioniert hat und dauernd der Fehler OB aufgerufen wurde (war die LED rot?) kannst Du's auch löschen oder auskommentieren.
 
Ich habe jetzt auch den Fehler gefunden, allerdings noch keine Lösung.
In der alten Steuerung war ein OB85 der den Fehler unterdrückt.
Für die neuen Steuerungen gibts da allerdings kein Ersatz.
Hat jemand eine Idee wie man den OB85 ersetzten kann ?
Ja was ist denn der Fehler?

Der OB85 beseitigt nicht den Fehler sondern sorgt nur dafür daß die SPS bei dem Fehler nicht in STOP geht.
War da in dem OB85 wenigstens eine gescheite Reaktion programmiert oder war der einfach leer - das wäre höchst unsauber.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also....
Der Text ganz oben ist nur ein Teil des Bausteins. Es gibt noch ne fill Funktion usw.....
Der Baustein wird im Programm öfters verwendet, hier funktioniert er.
Da die aufrufe im Zyklus immer Daten verschieben wo Sender und Empfänger die gleiche Struktur haben.

Das Problem ist, das er im Init Schritt einmalig aufgerufen wird und an dieser Stelle in alle Richtungen Daten verschiebt.
Anschließend wird ein Remanent Merker gesetzt, der verhindert das dieser Baustein an der Stelle nochmal bearbeitet wird.

Und an dieser Stelle tritt in der Alten Steuerung der DB85 in Aktion.

Bei mir geht die Steuerung nach dem Start in Stopp. (Natürlich nur bei Memoryreset oder Komplett laden)
Wenn ich dann wieder auf Start gehe läuft die Steuerung durch, da der Remanentmerker ja gesetzt wurde wird an der Stelle der Baustein nicht mehr aufgerufen.

Die Daten die benötigt werden hat er da schon alle geschrieben. Das Programm hat viel Reserve und an der Reserve scheitert es dann.

Gruß
 
Der OB85 wurde vom OB "Programming Error" abgelöst.
Aber wie meine Vorredner schon sagten, einfach die Fehlererkennung abzuschalten, weil man den Fehler nicht findet ...

Ok, es gibt auch Leute, die bauen die dauernd leuchtende Motorkontrolleuchte in ihrem Auto aus, damit sie nicht dauernd so geblendet werden.

Nochmal sachlich:
Offensichtlich werden die Pointer für den BlkMov nicht richtig berechnet oder jemand hat, wenn es nur beim Hochlaufen auftritt, den eigentlich zum Einstellen der Anfangswerte gedachten db0 gelöscht ohne das Programm anzupassen.
 
Zurück
Oben