CP243 festgefressen....

mariob

Level-3
Beiträge
2.052
Reaktionspunkte
276
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe 2 CPU 224 mit CP243IT im Netz, bisher liefen die mit Webseiten und dienten als PG Zugriffspunkte. Nun wollte ich Daten von einer in die andere SPS transferieren. Microwin hat für sowas Assistenten, sinnigerweise habe ich beide CPUs mit einem Kanal als Server projektiert, die Konfiguration steht da auf "alle Verbindungen annehmen".
Auf einer SPS habe ich nun zusätzlich eine Clientverbindung projektiert, sie soll ein Wort aus der anderen SPS auslesen.
Ich bekomme für den Kanal nach dem Anstoßen der Kommunikation im Fehlerbyte den Fehler 5, im Handbuch steht dazu:

"Die Verbindung wurde abgebrochen bzw. es wurde versucht, einen Schreib-/Lese-Auftrag auf einem Kanal auszuführen, der nicht bereit war."
Man solle die Verbindung zum Kommunikationspartner prüfen (wie und was bitte? Kommunikationspartner sind beide vom PG erreichbar) bzw. die Konfiguration, ich denke da liegt der Hase im Pfeffer.
Nun bin ich da ein wenig ratlos, der Start der Übertragung ist gekoppelt an die Fehlerfreiheit des CP, das der Kanal nicht bereit ist wird scheinbar erst beim Kommunikationsversuch bekannt. Hmm, gibt es da irgendwelche Diagnosetools, die mir den Fehler eingrenzen helfen? Wo fange ich an?

Gruß
Mario
 
Hallo mariob,

ich würd mal in die Spezialdiagnose des CP's reingucken.
Sofern die Verbindung wirklich im CP hinterlegt wurde müsstet du da sehen ob die aufgebaut, abgebaut oder fehlerhaft ist.

Ansonsten würd ich versuchen, wobei ich mich mit der 200er Serie nicht sonderlich auskenne, die Verbindungen in die CPU zu laden (über TIA oder über's NetPro, worüber auch immer du die erstellt hast).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wobei ich mich mit der 200er Serie nicht sonderlich auskenne
ja dann lasses :p *gemein bin*

hast du die spannung schon komplett getrennt? das braucht der cp manchmal nach einer neuen konfiguration :)

richtige kanalnummer haste angegeben ? am baustein ETH_XFR

ob die verbindung besteht kannste auch nachschauen dazu musste auf ...
Zielsystem->
Informationen->
Den CP243 auswählen->
EM-Informationen->
Registerkarte Kanäle
 
Hallo,
und danke für die Antworten, ich weiß noch nichts neues, das Ding hat mich geärgert, heute abend geht es erst weiter. Ich bin gerade dabei mir die kritische Masse an Wissen anzulesen, um effektiv weiterzukommen. Nur soviel, die Einstellungen inklusive TSAPs stimmen soweit (auch laut Handbuch), mein gegenwärtiger offensichtlicher Fehler ist die Abfrage des Kommunikationskanales auf korrekte Funktion.
Ich habe zum Anstoßen der Übertragung lediglich die Fehlerfreiheit herangezogen und nicht ob der Kanal bereit ist. Das geht wahrscheinlich nach hinten los.
Ich werde berichten.....

Gruß
Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
es funktioniert noch nicht, ein Fehler ist der Start der Übertragung, ich habe bis jetzt die Bereitmeldung und die Fehlerfreiheit des CP als Startkriterium herangezogen. Die Bereitmeldung des Übertragungskanals hatte ich außen vor gelassen. Ist jetzt geändert, ohne Besserung.
Wenn ich das Bereitmeldungswort des CP aus der ETHx_CTRL Routine auswerte, so sind sowohl der Server wie auch der Clientkanal nicht bereit. Die aktivierten FTP und HTTP Kanäle werden wie konfiguriert als bereit gemeldet.
Die EM Informationen in Microwin sagen dasselbe aus. Ich hänge mal die wesentlichen Konfigurationsteile des CP hier an, die TSAPs sind laut Handbuch o.k.:
//----------------------------------------------------------------
// Konfigurationsbaustein für das Modul CP 243-1 IT. Vom Internet-Assistenten erzeugt.
//----------------------------------------------------------------
VB0 'CP243' // Modulkennung für das Modul CP 243-1 IT an Position 0
VW5 16#006C // Länge des CDB
VW7 16#0014 // Länge des NPB
VB9 16#81 // Version Konfigurationsdaten
VB10 16#00 // Version Projektkonfiguration
VW11 16#0000 //
VW13 16#0004 // Automatische Einstellung , Anwenderdefinierte IP-Adresse, CRC-Schutz aktiviert.
VD15 16#C0A80008 // IP-Adresse für Modul (192.168.0.8).
VD19 16#FFFFFF00 // Adresse Subnetzmaske für Modul (255.255.255.0).
VD23 16#00000000 // Gateway-Adresse (0.0.0.0).
VW27 30 // Keep-Alive-Intervall in Sekunden
//------------------------------------------ Verbindung 0
VB29 16#82 // Server-Verbindung. Keep-Alive-Funktion aktiviert.
VD30 16#00000000 // Verbindungen von diesen Clients (0.0.0.0) annehmen.
VW34 16#1000 // Lokaler TSAP für diese Verbindung (10.00).
VW36 16#1000 // Entfernter TSAP für diese Verbindung (10.00).
//------------------------------------------ Verbindung 1
VB38 16#83 // Client-Verbindung, Keep-Alive-Funktion aktiviert.
VD39 16#C0A80009 // Adresse des Servers für diese Verbindung (192.168.0.9).
VW43 16#1100 // Lokaler TSAP für diese Verbindung (11.00).
VW45 16#1000 // Entfernter TSAP für diese Verbindung (10.00).
//------------------------------------------ Verbindung 2
VB47 16#00 // Verbindung nicht definiert

