# S5 115 - Profibus - S7 312



## Aksels (30 November 2007)

Liebe Forumsteilnehmer.
Ich habe da ein Problem.
Es geht um ein vorhandenes System mit S5-115 CPU. Aus dieser wurden Daten in einen Unix-PC eingelesen (wurde mir so gesagt).
Der Unix-PC ist entsprechend alt und soll ersetzt werden.
Die Profibus-Karte war dem Projektierer aber zu teuer.
Deswegen soll ich mit eine S7 zwischen Profibus und Ethernet übersetzen.
Das sei ganz einfach.
Mein HW-Besteller hat mir nun folgende Komponenten vorgesetzt:
CPU 312 6ES7 312-1AE13-0AB0 V2.6.4
CP 342-5 6GK7 342-5DA02-0XE0 V5
CP 343-1 Lean 6GK7 343-1CX10-0XE0 V2

Die S5:
6ES5 942-7UB11
6GK1-5 Mehr sei dort nicht lesbar, muss sonst selber mal rausfahren.


Ich habe das S5-Programm ausgelesen. Die Profibus-Parameter gibts bei der CPU ja nicht im DB1. Einen in der Anleitung beschriebenen FB1 finde ich aber auch nicht.
Wie bekomme ich die Parameter für der Profibus aus der S5 raus?
Das sei ja soo einfach. Und ich Depp lass mich darauf ein *grummel*.

Gruß,
Aksels


----------



## centipede (30 November 2007)

Hi,

deine PB Baugruppe kann eine CP5430 6GK1543-0****
oder eine CP5431 6GK1543-1*****.

Beide Baugruppen werden mit einem COM Paket projektiert, in der Baugruppe muß ein RAM oder ein EPROM stecken.
Bei einem RAM musst du mit dem Programmiergerät und einem S5 Kabel dir die Daten aus der Baugruppe holen. Es gibt einen PG Anschluss an der Baugruppe. Das geht im RUN.

Als COM Paket (NCM) gab es mehrere Versionen, es kommt auf deine Baugruppe an welche du mindestens brauchst. Mit der V5 solltest du auf der sicheren Seite sein.

Danach musst du noch ermitteln, wie die Kommunikatkion aufgebaut war. Ich denke hier wurde nicht Profibus DP angewandt, da nimmt man eigentlich keine 5431. Wahrscheinlicher ist hier FDL oder sogar FMS.

Ich denke du möchtest an der S5 nichts ändern, also musst du genau wissen was läuft.
Bei FDL hast du mit deiner CP342-5 keine Probleme, sie kann aber kein FMS.

Also ohne Auslesen der CP wirst nicht so ohne weiteres weiterkommen.

Gruß, Centi


----------



## Bitverbieger (30 November 2007)

Besorge mal die genaue Bestellnummer vom CP in der S5
Falls das eine 6GK1543-1AA01 ist, dann müsste eine Verbindung
zwischen den Systemen funktionieren.


----------



## centipede (30 November 2007)

Bitverbieger schrieb:


> Besorge mal die genaue Bestellnummer vom CP in der S5
> Falls das eine 6GK1543-1AA01 ist, dann müsste eine Verbindung
> zwischen den Systemen funktionieren.



Und warum sollte es mit einer 5430 nicht funktionieren?


----------



## Aksels (2 Dezember 2007)

*Furchtbarer Auftrag.*

Danke für die Antworten.
Kleines Update meiner nicht vorhandenen Fortschritte:
NCM war schonmal ein guter Tip. (Ich hab bisher nur ein paar kleine Kläranlagenaufgaben gehabt selten mal mit einem Sensor am Profibus). Hatte das Tool noch nie bewusst bemerkt. 
Leider muss ich mir schon wieder eingestehen, daß ich mich da übernommen habe. Bin natürlich gleich mit meinem NCM S7 V5 runtergestiefelt. Kann keine Kommunikation aufbauen. Die haben nur einfache Stecker ohne Durchschleifung. Wenn ich von dem CP den Stecker abziehe geht sie in Stop. Außerdem hab ich den Verdacht, daß man da ein anderes Kabel als das für den MPI-Bus braucht oder?
CP ist übrigens ein 6GK1 543 1AA01.
Hab nur das RS232 zu MPI-Kabel (6ES7 972-0CA21-0XA0) dabei gehabt.
Ging nicht einmal an der S7. Hätte ich bloß die Zeit gehabt die S7 auszuprobieren, als sie noch in der Firma war.
Es scheint das Kabel defekt zu sein. Hab meinen Laptop neu installiert deswegen. Geht immer noch nicht. Mit dem CP5512 PCMCIA, das ich danach zum Testen geholt habe gehts an meiner Test-CPU einwandfrei.
->Gestrige Neuinstallation für die Katz!
 Könnte echt verzweifeln. Hab noch keine Zeile Programm geschrieben und solls am Mittwoch fertig haben.

Ich werde jetzt mit funktionierendem Adapter am Montag nochmal auf den Profibus der Anlage gehen. Hab hier auch ein Profibuskabel gefunden beidseitig mit Doppelsteckern und einstellbaren Abschlüssen. Das müsste man doch auf das CP 5512 stecken können? Ich hoffe daß ich dann nicht zu blöd bin das NCM-Programm zu bedienen.

Kann ich überhaut schon etwas Programmieren, solange ich noch nicht weiss ob Profibus DP, FDL oder FMS?



Ich hab von dem soo einfachen Müll echt keine Ahnung merk ich jetzt.
Sagst mir bitte ehrlich, Ihr habt da nen Überblick über die Komplexität: Kann ich das schaffen oder soll ichs abgeben?

Gruß,
Aksels


----------



## Bitverbieger (2 Dezember 2007)

centipede schrieb:


> Und warum sollte es mit einer 5430 nicht funktionieren?



Der oben beschriebene  Step7 Profibus CP kann kein FMS, die 5430
kann aber kein DP sondern nur FMS


----------



## Bitverbieger (2 Dezember 2007)

Also, eine DP-Kopplung zwischen den beiden Systemen ist mit dieser Hardware
möglich.

Benötigt wird:
1. Für die Programmierung des CP5431 wird das COM-Paket 5431 .
2. Für die internen Einstellungen im CP5431 wird ein Teil der GSD-Datei
    vom CP 342-5, sowie eine HEX Einstellungen (USR Param Daten)benötigt.
    Die Software COM Profibus V5.1 liefert die entsprechenden Einstellungen.
3.Die Step5 - Seite muß als Master eingestellt bleiben, die Step7 - Seite
   entsprechend Slave. Grund: Der CP5431 kann leider nur als Master
   am Bus betrieben werden.
4. Die Menge der auszutauschenden Bytes werden dann in beiden Systemen
    eingestellt.

Die ist die grundsätzliche Vorgehensweise bei dieser Kopplung.


----------



## centipede (2 Dezember 2007)

Bitverbieger schrieb:


> Der oben beschriebene  Step7 Profibus CP kann kein FMS, die 5430
> kann aber kein DP sondern nur FMS



Nur weil die S7 CP kein FMS kann, heißt das doch nicht das bis jetzt kein FMS gefahren wird (jeder macht mal Fehler bei der HW-Auswahl).
Die Wahrscheinlichkeit, dass hier DP gefahren wird ist äußerst gering, da hier in der Regel dir IM308 B/C eingesetzt wurde (viel günstiger).

Ich denke, es handelt sich hier um eine FDL Verbindung, die ist schnell zu parametrieren und funktioniert einfach.

@Aksels

du kommst an die S5 CP nicht über Profibus ran, und mit der NCM V5 meinte ich nicht die NCM für S7 sondern das alte NCM (DOS-Programm), das unter Step5 läuft (war mein Fehler).
Online kommst du mit einem normalen AS511 Kabel, das du auch für eine S5 verwendest.

Also nochmal, mit deiner Step7 Ausrüstung kommst du hier nicht weiter.

Eine Möglichkeit gibt es auch noch, du kannst mit einem Profibus Telegramm Analyzer den jetzigen Telegrammverkehr mitlesen. Ich denke hier mangelt es aber evtl. an Fachwissen (nicht böse gemeint).


----------



## centipede (2 Dezember 2007)

Bitverbieger schrieb:


> Also, eine DP-Kopplung zwischen den beiden Systemen ist mit dieser Hardware
> möglich.
> 
> Benötigt wird:
> ...



Dir ist auch klar, dass hier evtl. Anpassung an den HTB's in der S5 erfolgen müssen?


----------



## IBN-Service (2 Dezember 2007)

centipede schrieb:


> ...
> Eine Möglichkeit gibt es auch noch, du kannst mit einem Profibus Telegramm Analyzer den jetzigen Telegrammverkehr mitlesen. Ich denke hier mangelt es aber evtl. an Fachwissen (nicht böse gemeint).



Hallo c.,

das Loggen des Profibusses ist wirklich keine einfache Sache.
Die Header und der grundsätzliche Telegrammaufbau beim PB ist
deutlich aufwändiger als z.B. bei CAN - Bus oder den meisten 232 - Protokollen.

Dagegen könnte das Ermitteln der *physikalischen *Parameter schon mit
einfachen S7 - Hilfsmitteln gelingen.
(Stichwort PG -Schnittstelle "Auto")

CU

Jürgen

.


----------



## centipede (2 Dezember 2007)

IBN-Service schrieb:


> Hallo c.,
> 
> das Loggen des Profibusses ist wirklich keine einfache Sache.
> Die Header und der grundsätzliche Telegrammaufbau beim PB ist
> ...



Das war mir schon klar, aber ich möchte ihm alle Möglichkeiten aufzählen, die er so hat, und da gehört dies halt dazu.


----------



## Aksels (3 Dezember 2007)

*Furtuna ist mal wieder zickig: CP 543 macht FMS*

Hallo liebe Forumsteilehmer.
Wie soll es anders sein, die CP 543 arbeitet im Moment mit FMS, was ja mein S7-Baustein nicht kann.
Das bedeutet, ich muss doch an der S5 rumprogrammieren.
Erster schritt wird dann wohl sein das COM-DOS Programm für den CP543 herzubekommen.
Hab da nur Sorgen, daß die anderen zwei S5 SPSen dann auch noch umgestellt werden müssen, die am selben Bus hängen und Daten austauschen....
Fällt jemandem noch etwas anderes ein?
Ist es leichter an die S5 noch einen Baustein anzustecken, oder über einen anderen Stecker zu gehen? 
Gehts über des S5-PG Anschluss mit Spezialkabel oder S7 Baustein?
Bin für jede Hilfe dankbar.

Gruß,
Aksels


----------



## Question_mark (4 Dezember 2007)

*Schlag den HW-Besteller ....*

Hallo,



			
				Aksels schrieb:
			
		

> Mein HW-Besteller hat mir nun folgende Komponenten vorgesetzt:
> CPU 312 6ES7 312-1AE13-0AB0 V2.6.4
> CP 342-5 6GK7 342-5DA02-0XE0 V5
> CP 343-1 Lean 6GK7 343-1CX10-0XE0 V2



Mit dem CP 342-5 hat Dir der Hardwarebesteller ein Ei ins Nest gelegt, der kann wirklich kein FMS-Protokoll. Der einfachste Weg ist, einen FMS-fähigen S7-CP zu bestellen. 



			
				Aksels schrieb:
			
		

> Gehts über des S5-PG Anschluss mit Spezialkabel oder S7 Baustein?



Nein, der PG Anschluss am CP5431 ist nur zum Laden der mit COM5431 erstellten Parametrierung (sofern RAM im CP5431 gesteckt) und zur Online-Statusbeobachtung geeignet. 



			
				Aksels schrieb:
			
		

> Hab da nur Sorgen, daß die anderen zwei S5 SPSen dann auch noch umgestellt werden müssen, die am selben Bus hängen und Daten austauschen....



Nein, die anderen S5-SPS'en werden keine Probleme machen. Du musst nur für den CP5431 eine zusätzliche Verbindung mit COM 5431 projektieren und auf den CP laden. Vorausgesetzt, der Hardwarebeschaffer besorgt Dir einen FMS fähigen S7-CP.
Eine andere Möglichkeit sehe ich im Moment nicht. Hoffe das hilft Dir weiter, auchg wenn es schlechte Nachrichten sind.



			
				Aksels schrieb:
			
		

> Die Profibus-Karte war dem Projektierer aber zu teuer.


Hast Du schon mal die Kosten für die S7-Hardware als Gateway und den Kostenaufwand für die S7-Programmierung betrachtet ??? Die sind doch wesentlich höher als für einen popeligen Profibus CP. Hau dem Projektierer auch was auf die Ohren  

Gruß

Qestion_mark


----------



## Aksels (5 Dezember 2007)

*Wohlan!*

Ich denke, das ist richtig. Ich habe soeben eine CP 343-5 bestellt.
Jetzt muss ich halt warten bis Sie eintrifft.
Ich berichte dann weiter.
Danke soweit an alle. Tolles Forum.


Gruß,
Aksels


----------



## Aksels (8 Dezember 2007)

*Weiteres Vorgehen.*

Gestern ist der CP 343-5 eingetroffen.
Werde mir übers Wochenende das Demo-Programm hier
http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW
zu Gemüte führen.

Gruß,
Aksels


----------



## Aksels (13 Dezember 2007)

*Werte*

Hallo Leute.

Ich habe die ersten Werte die den Profibus betreffen sollen, mit denen ich mal wieder nichts anfangen kann.

- -------------------------------------------------------
ProfiBUS FMS
- -------------------------------------------------------

Leitrechner:
    Stationsadresse 1
    500 kBit/s

    KR 2:
        LSAP    6
        DSAP    6
        PA      2

    KR 3:
        LSAP    8
        DSAP    8
        PA      3

    gemeinsame Werte:
        PRSA    128
        MPSH    0
        MPSL    241
        MPRH    0
        MPRL    241
        MSCC    1
        MRCC    3
        MSAC    0
        MRAC    0
        CI      500

        MMAZ

        Flags   00 30 00   00 30 00

Ich hab langsam die Nase voll.
Möchte hier irgendjemand das Programm schreiben? Derjenige möchte doch bitte mal eine Preisvorstellung abgeben.
Bin verzweifelt.


Gruß,
Aksels


----------



## centipede (14 Dezember 2007)

Hi,

ich versuche dir mal das zu übersetzen, was ich weiß:

KR: ist die Kommunikationsreferenz, gibst du in der Verbindungsprojektierung in Step7 an

LSAP/DASP: Local bzw. DestinationSAP, gibst du auch in der Verbindungsprojektierung an. Muss zusammenpassen mit Partner und geht "über Kreuz"

PA: denke ich heisst Partneradresse, Profibusadresse des Koppelpartners

PRSA: kann ich nicht sagen, evtl. HSA (Highest Station) vom Profibus

MPSH bis CI. findest du in "Weitere Eigenschaften der Verbindung"
MMAZ: Master-Master Azyklisch

Ich denke es ist das Beste du Projektierst mal eine FMS Verbindung in S7 und liest dich durch die Hilfen.

Dann heißt es testen,testen,.....

Wenn du nicht mehr Infos vom Rechner bekommst, ist es wirklich nicht tragisch wenn es etwas länger dauert. Ich denke auch jemand anderes braucht hier seine Zeit.

Wenn hier keine Variablen deklariert wurden auf FMS Seite, kann es aber mit den Infos wirklich funktionieren.

Gruß, Centi


----------



## Aksels (17 Dezember 2007)

*Weiter gehts:*

Besten Dank für die Ausführungen an centipede.
Habe fast alle Einstellungen gefunden.
Kurze Frage: Warum kann ich bei mir RCC nicht auf 3 stellen, sondern nur auf 0 oder 1?

PRSA und Flags sind mir auch noch nicht klar.
Ich hab mir aus den Beispielen von Projekt-Profibus-en den FMS-Client kopiert.
Da ich ja von zwei S5-en über FMS lese, müsste das mit dem "Only execute, when no other Job is active" im FC100 doch dann ganz gut passen, oder?

Gruß,
Aksels


----------



## Aksels (19 Dezember 2007)

*Stecke wieder fest.*

Guten Abend allerseits.

Stecke wieder fest. 
Ich bekam diese Angaben:

Die verwendeten Indizes im einzelnen:
PA 2:
120: Meldungen (32 16Bit-Worte)
121: Meßwerte (50 16Bit-Worte)
122: Zählwerte (16 32Bit-Worte)
123: Befehle (32 16Bit-Worte)
124: Sollwerte (32 16Bit-Worte)
PA 3:
130: Meldungen (32 16Bit-Worte)
131: Meßwerte (50 16Bit-Worte)
132: Zählwerte (16 32Bit-Worte)
133: Befehle (32 16Bit-Worte)
134: Sollwerte (32 16Bit-Worte)

Und habe nun mal versucht die 120 auszulesen.
Ich bekomme aber leider den Fehler Hex601. Das bedeutet 
"Invalid object."
Müsste doch heissen, daß der Index nicht stimmt.
Habe den Index ganz normal in einem String[5]: '<120>'
Oder muss der einen anderen Datentyp haben?

Gruß,
Aksels


----------



## Aksels (21 Dezember 2007)

*Weitere Infos:*

Also:
PRSA gibt es in S7 nicht, sei aber nicht wichtig.
Flags sind die Dienste (jedes Häkchen ein Bit. 3 müsste lesen Schreiben sein).
Die RCC ist das Problem. Dieser Puffer lässt sich in S7-300 nur bis auf 1 erhöhen. In S5 und S7-400 geht mehr.
Habe deswegen den Sinec NCM 4.6 bekommen. Habe die Daten aus dem S5 CP ausgelesen, aber finde dort den SCC (Sendepuffer!) nicht.
Wer kann helfen?
Gruß,
Aksels


----------



## hr333 (21 Dezember 2007)

*Holzweg?*

Hallo Alxel S.
Du hast nicht gesagt, wie die Daten auf dem Ethernet weiter verwendet werden sollen.

Vielleicht geht es ja einfacher:

Falls nämlich die Merker/DBs/E/A aus der S5 über Netzwerk auf einen PC mit Siemens OPC-Server übertragen werden sollen, brauchst Du keine einzige Zeile Code. 

Du kannst in SIMATIC NetPro die Verbindung zusammenklicken.
Im OPC-Server trägst Du dann die Stationen ein, von denen übertragen werden soll, und schon stehen Dir per OPC alle Daten der S5 zur Verfügung.

Die S7 mit DP und CP343 fungiert dann als reiner Profibus-Ethernetadapter.

Nur wenn Du die Werte von der S5 in der S7 irgendwie verändern/verknüpfen/berechnen wolltest, müsstest Du im S7-Programm die Daten auslesen. Als reiner Profibus-Ethernetadapter brauchst Du das nicht.

Dass das ganze so einfach geht hat einen einfachen Hintergrund:
In den meisten CPs sitzt ein eigener Prozessor und eine Firmware, die das Protokoll verarbeitet.

grx
hr


----------



## Aksels (10 Januar 2008)

*Geht leider nicht.*

Auf dem Leitsystem läuft kein Windows (sondern QNX), also keine OPC-Möglicheit.
Also werd ich weiterexperimentieren müssen.

Gruß,
Aksels


----------



## marlob (10 Januar 2008)

Aksels schrieb:


> Auf dem Leitsystem läuft kein Windows (sondern QNX), also keine OPC-Möglicheit.
> Also werd ich weiterexperimentieren müssen.
> 
> Gruß,
> Aksels


Kennst du Nautsilus. Das ist eine OPC Software für QNX® RTOS.
Das war zumindest einer der ersten Links die ich in google gefunden habe.


----------



## hr333 (10 Januar 2008)

Aksels schrieb:


> Auf dem Leitsystem läuft kein Windows (sondern QNX), also keine OPC-Möglicheit.


Ja, das ist wahr.

Mit fremden OPC-Servern (die es für S5/S7 gibt) kann man nicht in NetPro alles durchschalten, die haben ein eigenes Konfigurationstool. Ob die dann zu dem Routing in der Lage sind, weiss ich nicht.


Über welches Protokoll willst Du die Daten aus der S7 nach QNX rüberholen?


grx
hr


----------



## Aksels (10 Januar 2008)

*Mhhhh.....*

@hr333 das soll dann über den Lean Ethernet-Baustein gehen.

Ich bekomme immer den Fehler 
Funktion FMSSender
Ereignis: OV nicht vorhanden auf FMS Verbindung 2 währen des FMS-Auftragzugriffs 2 mit FMS-Index 120

Aus Step5:
VFD-Variableneditor
Index Typ ZGRF Passw S5-Adresse ANZW SSNR
120 AR 32 _ _ DB202 0 DB202 50 0
IN 16
121 AR 50 _ _ DB222 0 DB222 50 0
IN 16
122 AR 32 _ _ DB232 0 DB232 50 0
IN 16
123 AR 32 _ _ DB212 0 DB212 50 0
IN 16
124 AR 32 _ _ DB242 0 DB242 50 0
IN 16

Sollte es also doch gehen.
Wenn ich an irgendwelchen Parametern Spiele hab ich immer gleich keinen Verbindungsaufbau.


@Bitverbieger
Kann es daran liegen (Zitat):
2. Für die internen Einstellungen im CP5431 wird ein Teil der GSD-Datei
vom CP 342-5, sowie eine HEX Einstellungen (USR Param Daten)benötigt.
Die Software COM Profibus V5.1 liefert die entsprechenden Einstellungen

Ich kann COM Profibus 5.1 leider nicht benutzen da er mir nicht erlaubt die PG/PC-Schnittstelle einzustellen. Da steht immer nur "keine". Klicke ich auf "Auswählen" sehe ich auf der Installierten Seite alle Schnittstellen wie in Step7. Mist!





Von seiten Siemens hiess es, das läge an dem MRCC 3. Die S7-300 kann dort nur 1!
Der Supportler meinte dann ich solle es unter Step5 mit dem NCM-Programm für COM5431 anders einstellen. Wunderte sich dann, daß da gar nichts drinsteht an der stelle wo die 3 stehen sollte.
Hernach meinte er ich müsse mit den Parametern SCC RCC rumspielen einer müsse auf 1 einer auf 0 stehen.
Das wollte Step7 abernicht so haben und hat die Parameter ummer wieder korrigiert.
Ich geh jetzt erstmal heim drüber schlafen und mach morgen weiter.

Vielleicht hat ja noch jemand ne Idee. Sonst stelle ich morgen Screenshots ein mit meinen Einstellungen.

Gruß,
Aksels


----------



## hr333 (10 Januar 2008)

Aksels schrieb:


> @hr333 das soll dann über den Lean Ethernet-Baustein gehen.


 
Ja, dachte ich.
Du verbindest den CP343-1 Lean über Eurer Netzwerk mit dem QNX-PC.

Als Transportprotokoll kommunizieren die beiden dann wahlweise direkt auf Ethernet-Basis (also direkt über die MAC-Adresse, Siemens nennt das ISO), oder über TCP/IP.

Aber welches höhere Übertragungsprotokoll wirst Du auf QNX-Seite verwenden? (z.Bsp. ProfiNet IO, Profinet CBA, FTP, S7-Kommunikation,...?)

grx
hr


----------



## Aksels (11 Januar 2008)

*Ethernet Höheres Protokoll.*

Tja, wahrscheinlich brauche ich mir darüber gar keine Gedanken machen.
Ich hab nicht mehr viel Zeit (1 Woche) dann fordern die Verantwortlichen eine andere Lösung.
Heute nachmittag werd ich nochmal mit Siemens telefonieren. Wenn die es nicht hinbekommen, weiß ich auch nicht mehr weiter.
Ich stelle dann alles was ich habe hier ein. Ich habe ja immeroch Hoffnung, daß hier im Forum jemand eine zündende Idee hat.

Gruß,
Aksels


----------



## JoopB (12 Januar 2008)

> *Zitat Aksels*
> Ich kann COM Profibus 5.1 leider nicht benutzen da er mir nicht erlaubt die PG/PC-Schnittstelle einzustellen. Da steht immer nur "keine". Klicke ich auf "Auswählen" sehe ich auf der Installierten Seite alle Schnittstellen wie in Step7. Mist!


COM Profibus braucht ein schnittstelle die das Com Profibus protocol unterstuts, z.b. ein CP5512. 
In Step7 konte sie bei PG/PC-Schittstelle einstellen sehe of sie eine schnittestelle auf ihre rechner had die das protocoll unterstuts. Z.b ein MPI II fon Process Informatik unter stutz unter S7 MPI und Profibus aber keine COM Profibus.


----------



## Aksels (14 Januar 2008)

*Juhuu!*

Ich habe zum erstenmal Daten bekommen ohne Fehlermeldung.
Hab die Höchste Profibusadresse auf 31 gestellt (keine Ahnung, ob das ausschlaggebend war) und dann mit den andere Sachen gespielt.
In den Verbindungsparametern -> Optionen der beiden FMS-Verbindungen gibt es einen Reiter Variablen des Partners.
Dort stand Auslesen: Keine.
Ich nahm an daß diese Einstellung für das Auslesen mittels der Einstellungen unter "Variable Melden" gilt und habe dem erst keine Bedeutung beigemessen.
Nun hab ichs aber mal auf "Alle" auslesen gestellt, und siehe da, der "nicht vorhanden" Fehler ist weg.
Ich mach heute noch das Programm zum auslesen aller Daten fertig und berichte dann über den Ethernet-Teil...
Dank an alle, die mitgeholfen haben.

Gruß,
Aksels


----------



## Aksels (28 Januar 2008)

*Weiter mit TCP/IP*

So. Nach kleiner Pause geht es nun weiter.
Habe folgende Verbindungen erstellt:
IP-Adresse:  192.168.0.102
S7 Subnetz ID: 0025  000B
Verbindungspartner unspez.



Für  DB500:
Betriebsart:  Send/Receive
ID (Hex): 0001 A050
Aktiver  Verbindungsaufbau ist nicht angehakt.
Port  2000
Ich habe bei meinem  AG_Send-Aufruf folgende Daten:
Connection ID    :  1
LADDR : W#16#110
Länge :  356




Für  DB501:
Betriebsart:  Send/Receive
ID (Hex): 0002 A050
Aktiver  Verbindungsaufbau ist nicht angehakt.
Port  2001
Ich habe bei meinem  AG_Send-Aufruf folgende Daten:
Connection ID    :  2
LADDR : W#16#110
Gesendet wird der DB500 
Länge :  356

