Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Kommunikation Siemens S7-200 mit JAVA

  1. #11
    raptorrs ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.07.2008
    Beiträge
    8
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke, Helmut. Ein Guter Hinweis.

    ich habe schon versucht, den Unterschied zwischen der CP 243-1 und der CP 243-1IT herauszufinden.

    Was ist der Unterschied zwischen diesen beiden Modulen?

    Gruss

    raptorrs

  2. #12
    Registriert seit
    01.08.2005
    Beiträge
    247
    Danke
    3
    Erhielt 41 Danke für 32 Beiträge

    Standard

    Hi,

    zusätzlich zu den Funktionen des CP243-1 hat der CP243-1IT:

    + Integrierten WEB-server mit 8MB Speicher für Dateisystem
    + SMTP Client (E-Mail Client)
    + FTP Server/Client

    hoffe ich hab nichts vergessen.

    Gruss
    helmut

  3. #13
    Registriert seit
    22.06.2003
    Beiträge
    242
    Danke
    9
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Hallo
    ein Ansatz in die Richtung welchen ich mal versuchte könnte u.a. 'XML_RPC' sein. Besonders in Java quillt das Internet dazu mit 'Frameworks' aller Coleur über. Allerdings schmiß ich nach drei durchgeackerten 'Eclipsen' oder wie das Zeug sonst noch hieß den Mist (Java) ultimativ in die Ecke und besann mich aufs C-zurück.
    (http://xmlrpc-c.sourceforge.net/doc/)
    Bei Java gelangs mir jedoch ziemlich schnell Verbindungen und Datenübertragung vom CP243-1 zur, in einem angehängten Linuxsystem installierten, Hardware (Analogports) herzustellen. Allerdings war das Einbinden von Protokollanpassung und Verbindungsaufbau in den RPC-Proxy nicht ganz 0815.
    Im Endeffekt fehlten dann auch noch einige Dekodierungsmechanismen um vom CP243-1 versandten 'Slang' überhaupt vollständig auswerten zu können - allerdings sind alle erforderlichen Infos dazu ja in der Libnodave enthalten und einzusehen.

    Der Ablauf hingegen ist eher trivial. Der CP243 wurde bei mir als Client und die Verbindung zu dem auf Port102 auf dem Zielsystem gestarteten ( wie gesagt etwas ummodellierten !!!) RPC-Server per dessen IP-Adresse konfiguriert. Da ich auf Einbau einer vollständigen Dekodierung der abgesandten Telegramme dabei verzichtete und mich mit sporadischer Trefferquote durch zurückgesandte 'Steuerzeichen' zufrieden gab weiß ich allerdings nicht welche Feinheiten im Endeffekt bei vollständiger Kontrolle über den Verbindungsaufbau da sonst noch zu beachten wären ! Ganz easy scheints nicht aber auch dazu sind ja alle erforderlichen Infos in der Libnodave enthalten und einzusehen.
    Wird ein Telegramm in der äußeren Socket des RPC-Proxys empfangen und kann (wie auch immer) ausgewertet werden übergibt die äußere Socket den auszulesenden Adressbereich (z.Bsp. 'Sätze' der Datenbank) an die innere (Client)Socket des RPC-Proxys und diese startet das Einlesen und anschliessende Versendung ( bei mir: per libnodave ISO_TCP2) in den DB der CPU. That's all - etwas einfacher gings nur per CGI (oder PearlScript) wobei das Problem der Telegrammdekodierung und der Verbindungssteuerung zum CP243 allerdings auch nicht 'einfach' zu lösen ist.
    Ich wollte es mal mit XML überhaupt in der Richtung probieren - ansonsten ist die CGI-Variante bei ausreichend vorhandenen Rechten auf dem Zielsystem (das CGI läuft am Webserver gekoppelt und darf nicht in jedem Fall die 'Sandkiste dort' verlassen um durchs System zu toben ...) unterm Strich einfacher und mit erheblich weniger 'Protokolloverhead' behaftet. Jedoch ist dort die Übergabe und Auswertung des 'Enviromentsstrings' vom CP243 eher ein noch grösserer Akt als in den halbwegs vorgefertigten RPC-Proxys. Quellen etc. bei sourceforge wo's ja auch das libnodave gibt
    Gruss
    tobias

  4. #14
    Registriert seit
    01.08.2005
    Beiträge
    247
    Danke
    3
    Erhielt 41 Danke für 32 Beiträge

    Standard

    Hallo,

    @Tobias,
    da ich mich hier nicht auskenne versteh ich nur Bahnhof, aber das scheint nach deinen Ausführungen ja doch zu funzen.

    gruss
    helmut

  5. #15
    Registriert seit
    22.06.2003
    Beiträge
    242
    Danke
    9
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Hallo Helmut
    Jain, würd ich mal sagen nachdem was ich so probiere.
    Es gibt zwei Probleme:
    a) der Verbindungsaufbau und dessen Steuerung
    b) die besagte Decodierung des TCP_ISO Telegramms.
    Mein Versuchsaufbau sieht so aus: Hier habe ich 'ne CPU226 + CP243-1 (oder manchmal auch 243-1IT) stehen und einige Strassen weiter ein Linux Embedded System wo ich ggflls. das Licht mit schalten, Daten einlesen etc. kann. Und damit funktionierts - weil da irgendwie im Laufe der Zeit alles so hingebogen wurde das es geht. Zu verallgemeinern ist es aber nicht - derselbe Aufbau dann in z.Bsp. Modbus/TCP und angehängtem WagoController vom CP243-1 angesteuert versagt kläglich. Da ist immer so einiges denn auch dem passenden Zufall überlassen ...
    Was aber sicher geht ist ein ganz genereller Datenaustausch über die Ethernetschnittstelle sowohl des CP343-1 als auch des 243-1. Zum Beispiel bei mir mit positiver Flanke an E0.1 ins Internet versendeter 'String' 'Otto' wird mittlerweile vorstellungsgemäß vom Server auf dem emb. System erkannt und dann als 'Otto war hier am 21.07.2008 um 13:12:11' an vorgesehener Stelle zurück in in den DB der CPU verfrachtet. Daraus schließe ich das man es so machen könnte wenn man wüßte was genau erforderlich ist. Da lauern anscheinend die ganz großen Unterschiede - das erste 'Framework' was ich ergriff hatte 2,5GB und kam mit den knapp 2kB produzierten Programmcode auf dem embedded nicht klar weil einige PlugIns noch fehlten .... kurzum ist mir nicht so richtig klar wie es herauszufinden ist was genau dazu minimal (==maximal) erforderlich ist damits _richtig_ funzt.
    Und bisher gibts anscheinend auch noch die Einschränkung der 'Transportkapazität'. Mir gelangen bisher maximal 128Byte zu versenden - gedacht wars eigentlich den kompletten Inhalt eines DB's für ein Textdisplay (ca. 1,4 - 2,8kB) in quasi 'einem Rutsch' zu verfrachten. Ich meine das müßte gehen weil der Anwenderprogrammbaustein einer 226 z.Bsp ja auch 24kB haben kann und das sicherlich nicht in 127ByteStücken verladen wird ?
    Ich probier da jedenfalls immer mal wieder dran rum - vielleicht hat man ja mal Glück ....


  6. #16
    Registriert seit
    01.08.2005
    Beiträge
    247
    Danke
    3
    Erhielt 41 Danke für 32 Beiträge

    Standard

    Hallo,

    wenn alle S7-200 über LAN am gleichen Netz hängen, würde ich folgendes vorschlagen:

    Kommunikation von deinem Linux über FTP zu den S7-200, die einen CP243-1IT haben. (mit FTP hast du keine Einschränkung bezüglich der Datenmenge). Die Daten werden auf dem Speicher des CP's abgelegt und können dann von der CPU per AWP gelesen werden. Die CPU kann mittels FTP Daten direkt von V-Speicher aus der CPU auf dein Linux übertragen.

    Die Daten dann von dieser CPU mittels Ethernet dann auf andere Stationen übertragen. Einschränkungen hierbei: Je CP nur 8 Kanäle (Client oder Server, nicht dynamisch), je Übertragung max ~210Bytes.

    Das ist aber alles mit den Standardkom-Arten der CP. Da du anscheinend schon was "selbstgestricktes" hast und das auch (teilweise?!?) funktioniert, ist dein Ansatz das zu erweitern warscheinlich besser, da flexibler. Denn mittels der Standardkomunikation der CP's kommst du nicht auf deine Modbus/TCP.

    Hoffe ichg konnte die was helfen.

    Gruss

    helmut

  7. #17
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    @raptorrs:
    So, habe mich jetzt schlau gemacht. Zu AGLink habe ich nichts fertiges im Hause. Deshalb mein Angebot: Wenn AGLink (siehe http://www.deltalogic.de/content/view/21/38/lang,de/) für die Lösung in Frage kommt, werde ich ein Java-Interface dafür erstellen (lassen). Welche Funktionalität wird überhaupt benötigt bzw. soll als erstes zur Verfügung gestellt werden?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  8. #18
    raptorrs ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.07.2008
    Beiträge
    8
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Guten Morgen, Zusammen!
    Ich war eine ganze Zeit lang nicht mit dem Projekt beschäftigt, bin aber seit einigen Tagen wieder dran.
    In der Zwischenzeit konnte ich zumindest die Verbindung zum C243-1 herstellen, das heisst, ich kann einen erfolreichen Ping an den CP senden.
    Weiterhin habe ich einen Java-Treiber S7CMX gefunden. Habe es damit hicht hinbekommen, helfen konnte man mir bei der SoftwarFactory auch nicht. Problem: Ständig fliegt die Exception: Socket ot Stream closed.
    Ich habe DeltaLogic angerufen, die haben nichts in Pure Java im Hause.
    Dann gibt es noch das legendäre Libnodave. Auch das habe ich probiert, leider auch ohne Erfolg.

    Meine Frage, klipp und klar:
    Kann mir eine(r) von Euch Profis ein kleines S7-Programm schreiben, welches unter Zuhilfenahme von Libnodave (oder des S7CMX-Treibers) ein paar Daten in die Steuerung einliest und ein paar andere wieder ausgibt?

    Ich zahle natürlich auch dafür, versteht es als offizielle Anfrage, wenn Ihr wollt.

    Danke Im Voraus!!!

  9. #19
    Registriert seit
    22.06.2003
    Beiträge
    242
    Danke
    9
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Hallo
    ich gehe mal davon aus dass die anfangs erwähnte Konstellation noch gilt:
    Wie bekomme ich meine Daten aus dem Java-Programm in den Datenbaustein der S7-Steuerung?
    Ich lese überall von WinCC, Libnodave, OPC etc., aber all das hat mir bisher nicht wirklich weitergeholfen.
    Wenn dem so ist muss bei Verwendung von 'Code-Teilen' aus libnodave zuerst einmal klar sein dass eigentlich die libnodave genau 'andersherum' funktioniert !
    Soll heissen: Die auf dem 'Gateway' (bei mir sind das z.Bsp.ARM-Hutschienenpc's) installierte LibnoDave ruft von 'Zeit zu Zeit' die Steuerung an und liest/schreibt dort Daten. Der 'Impuls' zum Datenaustausch kommt also vom Gateway !!!! Dort werden dann auch die empfangenen Daten meinetwegen als Webseite in html oder ähnlich sichtbar aufgemöbelt, andernfalls denn z.Bsp. 'unsichtbar' als Excel etc. 'formatiert'.
    So ist das gedacht und funktioniert dann auch ohne Umbauten und besonders gut und schnell via CP243-1 !
    ----------------------------------------------------------------------------
    Du wolltest aber quasi bei 'pos.Flanke an E0.0 der CPU' nun die Apperatur bewegen Daten aus der Datenbank zu fischen. Dazu muss die Mimik umgedreht werden !
    Und das ist nicht so einfach, wohl auch alles andere als serienreif und funktioniert bei mir z.Bsp. bisher nur auf besagten Linux-Embeddeds. Und da dummerweise denn auch noch auf zwei Arten, die bei Datenmenge und Verbindungsaufbau jeweils deutliche Vor- und Nachteile aufweisen.
    a) ist das über die normale MicroWin - Programmierverbindung (wo libnodave sich vereinfacht gesagt serienmässig einklingt) - damit ist aber die Programmierschnittstelle/ Fernwartung blockiert solange die Daten-Verbindung steht - und es gibt nur eine !
    b) parallel über die S7-Verbindung(en). Dabei gehen aber maximal anscheinend nur 16Bytes pro Verbindungsaufbau ???????
    a&b) haben zudem den Nachteil nur in VPN-Netzen 'Netzübergreifend' zu kommunizieren - es gibt nur eine IP-Adresse und mehrere CP's lassen sich ohne VPN (bisher bei mir) nie durch'naddeln' - sprich ansprechen.
    ---------------------------------------------------------------------
    Wenn man damit leben kann kommt der nächste Teil. Die CPU muss von sich aus die Verbindung zum 'Gateway' (dort wo auch die Datenbank liegt) aufbauen !!!
    Und hat nichts mit libnodave etc. zu tun sondern betrifft überhaupt nur den Verbindungsaufbau ersteinmal zu 'packen'.
    Wenn man da mit einer 'irgendwie Lösung' leben kann (bspw. kleiner Proxxyserver der auf alles reagiert ...) wird die Verbindung von der CPU quasi nur angestossen - selbst wenn sie dann sofort unter lautem Geschrei zu ignorierenden Fehlermeldungen zusammenbricht: das Gateway startet dann Daten aus der Datenbank zu lesen, diese abzulegen und sobald das geschehen ist startet man libnodave diese Daten an denn vorgesehen Platz in den Datenbaustein der CPU zu schreiben.
    Das ist die einfachste Möglichkeit
    ----------------------------------------------------
    ----------------------------------------------------
    Richtig kompliziert (jedenfalls wie ich bei meinen Versuchen meine herausgefunden zu haben) wirds 'libnodave' so hinzutricksen dass es auf dem Gateway in einem die Verbindung kontrollierendem Server läuft, dort auf Daten aus der CPU _wartet_ und auf Anforderung aus anderen Prozessen die richtigen Daten liest und an die CPU übergibt. (in die CPU schreibt)
    Dazu muss der gesamte Server auf dem Gateway programmiert werden und dabei ist weitgehend ungewiss ob der Verbindungsaufbau dann regelgerecht funktioniert - oder nur einmal in der ausgemessenen Konstellation. Andere MPI/PPI Adressen oder im Netz hinzugefügte CP's könnten da sicherlich in den 'Tokentabellen' einiges 'zerstreuseln' .
    Ich habe so'n Ding im Versuchstatdium mal bei mir programmiert (oder solches versucht). Das läuft seit 13.Sept. 2007 -- was da zu verbessern wäre weiss ich einfach aus dem Grunde schon nicht da ich auch noch versuche herauszufinden was da warum funktioniert ...
    Das ist ein aufwändiger Kram - ich denke das müsste einfacher gehen, finde da aber bisher auch keine Alternative zu. Und eine fertige Bibliothek zur 200-er, die quasi auf dem 'Gateway' als 'Soft-SPS' läuft und die Kommunikation/ Verbindungsaufbau in der S7-Kommunikation übernimmt gibts wohl auch nicht. Für die 300-er siehts anders aus, aber bei den 200-ern ????
    ----------------------------------------------
    Geschrieben habe ichs bis hierher nur weil ich meine der Aufwand ist nicht das S7-Programm (da ist evtl. nur etwas 'Handshake' über einige Merker zur Kommunikationsablaufsteuerung (Schrittkette) erforderlich ). Der Aufwand ist der Server auf dem Zielsystem ! Die Funktion des Servers ausserhalb der TCP/IP Verbindungsaufnahme ist dann eben die 'libnodave'. Oder die dort eingebunden, oder, oder ...
    In Linux (auf einem ARM9) habe ich das rausgetrickst. In Windows ging da garnichts ( es können da theoretisch auch Latenzzeiten und timeouts 'ne Rolle spielen, welche ich aussen vor liess), und wenn Java mit im Spiel ist meine ich wirds auch nur schlimmer ...
    Auf meinen Dingern läuft der 'Datenbankzugriff' per CGI oder PHP - wobei die Datenbank eher einer Tabelle entspricht die max. 8MB Einträge verwaltet.
    Libno wäre deswegen auch nur _ein_ 'Baustein' zur Lösung - weiterhin fehlen täte auf diesem Weg eben der Server welche den Verbindungsaufbau steuert und die libnodave denn anstösst das richtige zu übertragen. Das ist schon etwas komplexer. Und schliesst nicht vollständig weiterentwickelt sich für Einzelanwendungen beinahe aus
    Gruss
    tobias

  10. #20
    raptorrs ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.07.2008
    Beiträge
    8
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Tobias
    Danke , Tobias, Du hast Dir echt Mühe gegeben. Aber ich verstehe nicht mal die Hälfte von alldem!
    Unter dem Gateway verstehst Du den Rechner, auf dem in diesem Fall mein Java-Programm mit dem Libnodave läuft??
    Es kann duchaus so geschehen, wie Du es im ersten Absatz beschrieben hast.
    Das heisst, die Initiative geht vom Rechner aus. Wann nun was geschrieben oder gelesen wird, kann ich im Java-Programm relativ einfach programmieren.

    Wenn das tatsächlich so einfach geht, wäre ich für eine Schritt für Schritt - Anleitung wirklich dankbar.

    Nochmals vielen Dank!!

Ähnliche Themen

  1. Siemens S7 kommunikation mit EXCEL VBA OPC Client
    Von bobby765 im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 01.08.2011, 15:54
  2. Rockwell CPU Kommunikation mit Siemens
    Von Erdferkel im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 21.06.2011, 14:37
  3. Antworten: 3
    Letzter Beitrag: 08.07.2010, 22:34
  4. Kommunikation zwischen Siemens- und Hima-CPU
    Von Kalle85 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.08.2009, 12:37
  5. Profibus: Siemens TP´s verlieren Kommunikation
    Von maddin im Forum Feldbusse
    Antworten: 13
    Letzter Beitrag: 07.02.2008, 10:20

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •