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

Seite 5 von 17 ErsteErste ... 3456715 ... LetzteLetzte
Ergebnis 41 bis 50 von 169

Thema: PHP + Siemens PLC

  1. #41
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.686
    Danke
    208
    Erhielt 413 Danke für 331 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Und nochmal ein Bug...

    Es gingen immer nur die ersten 5 Bits eines Bytes (Hatte es nicht gemerkt, da Ich bei meiner Visua fürs Iphone immer neue Structs hatte, wo max 4 Bits drinn waren...)

    muss sagen, mit dieser Lib und iWebKit kann man sich in ein paar Minuten ne schöne Bedinung fürs I-Phone basteln...
    Angehängte Dateien Angehängte Dateien
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  2. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    Matze001 (30.08.2010)

  3. #42
    Registriert seit
    27.08.2010
    Ort
    OWL
    Beiträge
    18
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hi Leute,
    sorry wenn ich das Thema noch mal reaktiviere, aber seh ich das richtig
    Das Script ist für Iso on Tcp geschrieben?
    Dann wäre es schön, wenn mir mal einer die Vergabe der Tsap 's erklären könnte .

    Grund:
    Hab hier ne 1200 er die zwar über php mit nem einfachen Socket Script auch angetriggert wird, sprich es wird wohl nen socket über eine normale TCP Verbindung aufgebaut, die S7 Bausteine geben jedoch immer einen in der Doku nicht beschriebenen Kommunikationsfehler aus.

    Also hab ich das Script hier mal probiert,1200er seitig auch die richtigen Bausteine verwendet, komme aber so auch nicht zum Ziel, vermute es hängt an den Tsaps ( an den Bausteinen falsch eingetragen???)

    Da ich in PHP noch nicht so fit bin, fällt es mir schwer zu deuten was die Abfrage auf 300/400er Steuerung bringen soll bzw, wo diese Abfrage dann weiter verwendet wird.

    Wenn ich das script hier starte läuft es einfach nur durch , am Baustein zeigt er mir nen Fehler an, aber er scheint weder zu lesen noch zu schreiben.

    Für Tips wär ich echt wahnsinnig dankbar , reicht mir das ich hauptberuflich nach 10 Jahren Step7 mich nun in Codesys reinfuchsen muss.

    Lg Micha

  4. #43
    Registriert seit
    29.03.2004
    Beiträge
    5.367
    Danke
    134
    Erhielt 1.586 Danke für 1.158 Beiträge

    Standard

    Diese Abfrage 200/300/400er CPU ist nur durch das umsetzen von diesem C# Programm hineingekommen.
    Das einzige was man damit anfangen kann ist, dass bei einer 300er die CPU immer auf Rack 0 und Slot 2 sitzt. Bei einer 400er kann ich die CPU an fast jede Position im Rack stecken.

    Imho ist das php-Teil ziemlich mit der heißen Nadel gestrickt, da z.B. die Ebene ISO-Protokoll eigentlich überhaupt nicht implementiert ist. Spätestens bei den "funny 7-byte packets" (Zitat von Zottel aus libnodave) einer WinAC kracht es nämlich.

    Mit einer 1200er funktioniert das glaube ich auch nicht, denn was ich hier mal an Protokollmitschnitten gesehen habe, sieht der Datenaustausch schon etwas anders aus, auch wenn die grundlegende Kommunikation - also ISO-on-TCP, und Teile der S7-Kommunikation - gleich sind. Darum bekommst du auch einen Verbindungsaufbau hin, nur Daten können nicht gelesen/geschrieben werden.

  5. #44
    Registriert seit
    13.03.2006
    Beiträge
    423
    Danke
    5
    Erhielt 41 Danke für 41 Beiträge

    Standard

    Zitat Zitat von bitsearcher Beitrag anzeigen
    Dann wäre es schön, wenn mir mal einer die Vergabe der Tsap 's erklären könnte .

    Grund:
    Hab hier ne 1200 er die ....
    Wir haben da auch eine Klasse zur Kommunikation mit Siemens SPS
    http://pvbrowser.org/pvbrowser/sf/ma...iemensTCP.html
    Durch diese Doku kann man sich bis in die Implementierung "durchclicken"

    Der eigentliche Verbindungsaufbau ist dabei etwas im dunkeln
    Es wird ja über TCP/IP kommuniziert.
    TSAPs gibt es aber nur bei OSI Netzwerken (wie z.B. VOTS DECnet Phase V)
    Siemens hatte ursprünglich auf solche OSI Netzwerke gesetzt.
    Heute wird aber TCP verwendet aber dabei verwendet man den speziellen Port 102
    iso-tsap 102/tcp # ISO-TSAP Class 0
    iso-tsap 102/udp # ISO-TSAP Class 0

    Die beiden "TSAP" (die es bei TCP ja eigentlich garnicht gibt) werden nach dem Aufbau der TCP/IP Verbindung gesendet.
    Siehe:
    http://pvbrowser.org/pvbrowser/sf/ma...d79a14d3f65abc

    Höchst wahrscheinlich musst Du nur hier experimentieren:
    00073 if(rack_number != -1) connect_block[17] = rack_number;
    00074 if(slot_number != -1) connect_block[18] = slot_number;
    Das ist bei jedem SPS Typ etwas anders (dahinter versteckt sich der TSAP)

    PS: Die 1200er haben wir noch nicht testen können

  6. #45
    Registriert seit
    29.03.2004
    Beiträge
    5.367
    Danke
    134
    Erhielt 1.586 Danke für 1.158 Beiträge

    Standard

    Zitat Zitat von pvbrowser Beitrag anzeigen
    00073 if(rack_number != -1) connect_block[17] = rack_number;
    00074 if(slot_number != -1) connect_block[18] = slot_number;
    Und du bist dir sicher dass das da richtig ist?

    Meiner Meinung nach ist bei der Destination TSAP das erste Byte immer 0x02, das zweite Byte setzt sich aus Rack und Slot zusammen. Wobei die rechten 5 Bits der Slot sind, und die linken 3 Bits das Rack.

    Beispiele für Destination TSAP:
    Rack 0 / Slot 2:
    0x02 0x02

    Rack 7 / Slot 18:
    0x02 0xF2

    Rack 0 / Slot 18:
    0x02 0x12

  7. #46
    Registriert seit
    13.03.2006
    Beiträge
    423
    Danke
    5
    Erhielt 41 Danke für 41 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Und du bist dir sicher dass das da richtig ist?

    Meiner Meinung nach ist bei der Destination TSAP das erste Byte immer 0x02, das zweite Byte setzt sich aus Rack und Slot zusammen. Wobei die rechten 5 Bits der Slot sind, und die linken 3 Bits das Rack.

    Beispiele für Destination TSAP:
    Rack 0 / Slot 2:
    0x02 0x02

    Rack 7 / Slot 18:
    0x02 0xF2

    Rack 0 / Slot 18:
    0x02 0x12
    Bei der S7200 steht da schon mal
    connect_block[17] = 'M'
    connect_block[18] = 'W'
    also nicht immer 0x02

    Das mit rack/slot ist mir auch noch etwas nebulös.
    Die Namensgebung ist alt und vielleicht nicht sehr glücklich.

    Jedenfalls geht es mit:
    static const unsigned char s7_200_connect_block[] = {3,0,0,22,0x11,0xE0,0x00,0x00,0x00,0x01,0x00,0xC1,2,'M','W',0xC2,2,'M','W',0xC0, 1,9};
    static const unsigned char s7_300_connect_block[] = {3,0,0,22,0x11,0xE0,0x00,0x00,0x00,0x01,0x00,0xC1,2,1 ,0 ,0xC2,2,1 ,2 ,0xC0,1,9};
    static const unsigned char s7_400_connect_block[] = {3,0,0,22,0x11,0xE0,0x00,0x00,0x00,0x01,0x00,0xC1,2,1 ,0 ,0xC2,2,1 ,3 ,0xC0,1,9};
    auf den mir bekannten SPS Typen.

  8. #47
    Registriert seit
    29.03.2004
    Beiträge
    5.367
    Danke
    134
    Erhielt 1.586 Danke für 1.158 Beiträge

    Standard

    WinCC unterscheidet zumindest nicht zwischen S7-300 und 400. Und bei der S7-Protocol-Suite werden Destination-TSAP dem Rack und Slot entsprechend wie ich es oben geschrieben habe zugewiesen.
    Mit 200er Steuerungen habe ich nichts zu tun.

    Woher hast du denn deine Informationen, wenn nicht durch Abhören einer Kommunikation? Hast du deinen pvbrowser auch mal an 400er Steuerungen und exotischen Rack/Slot Kombinationen getestet?
    Bei einer WinAC muss der Destination TSAP zumindest passen, kann ja sein dass es eine 400er Steuerung garnicht stört.

    Edit:
    Zottel hat das in seinem Code auch genauso, laut seinen Kommentaren steht da auch noch:

    1, // Function (1=PG,2=OP,3=Step7Basic)
    2, // Rack (Bit 7-5) and Slot (Bit 4-0)
    // 0 for slot = let select the plc itself the correct slotnumber
    Geändert von Thomas_v2.1 (30.08.2010 um 19:17 Uhr)

  9. #48
    Registriert seit
    13.03.2006
    Beiträge
    423
    Danke
    5
    Erhielt 41 Danke für 41 Beiträge

    Standard

    Da muss noch etwas "Forschungsarbeit" geleistet werden oder
    bei Siemens müsste es ein Leck geben

    TSAP (Transport Service Access Point) bei OSI Netzen
    entspricht in etwa einem Port bei TCP/IP.

    Das ist ein Wert (TSEL Hex), der frei vergeben werden kann, in diesem Falls frei nach Belieben von Siemens. Es ist durchaus möglich, dass die da rack/slot mit rein verwurschten.

    In unsere Lib haben wir deshalb die Möglichkeit connect_block[17], connect_block[18] von außen vorzugeben, damit man da probieren kann
    bzw. das eintragen kann, was einem z.B. tcpdump sagt.

    Leider habe ich hier nicht so viel Hardware rumstehen,
    sonst würde ich tcpdump anschmeissen und mal eine Tabelle mit gültigen TSAP anfertigen.

    Frage in die Runde: Wer könnte mal so eine Tabelle anfertigen ?

  10. #49
    Registriert seit
    29.03.2004
    Beiträge
    5.367
    Danke
    134
    Erhielt 1.586 Danke für 1.158 Beiträge

    Standard

    Slot geht maximal bis 18, da das größte Rack für eine S7-400 18 Steckplätze hat.
    Wieviele Racks maximal gehen weiß ich nicht, meine größte 400er Konstellation hatte 5 Racks. Da für Rack aber nur 3 Bits zur Verfügung stehen, würde ich mal sagen: maximal 7

  11. #50
    Registriert seit
    27.08.2010
    Ort
    OWL
    Beiträge
    18
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also erst mal vielen Dank für die Menge an Antworten.

    Ich höre schon raus, des wird net einfach .

    Das heisst die Nächte am nächsten WE sind bei mir verplant. Vorher komme ich wahrscheinlich nicht dazu weiter zu testen.

    Eine Frage stellt sich mir aber doch noch auf die schnelle, warum sollte der Datenaustausch bei der 1200er anders aufgebaut sein?
    Ich meine, da würde das grosse S ja das Rad neu erfinden.

    Gut, das mit Rack und Slot kann durchaus Architektur bedingt schon anders aussehen.

    Netzteil,CPUund I/O's in einem Block.

    Mit der 1200er geht Siemens da dann wohl den Weg der Codesys basierten Controller. Einzelne Bausteine ändern ist nicht. Komplettes Prog kompilieren und dann übertragen. Und dabei noch CPU in Stop. Irgendwie tödlich wenn man es anders gewohnt ist.

    Ich hab ja noch Hoffnung das über ein Firmware update der Webserver integriert wird, den die CPU in Hannover on Board hatte. Vielleicht kann man da ja dann ansetzen.

    Nur die SD Karte mit 24 MB, die dafür benötigt wird,kostet soviel wie die CPU, irgendwas um die 200 €. Da hätte ich dann auch ne 300er nehmen können. Und alles nur weil ich gern spiele

    Wäre aber schön wenn ihr trotzdem noch mit am Thema bleiben würdet

Ähnliche Themen

  1. Antworten: 17
    Letzter Beitrag: 18.11.2010, 16:36

Lesezeichen

Berechtigungen

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