Programm sieht so aus:
      CALL  "AG_SEND"
       ACT   :=M50.0
       ID    :=1
       LADDR :=W#16#110
       SEND  :=DB500
       LEN   :=356
       DONE  :=M1.2
       ERROR :=M1.3
       STATUS:=MW200

CALL  "AG_SEND"
       ACT   :=M50.1
       ID    :=2
       LADDR :=W#16#110
       SEND  :=DB501
       LEN   :=356
       DONE  :=M1.4
       ERROR :=M1.5
       STATUS:=MW202





Ich hoffe das klapp so.
Was mich noch interessieren würde: Ich habe in dem Netz wo die S7 mit dem Lean-Baustein drinhängt einen Internetzugang.
Habe Port 2000 von außen an die SPS weitergeleitet. So müsste ich doch von ünerall aus das Ding programmieren können (unsicher ich weiß, aber bis das Programm fertig ist...). Problem: wo stelle ich in der S7-Software die adnere IP-Adresse ein, an die er sich verbinden soll? DIe heisst ja nciht mehr 192.168.0.102 sondern ist eine vom Provider vergebene.
S7-Lean hat den Router eingestellt, nmap meldet Port Ok. Nur an Step7 hakts.

Gruß,
Aksels


----------



## hr333 (29 Januar 2008)

da weiss ich was  

Du musst in deinem Step7-Projekt die IP von deinem CP 343-1 auf die aktuelle vom Provider einstellen. Die hält ja normalerweise 24h.
Du darfst aber nicht die Hardwarekonfig hochladen, sonst ändert er die IP im realen CP 343-1 und schon hast Du keine Verbindung mehr 

Die Kommunikation geht nur über Port 102 (bin ich ziemlich sicher).

gruss
:twisted:


----------



## Aksels (7 Februar 2008)

*Weiter geht's!*

Guten Tag, zusammen.
@ hr333: Das mit der IP hat gepklappt. Muss jetzt halt nur reinfahren, wenn ich was an den Verbindungen ändere. Ein riesen Vorteil. Danke.

Ich habe die kommunikationsparameter noch anpassen müssen:

Betriebsart Fetch Passiv auf Connection ID 1

Betriebsart Write Passiv auf Connection ID 2

Damit hat das andere System eine Verbindung Aufbauen können und Daten lesen können.

Nun habe ich die Daten auf vier DBs aufteilen müssen.
Zwei sind zu senden zwei zu empfangen.
1. Frage:
Muss ich die beiden Sendungen und/oder auch die Empfangs-Teile gegeneinander verriegeln, oder kann der CP das alles über die TCP-Verbindungen gleichzeitig verarbeiten?

Die Sendungen gehen beide über ID 1 Port 2000.
Die beiden Empfangs-Vorgänge sollen über ID2 Port 2001 laufen.

2. Frage Die Beispiele sind alle nur zum Empfangen oder Senden von einem DB.
Kennt jemand ein Demoprogramm bei dem man nur noch einen InstanzDB braucht und die ID und LADDR als Parameter übergeben kann (Mehrfachaufrufe!)?


Gruß,
Aksels


----------



## argv_user (7 Februar 2008)

Aksels schrieb:


> 1. Frage:
> Muss ich die beiden Sendungen und/oder auch die Empfangs-Teile gegeneinander verriegeln, oder kann der CP das alles über die TCP-Verbindungen gleichzeitig verarbeiten?
> 
> Die Sendungen gehen beide über ID 1 Port 2000.
> Die beiden Empfangs-Vorgänge sollen über ID2 Port 2001 laufen.



Da musst Du nichts mehr verriegeln, denke ich.


----------



## Aksels (11 Februar 2008)

*Ok, keine Verriegelung.*

Programm sieht jetzt so aus:
N1
      CALL  "AG_SEND"
       ACT   :=M50.0
       ID    :=1
       LADDR :=W#16#110
       SEND  :="S5KR2Rd".Data
       LEN   :=228
       DONE  :=M50.1
       ERROR :=M50.2
       STATUS:=MW100


N2
      R     M     50.0

      SET   
      U     M     50.1
      SPB   don1
      SET   
      U     M     50.2

      SPB   err1

      SPA   end1

don1: S     M     50.0
      SPA   end1

err1: NOP   1
      NOP   1
      S     M     50.0
end1: NOP   1


N3
       CALL  "AG_SEND"
       ACT   :=M51.0
       ID    :=1
       LADDR :=W#16#110
       SEND  :="S5KR3Rd".Data
       LEN   :=228
       DONE  :=M51.1
       ERROR :=M51.2
       STATUS:=MW102


N4
      R     M     51.0

      SET   
      U     M     51.1
      SPB   don2
      SET   
      U     M     51.2

      SPB   err2

      SPA   end2

don2: S     M     51.0
      SPA   end2

err2: NOP   1
      NOP   1
      S     M     51.0
end2: NOP   1



N5
       CALL  "AG_RECV"
       ID    :=2
       LADDR :=W#16#110
       RECV  :="S5KR2Wr".Data
       NDR   :=M52.0
       ERROR :=M52.1
       STATUS:=MW104
       LEN   :=MW106


N6
       CALL  "AG_RECV"
       ID    :=2
       LADDR :=W#16#110
       RECV  :="S5KR3Wr".Data
       NDR   :=M53.0
       ERROR :=M53.1
       STATUS:=MW108
       LEN   :=MW110



Schein bis jetzt zu klappen.

Gruß,
Aksels


----------



## Aksels (14 Februar 2008)

*Schreiben in S5 geht nicht*

Sodele,
ich habe jetzt das meiste im Griff.
Es hapert nur noch am Schreiben in die S5.

      CALL  FB     6 , DB304
       REQ   :=DB104.DBX0.0
       ID    :=DB104.DBD2
       VAR_1 :=DB104.Write_VAR_Index    //124
       SD_1  :="S5KR2Wr".Data.Soll
       DONE  :=DB104.DBX13.0
       ERROR :=DB104.DBX13.1
       STATUS:=DB104.DBW14

"S5KR2Wr".Data 
Data.Bef[1]    WORD    W#16#0    W#16#0000        
Data.Bef[2]    WORD    W#16#0    W#16#0000        
Data.Bef[3]    WORD    W#16#0    W#16#0000        
Data.Bef[4]    WORD    W#16#0    W#16#0000        
Data.Bef[5]    WORD    W#16#0    W#16#0000        
Data.Bef[6]    WORD    W#16#0    W#16#0000        
...

nach 32 Words kommen 32 Soll-Werte.

Aus der S5 ausgelesen:
VFD-Variableneditor
Index   Typ  ZGRF Passw S5-Adresse ANZW       SSNR
120     AR 32 _   _     DB202 0     DB202 50   0
    IN 16
121    AR 50    _    _    DB222 0     DB222 50     0
    IN 16
122     AR 32    _    _    DB232 0        DB232 50     0
    IN 16
123    AR 32    _    _    DB212 0    DB212 50     0
    IN 16
124     AR 32    _    _    DB242 0     DB242 50     0
    IN 16


Das stimmt mit dem überein, was in NCM S7 in der Verbindung angezeigt ist.
Die Verbindung ist Read Write deklariert.
Ich habe auch schon versucht die Words in Integer16 zu ändern, aber der gleiche Effekt:
Ich bekomme einen Fehler mit Status 4 im Call FB6.
Das bedeutet 
"Der Empfangsdatenbereich ist zu kurz oder die Datentypen stimmen nicht überein."
Es ist ein "Lokale" Fehlermeldung laut Hilfe. Bedeutet wohl das der Verbindungspartner noch nicht behelligt wurde?
Im NCM7 bekomme ich "P-Bus" "Protokollfehler im MiniProtokoll"
Der Empfangsdatenbereich kann es wohl nicht sein. Lief ja seit Jahren mit der alten Leittechnik.
Der Datentyp den ich genommen habe taugt aber fürs lesen, warum nicht fürs schreiben.
Kann das mit "Variable Melden" in der FMS-Verbindung zu tun haben? Da steht bei mir nichts drin.
Bin wieder Ratlos.

Gruß,
Aksels


----------



## Aksels (14 Februar 2008)

*Boa ey!*

Muahahahahahaha!
Ganz alleine rausbekommen *schlulterklopf* *bauchpinsel* *bruststolzschwell* *nichtvorhandenehaarezurückwerf*


Jetzt zum peinlichen Teil:
Falsche Version vom FB6 in der S7. Sollte man ja immer zuerst prüfen.


Besten Dank an alle!

Gruß,

Aksels


----------



## Aksels (15 Februar 2008)

*Glitches.*

Liebe Mitstreiter,