Keine Ahnung, wo ich noch suchen soll, ich schlafe nochmal drüber...

Gruß
Mario
 
Danke Teufel,
werde ich heute abend mal tun, was ich noch nicht gemacht habe ist das Dingen mal von der Spannung zu trennen, das wird das erste.
Auffällig ist, das auch der Serverkanal keine Bereitschaft meldet, aber außer dem ETHx_CTRL ist da ja nix weiter zu aktivieren. Da dieser ja nur Dienste anbietet sollte da ja auch bei Nichtgebrauch Bereitschaft da sein?!?

Wir werden sehen
Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So,
das gesamte System spannungslos machen brachte nix, ich bin langsam am Verzweifeln, hat denn keiner sowas im Gebrauch?
Jetzt mal der Code, dieser befindet sich komplett in einem Unterprogramm, welches als erstes im Zyklus aufgerufen wird:

Netzwerk 1:
LD Ein
CALL ETH0_CTRL, #CP_Ready, CP243_CH_ready, #Error_CP
Netzwerk 2:
//Schrittkette Initialisierung
LD #Reset
MOVB 0, SBR13_Schrittkette

//Bereitschaft herstellen
LDB<> 0, SBR13_Schrittkette
JMP 0

LD #CP_Ready
UW= 0, #Error_CP
S Kanal_1_lesen, 1
MOVB 1, SBR13_Schrittkette
JMP 2

LBL 0

//Start Empfangen, dann weiterschalten
LDB<> 1, SBR13_Schrittkette
JMP 1

LD #CP_Ready
UW= 0, #Error_CP
U CP243_CH_1_ready
S CP_Tansfer_Start, 1
MOVB 2, SBR13_Schrittkette
JMP 2

LBL 1

//Warten auf Übertragungsende
LDB<> 2, SBR13_Schrittkette
JMP 2

LD Ein
R CP_Tansfer_Start, 1

LD Kanal_gelesen
R Kanal_1_lesen, 1
MOVB 0, SBR13_Schrittkette

LBL 2

Und Netzwerk 3:

LD Kanal_1_lesen
CALL ETH0_XFR, CP_Tansfer_Start, Dachboden_lesen, Aussentemperatur, CP_Transfer_Abbruch, Kanal_gelesen, Chan_Error

So, das wars, das Ding ist noch weit von Perfektion entfernt, sollte aber funktionieren. Tut es aber nicht, da im zweiten Schritt der Schrittkette nicht weitergeschalten wird. Ursache ist die Variable CP243_CH_1_ready, diese geht nicht auf High weil aus mir unerfindlichen Gründen die projektierten Kanäle nicht bereit sind.
Wie schon geschrieben, die CPU ist eine 224, Rel 02.01, der CP ist ein 243-IT FW Stand 01.00, Hardwarestand 17, Keine Fehler weder in der CPU noch im CP und dessen Projektierung. Dieses System wie die Gegenstelle ist via PG erreichbar, alles an einem Switch. Blöder Mist.

Gruß
Mario
 
ich arbeite in der 200er nie mit lokalvariabeln ;)
und wenn du dein programm nicht hochlädst kann ich auch nicht die konfiguration des cp´s sehen;)

also so verknüpfe ich das immer und es funktioniert auch immer :p

cp231.jpg
 
Danke für die Antwort Teufel,
ja, dann muß ich wohl mal das Programm als Ganzes reinstellen, Du hast recht, Du willst ja auch mal die Konfiguration sehen, sorry.
Ich werde das nacher mal noch versuchen, spätestens morgen. Der Unterschied zu meiner Variante ist schon groß, wenn Du Deinen Konstrukt mal nach AWL übersetzen läßt wirst Du merken das da sehr wohl Lokalvariablen verwendet werden. Das war mir zu unelegant und ich habe das kürzer formuliert. Bis jetzt ging das an anderer Stelle gut. Das wäre der erste mögliche Stolperstein.
Der zweite Punkt ist die Verwendung der Lokalvariablen, wo die FUP/KOP/AWL Kompatibilität nicht nötig ist, der dritte die Auslagerung meines Codes in ein separates Unterprogramm.
Wenn ich morgen Zeit habe bastele ich das ganze mal ohne Lokalvariablen nach Main, mal sehen ob das besser geht.
Den Merkerbereich meide ich bei der 200 sehr stark, da dieser unter Umständen von einigen externen Komponenten benutzt wird (z.B. TD 200) und ich habe keinen Bock mir da immer die Lücken zu suchen. Und soo groß ist der ja nun auch nicht, wenn man was übersieht geht man dann einem grausamen Schicksal entgegen.
Nochwas, was meldet Dir ein konfigurierter Serverkanal, ist der immer bereit oder meldet der nicht bereit (also in den Zielsysteminformationen)?
Interessanterweise hat die Gegenstelle dieselbe Hardware, nicht so üppig ausgebaut aber dieselbe CPU/CP, der dortige Serverkanal (kein Clientkanal konfiguriert) meldet interessanterweise auch keine Bereitschaft.

Gruß
Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
mal noch so als Feedback, es funktioniert, ich hatte nicht ernst genommen das die TSAPs auf der Serverseite ebenfalls auf den Clientkanal angepasst werden müssen.
Also gleich ob Lokalvariablen oder nicht, die Geschichte geht schon recht stabil....
Danke an alle für die Hilfe, hat auf alle Fälle weitergeholfen.

Gruß
Mario
 
Zurück
Oben