ich habe hier leider noch Glitches. Auf dem Gerät, das die Daten von der S7  über TCP liest, sieht man ab und an Glitches. Das bedeutet, das Gerät empfängt immer wieder abartig hohe Werte bei den ersten 6-8 Worten (von 32). Dabei handelt es sich um Zählwerte (sollten sich also nur langsam und linear ändern). Beim nächsten Lesezyklus sind die Werte dann wieder normal.  Wenn man sich die Zahlen in Buchstaben umrechnet dann kommt man auf Spitze Klammern auf oder Zu (<>) und ein paar weitere Buchstaben. Der Kollege meint nun, das wären Strings, die von der Kommunikation herrühren und in irgendeiner Weise verschoben als Zahlwerte interpretiert werden.
Ich vermute, daß bei Ihm ein Programmierfehler im Echtzeitbetriebsystem vorliegt, wollte aber mal fragen, ob es doch an der S7 liegen kann?
Gibt es da irgendwelche Timingprobleme? Oder Pufferlöschungen im CP Lean, während denen man nicht lesen darf?

Gruß,
Aksels


----------



## hr333 (15 Februar 2008)

Glückwunsch!

Was ich nicht verstanden habe: 
Wie hast Du denn die Kommunikation S7<==>PC gelöst?


 Du hast oben von TCP-Ports 2000 und 2001 geschrieben, ich nehme an, das gehört zur Verbindung mit dem PC.
 Eingangs hast Du von einem PC mit QNX geschrieben. 
- Ist das der Kommunikationspartner mit der S7? 
- Welche Software auf dem QNX-PC kommuniziert mit der S7? 
- Oder ist es dein Programmiergerät (Windows)?
- Hat das Übertragungsprotokoll einen Namen (außer "TCP")?

mfg
hr
:twisted:


----------



## Aksels (16 Februar 2008)

*Kommunikation QNX*

Über den CP343-1 Lean habe ich eine neue Verbindung mit Typ TCP-Verbindung angelegt. NetPro nimmt hierfür automatisch den Port 2000. Die "Station", also der Verbindungspartner ist unspezifiziert also keine IP und kein Port eingetragen. Betriebsart für Verbindung 1 ist Fetch Passiv mit S7 Adressierungsmodus, LADDR W#16#0110 ID1.
Die Verbindung ID2 ist Write Passiv auf Port 2001, sonst gleich.


Gruß,
Aksels


----------



## hr333 (17 Februar 2008)

Hmm, OK, aber was ist der Verbindungspartner zur S7?
- Ist das der PC mit QNX? 
- Wenn ja, welche Soft verwendest Du auf dem QNX-PC?
    (bspw. ein Perl-Script, welches direkt einen TCP-Port zur S7 öffnet? Oder libnodave (vermute ich mal wegen "Fetch Passiv mit S7 Adressierungsmodus")?

Wäre schön, wenn Du das sagen könntest.




Aksels schrieb:


> Über den CP343-1 Lean habe ich eine neue Verbindung mit Typ TCP-Verbindung angelegt. NetPro nimmt hierfür automatisch den Port 2000. Die "Station", also der Verbindungspartner ist unspezifiziert also keine IP und kein Port eingetragen. Betriebsart für Verbindung 1 ist Fetch Passiv mit S7 Adressierungsmodus, LADDR W#16#0110 ID1.
> Die Verbindung ID2 ist Write Passiv auf Port 2001, sonst gleich.
> 
> 
> ...


----------



## Aksels (18 Februar 2008)

*Verbindungspartner*

Tja, es ist von der Hardware her ein PC. Die Firma hat diese Kläranlagenleittechnik selber geschrieben.
Ich kann mal fragen, was für ein Entwicklungstool die verwenden....
Gruß,
Aksels


----------



## hr333 (20 Februar 2008)

OK, das war schon, was ich wissen wollte.

Auf dem Leitrechner läuft eine fertige Software, welche die Option bietet, über TCP/IP mit einer S7 zu kommunizieren (D.h. Du musst auf PC-Seite nichts programmieren).

Du kannst, wie ich annehme, auf dem Leitsystem direkt die DB-Nummer angeben, welche Du in der S7 verwendet hast, und das Leitsystem holt sich dann zyklisch (bspw. alle 2 Sekunden) die Werte aus diesem DB. _Richtig? 
_
In diesem Fall wäre das Protokoll so wie ich das sehe das Siemens eigene Protokoll (von Siemens meist als "S7 Kommunikation" bezeichnet). 



Zu den "Glitches" fallen mir 2 Dinge ein:

 Die S7 hat keine Bereichsprüfung. Wenn Du einen Puffer mit 228 Bytes anlegst und die Empfangs-Funktion 232 Bytes empfängt, dann überschreibt sie  4 Bytes an einer fremden Stelle. Möglicherweise entstehen dadurch die Fehlwerte. Verwende 1024 Bytes, das ist zumindest bei den Siemens-FBs die ich verwendet habe, so vorgesehen.
 Es gibt verschiedene "ByteOrders": Manche Systeme verwenden bei einem  16-Bit Wert das erste Byte als höherwertiges, andere machen das umgekehrt. Machen die Werte sinn, die er ohne die "<>" empfängt?

grx
hr


----------



## hr333 (27 Februar 2008)

"Glitches" gefunden?:sm19:


----------



## Aksels (27 Februar 2008)

*Puffer vergrößert.*

Guten Abend allerseits.
Habe die Puffer mal auf 1024 vergrößert und die Datenbausteine doppelt so groß gemacht.
Ich bekomm dann antwort, obs was gebracht hat und melde es hier.


Gruß,
Aksels


----------



## Aksels (5 März 2008)

*Keine Veränderung.*

Die Glitches sind immer noch da.
Ich muss doch mal testen, ob in meinem DB die Daten nicht schon falsch drinstehen. Hab seither angenommen daß die im DB noch richtig sind und erst beim Transport über Ethernet kaputt gehen. Aber vielleicht sehe ich das nicht im Step7. Dann könnte die FMS-Verbindung fehlerhaft sein....
Fragen über Fragen.


Gruß,
Aksels


----------



## Aksels (20 März 2008)

*Neue Infos.*

Hallo Leute.
Hab mir die Daten in meinen DBs mal angeschaut. Da seh ich keine Glitches.
Hab mal alles durchbeobachtet. Dabei ist mir folgendes aufgefallen:
Der Status und der Error zittern immer zwischen 0 / 8181 und 1 / 8183
8181 ist Auftrag läuft. 8183 bedeutet 
Die Projektierung fehlt oder der Dienst im Ethernet-CP ist noch nicht gestartet.
http://asz.dyndns.org/F1.JPG
http://asz.dyndns.org/F2.JPG

Ich sehe nie daß "Done" true werden würde.
Der Mensch auf der Empfängerseite bekommt aber Daten. 
Nur eben, daß die manchmal verstümmelt sind.
Im NCM-S7 Diagnose sieht es so aus:
http://asz.dyndns.org/F3.JPG
http://asz.dyndns.org/F4.JPG

Die Verbindung so.
http://asz.dyndns.org/F5.JPG
http://asz.dyndns.org/F6.JPG

Kann da irgendjemand was absonderliches erkennen?

Gruß,
Aksels


----------



## hr333 (24 März 2008)

```
>ping asz.dyndns.org

Ping asz.dyndns.org [87.106.57.3] mit 32 Bytes Daten:

Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.

Ping-Statistik für 87.106.57.3:
    Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4 (100% Verlust),
```
ERROR 404: Dein Webserver ist down.:TOOL:


----------



## Ralle (24 März 2008)

Aksels schrieb:


> Ich sehe nie daß "Done" true werden würde.
> Der Mensch auf der Empfängerseite bekommt aber Daten.
> Nur eben, daß die manchmal verstümmelt sind.
> 
> ...



Ich weiß nicht ob das schon kam. Ich denke, "Done" ist nur einen Zyklus lang da. Du solltest dir das mal testweise mit einem freien Merker fangen.

U #Done
S MX.Y

Solange "Auftrag läuft" solltest du keinen neuen Auftrag anstoßen, falls du das nicht schon so hast. Weiß allerdings jetzt auch nicht, ob ein Auftrag bei de7nen FC/FB/SFC/SFB mit einer Flanke angestoßen wird.


----------



## Aksels (10 April 2008)

*Nächstes Experiment.*

So, habe jetzt noch ein Experiment.
Ich habe einen neuen DB aufgemacht.
Die Zählwerte beider KRs dort hineinkopiert (move).
Diese Baustein mittels 



> CALL  "AG_SEND"
> ACT   :=M56.0
> ID    :=1
> LADDR :=W#16#110
> ...



und 



> R     M     56.0
> SET
> U     M     56.1
> SPB   don3
> ...




freigegeben.
Nun habe ich ab und zu die Glitches auf dem neuen DB214 und auf dem DB212, scheinbar nie gleichzeitig. Vorher waren sie auf DB210. Irgendwas hat sich also verschoben.
Ob ich nochmal eine neie Verbindung projektieren soll?

Gruß,
Aksels


----------



## Aksels (24 April 2008)

*Umschreiben*

Hallo liebe Mitstreiter.

Ich versuche gerade das Programm umzuschreiben.
Dazu wollte ich einen FB anlegen.
In dem FB ist das AG_Send.
Den "SEND" Parameter wollt eich natürlich als IN-Schnittstelle übergeben.
Der ist am AG_Send vom Typ "ANY". ANY lässt er mich auch als In-Variable anlegen, aber wenn ich diese dann an der AG_Send weitergeben möchte heisst es immer "Unzulässige Parameterzuweisung".
Auch als Pointer lässt er es nicht zu.
Von aussen soll an den FB dann ein Wert wie (Sym) DB100.Data kommen was P#DB100.DBX0.0 Zugriffsbreite 228 Entspricht.
Wie mache ich das?

Gruß,
Aksels


----------



## Aksels (25 April 2008)

*Update. AG-Send AG-Receive unnötig.*

Habe gerade mit Siemens gesprochen.
Der meinte für Fetch/Write passiv brauche ich doch gar kein AG-Send AG-Receive. Da müsse man doch gar nichts programmieren, sondern nur projektieren.
Hab jetzt alle meine AG-Send und AG-Receives rausgenommen und es geht trotzdem. 
Mann war das peinlich.
Ich hoffe ich erspare einem von Euch diese Peinlichkeit durch diesen Bericht.
Ist diese Vorgehensweise mit Fetch/Write passiv denn so ungewöhnlich und selten, dass das echt keiner von Euch wusste?  

Gruß,
Aksels


----------



## Aksels (30 April 2008)

*TcpDump*

Hallo Leute.

Da niemand der beteiligten Firmen der Meinung ist daß der Fehler bei Ihm liegen könnte, habe ich jetzt TCP-Dumps des Datenverkehrs angelegt.
Leider sind die Pakete nicht so gut lesbar, wie ich gehofft hatte. Weiter unten ein Auszug.
Irgendwie muss man doch eine Protokollbeschreibung herbekommen können von diesem Fetch Passiv von Siemens. Wenn von Euch keiner einen Tip hat werde ich mich wohl oder Übel auf die Odyssee bei Siemens begeben müssen.
Mich interessiert: wie kann ich einen Lesevorgang auf DB210 DW 164 identifizieren und das empfangene Datum auslesen. Es entartet nänlich immernoch sporadisch. Zählwert ist erst 20101, dann irgenwas über 3 Mrd dann wieder 20101 (oder ähnlich). Ich möchte nun sehen, ob das schon im TCP-Päckchen falsch ist (Siemens hat ein Problem) oder erst auf dem Leitrechner entartet (Leitstellenprogramm hat ein Problem).

Gruß,
Aksels



> 15:01:36.205308 IP 192.168.0.102.sieve > 192.168.0.100.1045: P 378901:378981(80) ack 60992 win 2048
> 0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
> 0x0010:  0078 797e 0000 1e06 a0e7 c0a8 0066 c0a8  .xy~.........f..
> 0x0020:  0064 07d0 0415 5bf3 9880 147a 452a 5018  .d....[....zE*P.
> ...


----------



## Question_mark (30 April 2008)

*TCP Dump*

Hallo,



			
				Aksels schrieb:
			
		

> wie kann ich einen Lesevorgang auf DB210 DW 164 identifizieren


Also in deinem Dump findet sich dieser Lesevorgang auf jeden Fall nicht.

Lade Dir erstmal einen vernünftigen Netzwerksniffer herunter, und zwar hier :

http://www.wireshark.org/

Installiere Wireshark, logge den Datenverkehr mit und sende mir die Logdatei per PN zu.

Gruß

Question_mark


----------



## Question_mark (30 April 2008)

*Aahhrrgg*

Hallo,



			
				Aksels schrieb:
			
		

> wie kann ich einen Lesevorgang auf DB210 DW 164 identifizieren



Mal ein Ausschnitt aus deinem Log 



> 0x0000: 000e 8c97 5f1e 0040 f203 0e66 0800 4500 ...._..@...f..E.
> 0x0010: 0038 3ee6 0000 4006 b9bf c0a8 0064 c0a8 .8>...@......d..
> 0x0020: 0066 0415 07d0 147a 452a 5bf3 98d0 5018 .f.....zE*[...P.
> 0x0030: 4470 2458 0000 5335 1001 0305 0308 01d4 Dp$X..S5........
> 0x0040: 0040 0032 ff02 .@.2..



Hier wird angefordert, aus einer S5 aus dem DB *212* ab dem DW *64* insgesamt 50 DW auszulesen. 

So what ????

Gruß

Question_mark


----------



## Question_mark (1 Mai 2008)

*Und noch einen ..*

Hallo,

und das hier ist ein Antworttelegramm aus einer früheren Fetch Anforderung :



> 0x0030: 0800 7807 0000 5335 1001 0306 0f03 00ff ..x...S5........
> 0x0040: 0700 0000 0000 *0000 0000 0000 0000 9980 ................
> 0x0050: 8999 9999 80d8 9891 0001 0000 0000 0000* ................



Die zurückgelieferten Nutzdaten habe ich mal fett markiert. Da Dein Auszug aus dem Datenverkehr ziemlich kurz ist, kann ich nicht feststellen, aus welchem Datenbereich die Nutzdaten stammen.
Das Antworttelegramm sagt aus, dass der Telegrammverkehr für diese Fetch-Anforderung ohne Fehler durchgeführt wurde.

Gruß

Question_mark

PS : Die Nutzdaten sehen nach Gleitkommazahlen (KG) aus ....


----------



## Question_mark (1 Mai 2008)

*Mein Tip ..*

Hallo,



			
				Aksels schrieb:
			
		

> ob das schon im TCP-Päckchen falsch ist (Siemens hat ein Problem) oder erst auf dem Leitrechner entartet (Leitstellenprogramm hat ein Problem).



Nur mal so nebenbei bemerkt, aus meiner Erfahrung heraus darfst Du dich bei der Fehlersuche auf den Leitstellenrechner oder auf Deine eigenen Fehler konzentrieren ..    

Gruß

Question_mark


----------



## Aksels (1 Mai 2008)

*Schon klar!*

Tja, Question_mark, schon klar, aber ich steh dazwischen. Siemens sagt an Ihnen kanns nicht liegen, der Leittechnikbetreuer meint "Bei allen anderen Kunden funktionierts aber!"
Nun habe ich die Glitsches abgewartet und aufgezeichnet. Da ich nun weiß (besten dank) wie das zu lesen ist kann ich zeigen, daß das Päckchen kaputt oder OK ist wenns am Hub vorbeikommt. Ja nachdem muss dann Siemens her (neue Firmware für CP?) oder der Leittechnikprogrammieren, und ich bin raus!

Hehehe.

Gruß,
Aksels


----------



## Aksels (5 Mai 2008)

*Defekte Pakete gefunden.*

Guten Morgen zusammen.
Habe das defekte Päckchen gefunden.
Hier ein Paket vorher:



```
15:01:34.287411 IP 192.168.0.100.1045 > 192.168.0.102.sieve: P 60848:60864(16) ack 378125 win 17520
        0x0000:  000e 8c97 5f1e 0040 f203 0e66 0800 4500  ...._..@...f..E.
        0x0010:  0038 3e4d 0000 4006 ba58 c0a8 0064 c0a8  .8>M..@..X...d..
        0x0020:  0066 0415 07d0 147a 449a 5bf3 9578 5018  .f.....zD.[..xP.
        0x0030:  4470 27f0 0000 5335 1001 0305 0308 01d2  Dp'...S5........
        0x0040:  00a4 0020 ff02                           ......
15:01:34.288315 IP 192.168.0.102.sieve > 192.168.0.100.1045: . ack 60864 win 2048
        0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
        0x0010:  0028 796a 0000 1e06 a14b c0a8 0066 c0a8  .(yj.....K...f..
        0x0020:  0064 07d0 0415 5bf3 9578 147a 44aa 5010  .d....[..x.zD.P.
        0x0030:  0800 cf44 0000 5335 0000 0000            ...D..S5....
15:01:34.320795 IP 192.168.0.102.sieve > 192.168.0.100.1045: P 378125:378205(80) ack 60864 win 2048
        0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
        0x0010:  0078 796b 0000 1e06 a0fa c0a8 0066 c0a8  .xyk.........f..
        0x0020:  0064 07d0 0415 5bf3 9578 147a 44aa 5018  .d....[..x.zD.P.
        0x0030:  0800 3ab9 0000 5335 1001 0306 0f03 00ff  ..:...S5........
        0x0040:  0700 0000 0000 0000 647f 0000 2e01 0000  ........d.......
        0x0050:  7bb9 0000 3d8d 0000 3b5c 0000 2885 0000  {...=...;\..(...
```


Das defekte Paket:


```
15:01:35.937527 IP 192.168.0.100.1045 > 192.168.0.102.sieve: P 60960:60976(16) ack 378821 win 17520
        0x0000:  000e 8c97 5f1e 0040 f203 0e66 0800 4500  ...._..@...f..E.
        0x0010:  0038 3ec4 0000 4006 b9e1 c0a8 0064 c0a8  .8>...@......d..
        0x0020:  0066 0415 07d0 147a 450a 5bf3 9830 5018  .f.....zE.[..0P.
        0x0030:  4470 24c8 0000 5335 1001 0305 0308 01d2  Dp$...S5........
        0x0040:  00a4 0020 ff02                           ......
15:01:35.938428 IP 192.168.0.102.sieve > 192.168.0.100.1045: . ack 60976 win 2048
        0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
        0x0010:  0028 797b 0000 1e06 a13a c0a8 0066 c0a8  .(y{.....:...f..
        0x0020:  0064 07d0 0415 5bf3 9830 147a 451a 5010  .d....[..0.zE.P.
        0x0030:  0800 cc1c 0000 5335 0000 0000            ......S5....
15:01:35.968286 IP 192.168.0.102.sieve > 192.168.0.100.1045: P 378821:378901(80) ack 60976 win 2048
        0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
        0x0010:  0078 797c 0000 1e06 a0e9 c0a8 0066 c0a8  .xy|.........f..
        0x0020:  0064 07d0 0415 5bf3 9830 147a 451a 5018  .d....[..0.zE.P.
        0x0030:  0800 d4ed 0000 5335 1001 0306 0f03 00ff  ......S5........
        0x0040:  0700 0000 0000 0202 0005 3c31 3232 3e00  ..........<122>.
        0x0050:  0000 0000 0000 0000 3b5c 0000 2885 0000  ........;\..(...
```
Ein Paket nachher.


```
15:01:37.607689 IP 192.168.0.100.1045 > 192.168.0.102.sieve: P 61072:61088(16) ack 379517 win 17520
        0x0000:  000e 8c97 5f1e 0040 f203 0e66 0800 4500  ...._..@...f..E.
        0x0010:  0038 3f4d 0000 4006 b958 c0a8 0064 c0a8  .8?M..@..X...d..
        0x0020:  0066 0415 07d0 147a 457a 5bf3 9ae8 5018  .f.....zEz[...P.
        0x0030:  4470 21a0 0000 5335 1001 0305 0308 01d2  Dp!...S5........
        0x0040:  00a4 0020 ff02                           ......
15:01:37.608585 IP 192.168.0.102.sieve > 192.168.0.100.1045: . ack 61088 win 2048
        0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
        0x0010:  0028 7989 0000 1e06 a12c c0a8 0066 c0a8  .(y......,...f..
        0x0020:  0064 07d0 0415 5bf3 9ae8 147a 458a 5010  .d....[....zE.P.
        0x0030:  0800 c8f4 0000 5335 0000 0000            ......S5....
15:01:37.640025 IP 192.168.0.102.sieve > 192.168.0.100.1045: P 379517:379597(80) ack 61088 win 2048
        0x0000:  0040 f203 0e66 000e 8c97 5f1e 0800 4500  .@...f...._...E.
        0x0010:  0078 798a 0000 1e06 a0db c0a8 0066 c0a8  .xy..........f..
        0x0020:  0064 07d0 0415 5bf3 9ae8 147a 458a 5018  .d....[....zE.P.
        0x0030:  0800 3469 0000 5335 1001 0306 0f03 00ff  ..4i..S5........
        0x0040:  0700 0000 0000 0000 647f 0000 2e01 0000  ........d.......
        0x0050:  7bb9 0000 3d8d 0000 3b5c 0000 2885 0000  {...=...;\..(...
```

In der Leittechnik sieht das dann so aus (Auf dem Linux Rechner muss man 2 h abziehen wegen UTC):

http://asz.dyndns.org/KaBlaF3.JPG

So wie es aussieht kann man doch sagen, daß das ein Siemens Fehler sein muss?
Ich habe ja für die Verbindung kein Programm (passiv fetch). Meinen DB überwache ich mit einem größer-Vergleich (die Zählwerte ändern sich sehr langsam), dann wird ein Merker gesetzt. Das passiert aber nie. 

Ich werde denen das jetzt mal schicken.


Gruß,
Aksels


----------



## Question_mark (5 Mai 2008)

*Paket wirklich defekt ??*

Hallo,



			
				Aksels schrieb:
			
		

> So wie es aussieht kann man doch sagen, daß das ein Siemens Fehler sein muss?



Bevor Du jetzt in der falschen Richtung losgallopierst, mal ein kleiner Denkanstoss. Das Paket ist nicht defekt, sondern zeigt korrekt die Nutzdaten im DB zum Zeitpunkt des Sendens. Bei Dir werden in der SPS im DB 210 ab DW 164 die ersten *8 Datenworte* sporadisch in der SPS mit von Dir unerwarteten Werten überschrieben.

Gruß

Question_mark


----------



## Aksels (5 Mai 2008)

*Hmmm...*

Genau das habe ich doch aber in meiner SPS abgecheckt.
Ich prüfe, ob die 10 Worte nach 164 (und andere) um mehr als 50 springen. Dann wird ein Merker gesetzt. Tun sie aber nicht. Hab das Prüfprogramm auch gestestet indem ich einen Zählwert von Hand von 20000 auf 20200 gesetzt habe und das Merkerbit wird gesetzt. Während dieses "kaputte" Paket vorbeikam war das aber nicht der Fall. Da ich sonst mit diesen Daten nicht arbeite und sie per passiv fetch abgeholt werden..... wo soll der Fehler dann herkommen?

Der Siemens mitarbeiter hat gerade angerufen und erzählte was von Lock Bausteinen und gleichzeitigem Zugriff auf den DB von FMS und TCP aus.
Werde ich nun auch noch versuchen.........


Gruß,
Aksels


----------



## Ralle (5 Mai 2008)

Der erste falsche Wert 33685509 (2020005 Hex), hat der in Hex zufällig Ähnlichkeit mit deinem Versuchswert 20200 dezimal? Könnte das irgendeine Fehlermeldung, ein Wertüberlauf oder Ähnliches sein, die nicht korrekt abgefangen wird?


----------



## Aksels (5 Mai 2008)

*20200 ist Zufall.*

Leider nein. Dieser Wert ist zufällig so ähnlich.
Ich habe nin den FMS-Teil bearbeitet. DIeser schreibd ei Daten in ZwischenDBs. Nur wenn NDR ansteht werden die Daten mit BlockMove in die DBs kopiert aus denen die Leitstelle liest.
Somit habe ich den Siemens-Einwand entkräftet daß korrupte Daten während eines FMS-LeseZyklus von der Leitstelle über Passive Fetch gelesen werden.
Es kommen immernoch Glitches.
Hätte mich auch gewundert. Wenn ich dort Text-Dateien verschicken würde, dann würde das Argument ziehen. Aber diese Zählwerte ändern sich in 30 Sekunden um eine 1 nach oben. Selbst wenn der FMS gerade in den Baustein schreiben würde hätte ich keine derartige Korruption. Der maximal vorstellbare Fehler wäre daß der alte Wert wenige Milisekunden vor der Aktualisierung gelesen wird. Dann wäre er aber um 1 zu klein (was keine Rolle spielt) und nicht um 3 Mrd ( und ein paar Zequetschte) zu groß. 
.....

Mist, ich habe gerade meine Merkebits kontrolliert, die mir Entartungen im DB zeigen sollen. Diesmal haben sie angesprochen. Die Werte sind also doch schon im DB defekt, also von der FMS-Seite fehlerhaft. Das hatte ich eigentlich schon ausgeschlossen..... ich glaub ich hab wieder zu lange auf die Zahlen von Step7 geschaut. Mache Schluss für heute.

Gruß,
Aksels


----------



## Aksels (5 Mai 2008)

*FMS-Seite.*

Ich hab grad noch auf der FMS-Seite ein paar Dinge kontrolliert.
Dabei ist mir aufgefallen:

Die Daten werden doch mit Adressen wie <120> angefordert.
Die Rückmeldung beinhaltet doch bestimmt auch solche Zeichen, oder?
Habt Ihr Euch mal das kaputte mittlere Päckchen angeschaut?
da steht dort wo die Zählwerte sein sollen 

<122>

Ulkig, was?

Wenn es nun doch auf dem FMS-Seite fehlerhaft ist (Mann, da muss ich beim Testen aber schon ganz schön überarbeitet gewesen sein)?


So sieht der Code aus:
OB1:

```
CALL  "Read120"
      CALL  "Read121"
      CALL  "Read122"
      CALL  "Write123"
      CALL  "Write124"
      CALL  "Read130"
      CALL  "Read131"
      CALL  "Read132"
      CALL  "Write133"
      CALL  "Write134"
```
 
Beispielhaft Read 122:


```
//*
// Only execute job when no other job is active.
//*
      O     "Ix130".Read_REQ
      O     "Ix131".Read_REQ            //    REQ=1, READ is still active      SPB   ende
      O     "Ix132".Read_REQ
      O     "Ix133".Write_REQ
      O     "Ix134".Write_REQ
      O     "Ix120".Read_REQ            //    REQ=1, READ is still active      SPB   ende
      O     "Ix121".Read_REQ
      O     "Ix123".Write_REQ
      O     "Ix124".Write_REQ
      SPB   ende
 
//*
//Calling the READ job:                                       
//*
      CALL  "READ" , DB302
       REQ   :="Ix122".Read_REQ
       ID    :="Ix122".Read_ID
       VAR_1 :="Ix122".Read_VAR_Index
       RD_1  :="ZwspBaustein1".Data.Zae
       NDR   :="Ix122".Read_NDR
       ERROR :="Ix122".Read_Error
       STATUS:="Ix122".Read_Status
//*
//Query job status
//*
      U     "Ix122".Read_REQ            //   REQ=1 => Job active, query errors
      SPB   fehl
//*
      UN    "Ix122".Read_REQ            //   REQ=1 => Job completed
      S     "Ix122".Read_REQ            //   REQ neu setzten / Set REQ again
      SPA   ende
//*
//Error handling
//*
fehl: UN    "Ix122".Read_Error          // Error=0 => No error occurred
      SPB   ok
//*
      U     "Ix122".Read_Error          // Error=1 => Error occurred
      L     "Ix122".Read_Status         // load error status
      T     "Ix122".Read_Statusspeicher // Save in buffer
      R     "Ix122".Read_REQ            //   Reset REQ
      SPA   ende
//*
//Query job status
//*
ok:   UN    "Ix122".Read_NDR            //  Done=0 => Job still active
      SPB   ende
//*
      U     "Ix122".Read_NDR            //  Done=1 => Job complete without error
      R     "Ix122".Read_REQ            //  Reset REQ
//*
      CALL  "BLKMOV"
       SRCBLK :="ZwspBaustein1".Data.Zae
       RET_VAL:="mw100"
       DSTBLK :="S5KR2Rd".Data.Zae
      NOP   0
ende: BE
```
 

Beispiel Write123


```
//*
//Only execute job when no other job is active.
//*
      O     "Ix130".Read_REQ
      O     "Ix131".Read_REQ            //    REQ=1, READ is still active      SPB   ende
      O     "Ix132".Read_REQ
      O     "Ix133".Write_REQ
      O     "Ix134".Write_REQ
      O     "Ix120".Read_REQ            //    REQ=1, READ is still active      SPB   ende
      O     "Ix121".Read_REQ
      O     "Ix122".Read_REQ
      O     "Ix124".Write_REQ
      SPB   ende
//Calling the READ job:                                       
      CALL  "WRITE" , DB303
       REQ   :="Ix123".Write_REQ
       ID    :="Ix123".Write_ID
       VAR_1 :="Ix123".Write_VAR_Index
       SD_1  :="S5KR2Wr".Data.Bef
       DONE  :="Ix123".Write_NDR
       ERROR :="Ix123".Write_Error
       STATUS:="Ix123".Write_Status
 
 
//*
//Query job status
//*
      U     "Ix123".Write_REQ           //  REQ=1 => Job active, query errors 
      SPB   fehl
      UN    "Ix123".Write_REQ           //  REQ=1 => Job completed 
      S     "Ix123".Write_REQ           //  Set REQ again
      SPA   ende
//*
//Error handling
//*
fehl: UN    "Ix123".Write_Error         // Error=0 => No error occurred
      SPB   ok
//*
 
      U     "Ix123".Write_Error         // Error=1 => Error occurred 
      L     "Ix123".Write_Status        //Load error status
      T     "Ix123".Write_Statusspeicher    // Save in buffer
      R     "Ix123".Write_REQ           //   Reset REQ
      SPA   ende
//*
//Query job status
//*
ok:   UN    "Ix123".Write_NDR           //  Done=0 => Job still active
      SPB   ende
      U     "Ix123".Write_NDR           //  Done=1 => Job complete without error
      R     "Ix123".Write_REQ           //  Reset REQ
ende: BE
```
 

Vielleicht fällt jemandem noch etwas auf........



Gruß,
Aksels

P.S. Hat jemand noch nen Tip für meine einige Posts frühere Frage, wie ich das in einen universal FB bekomme?


----------



## Question_mark (6 Mai 2008)

*Mir ist etwas aufgefallen ...*

Hallo,



			
				Aksels schrieb:
			
		

> Vielleicht fällt jemandem noch etwas auf........



Du darfst die Aufrufe der "Call read, DB xxx" und "Call write, DB xxx " nicht überspringen. Es ist doch nicht gesagt, dass der Baustein mit dem Auftrag im nächsten Zyklus der CPU schon fertig ist. Dann kann es vorkommen, dass der Baustein nicht mehr bearbeitet wird und der Auftrag nicht abgeschlossen wird.
Bearbeite alle diese Aufrufe zyklisch. Dann stosse den ersten Request an. Wenn der mit Fehler oder Done beendet wird, den nächsten Request setzen, u.s.w.

Gruß

Question_mark

Nachtrag : Der Status von "REQ" hat für Dich zu *keinem Zeitpunkt* irgendeinen Aussagewert über den Status des Lese/Schreibauftrags !!!
Dafür sind andere Parameter beim Bausteinaufruf zuständig.


----------



## Question_mark (6 Mai 2008)

*Nochwas aufgefallen*

Hallo,


```
ok:   UN    "Ix123".Write_NDR           //  Done=0 => Job still active
      SPB   ende
      U     "Ix123".Write_NDR           //  Done=1 => Job complete without error
      R     "Ix123".Write_REQ           //  Reset REQ
```

Und das ist eigentlich überflüssig, der "REQ" wird vom Baustein selbst zurückgesetzt, nach meiner Erinnerung auch dann, wenn der Auftrag noch nicht beendet ist, also nach dem ersten Durchlauf mit der erkannten positiven Flanke von "REQ".

Gruß

Question_mark


----------



## Question_mark (6 Mai 2008)

*Noch einen ???*

Hallo,


```
U     "Ix122".Read_REQ            //   REQ=1 => Job active, query errors
      SPB   fehl
//*
      UN    "Ix122".Read_REQ            //   REQ=1 => Job completed  [B]<--- Überflüssig[/B]
      S     "Ix122".Read_REQ            //   REQ neu setzten / Set REQ again
      SPA   ende
```

Die Anweisung UN Ix122.Read_Req ist hier völlig überflüssig, da nach dem SPB an dieser Stelle das VKE sowieso auf "1" gesetzt ist. 

Gruß

Question_mark


----------



## Question_mark (6 Mai 2008)

*Nach Kritik mal was konstruktives*

Hallo,

mein Vorschlag zur Lösung Deines Problems (jedenfalls so, wie ich es von Anfang an programmiert hätte) :

Rufe alle Read/Write Aufträge zyklisch auf. Lege ein Merkerwort für alle "REQ" fest., z.B. MW 100 und ordne die Bits wie folgt zu : 
Bit  0 = REQ für Ix122.Read_Req
Bit  1 = REQ für Ix123.Read_Req
Bit  2 = Req für Ix133.Write_Req und so weiter ....
Lege ein zweites MW für einen Schiebtakt fest, z.B. MW 102
Setze dieses Merkerwort 102 bei Neustart der CPU auf $0001 (hex)
Wenn M102.0 = "1" dann setze M 100.0 --> "1"
Dadurch wird Auftrag Ix122 bearbeitet. 
Wenn Ix122 Done oder Error, schiebe das Merkerwort 102 mit SLW 1 nach links.
Wenn M102.1 = "1" dann setze M 100.1 --> "1"
Dadurch wird Auftrag Ix123 bearbeitet.
Wenn Ix123 Done oder Error, schiebe das Merkerwort 102 mit SLW 1 nach links.

und so weiter   ....
Die Bits im MW 100 werden von den "Read" und "Write" Bausteinen sowieso gelöscht, darum brauchst Du dich nicht zu kümmern.
Sagen wir mal, du hast 10 Aufträge (bin zu faul um nachzuzählen   ). Dann vergleichst Du Dein Merkerwort nach dem letzten Auftrag (Ix12x) mit der Maske $0200 (hex) und setzt das MW 102 wieder auf $0001 (hex) und das ganze geht wieder von vorne los.
Dadurch ist gewährleistet, dass immer nur ein Auftrag gleichzeitig bearbeitet wird *und auch abgeschlossen ist*, bevor der nächste angestossen wird.
Mach das so und es wird funktionieren, aber programmieren darfst Du das selber   
Der Vorteil ist dabei, egal was passiert mit den Read/Write Aufträgen, diese Abfolge kriegst Du nicht aus dem Tritt, kann sich nicht aufhängen und läuft sicher durch solange die CPU im RUN-Modus ist.   

Gruß

Question_mark


----------



## KurtKurten (17 September 2008)

*Ncm com 5431*

Hallo Männers,

habe ein Problem benötige um eine CP zu programmieren und somit die von dort aus weiterführende Peripherie abzuschalten die oben genannte Software genau ein Mal.Kann mir da jemand weiterhelfen? PS:
Denke mal wenn du jetzt so mit deiner S7 Anschaltung probiert hast wirst du diese Software besitzen?
Im Voraus danke für die Antworten


----------

