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

Ergebnis 1 bis 10 von 10

Thema: LibNoDave und S7Online Datenstruktur....

  1. #1
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich wollte versuchen ein bischen an der S7Online Schnittstelle zu arbeiten (Ethernet ermöglichen, Routing).

    Nun habe Ich versuch die S7Oexchangeblock Struktur an die in dieser PDF angegeben anzupassen (https://a248.e.akamai.net/cache.auto..._fdl-api_0.pdf), muss jedoch feststellen das dies nicht so einfach möglich ist, da einige werte nicht zu der struktur passen, beispielsweise würde der short wert functionCode dann in application_block_id und application_block_service aufgeteilt werden...

    Gibts da noch andere Strukturen oder sind die in dem PDF schon gültig??
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren LibNoDave und S7Online Datenstruktur....  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Pfeil

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    ...jedoch feststellen das dies nicht so einfach möglich ist, da einige werte nicht zu der struktur passen, beispielsweise würde der short wert functionCode dann in application_block_id und application_block_service aufgeteilt werden...

    Entweder gar nicht darum kümmern und functionCode rausschmeißen. Ich habe die Felder nach Gutdünken eingeteilt und benannt.

    oder so was machen:

    struct {
    char application_block_id;
    char application_block_service;
    } app_struct;

    union {
    short functionCode;
    struct app_struct apps:
    } fc_or_apps;

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    Entweder gar nicht darum kümmern und functionCode rausschmeißen. Ich habe die Felder nach Gutdünken eingeteilt und benannt.

    oder so was machen:

    struct {
    char application_block_id;
    char application_block_service;
    } app_struct;

    union {
    short functionCode;
    struct app_struct apps:
    } fc_or_apps;
    nee, ich meine du schreibst im programmcode einen wert in function code (ein word), wenn ich nun aber den richtigen struckt aus der doku nehme dann würde ein teil von dem wert den du reinschreibst bspw ein byte in block_id und das zweite byte in block_service stehen...

    auch würde sich das ganze userdatafeld mit 520 bytes weiter nach vorne verschieben, da laut doku weinger bytes als bei dir davor sind.... (das unknown feld mit einer länge von [35])

    Es macht eigendlich alles sinn, und passt auch noch schön, bis der application block anfängt... Dann passt es mit der Struktur in libnodave nicht mehr so recht..

    Vieleicht hab Ich ja such einen Fehler gemacht, hier mal mein Strukt:

    Code:
    typedef struct {
        us		unknown [2];
        uc		headerlength;
        us		number;
        uc		rb_type;		//Request Block type (2)
        uc		priority;		//Priority of the Task, identical like serv_class in the application block
        uc		reserved_1;		//Reserved
    	us		reserved_2;		//Reserved
        uc		subsystem;		//For FDL Communication this is 22h = 34
        uc		opcode;			//request, confirm, indication => same as opcode in application block
        us		response;		//return-parameter => same as l_status in application block
        us		fill_length_1;
        uc      reserved_3;		//Reserved
        us      seg_length_1;
        us		offset_1;
    
    	us		reserved_4;
    	us		fill_length_2;
        uc      reserved_5;		//Reserved
        us      seg_length_2;
        us		offset_2;
    	us		reserved_6;	
    	uc		application_block_opcode;         // class of communication   (00 = request, 01=confirm, 02=indication)                                             
        uc		application_block_subsystem;      // number of source-task (only necessary for MTK-user !!!!!)             
        us		application_block_id;             // identification of FDL-USER                                            
        us		application_block_service;        // identification of service                                            
        uc		application_block_local_address_station;        // only for network-connection !!!                                       
    	uc		application_block_local_address_segment;        // only for network-connection !!!                                      
        uc		application_block_ssap;								// source-service-access-point                                          
        uc		application_block_dsap;								// destination-service-access-point                                      
        uc		application_block_remote_address_station;     // address of the remote-station                                        
    	uc		application_block_remote_address_segment;        // only for network-connection !!!                                      
        us		application_block_service_class;							// priority of service                                  
    	void*	application_block_receive_l_sdu_buffer_ptr; // address and length of received netto-data, exception:                
        uc		application_block_receive_l_sdu_length; // address and length of received netto-data, exception:                
        
        uc		application_block_reserved_1;      // (reserved for FDL !!!!!!!!!!)                                        
        uc		application_block_reserved;      // (reserved for FDL !!!!!!!!!!) 
    	void*	application_block_send_l_sdu_buffer_ptr;// address and length of send-netto-data, exception:                    
        uc		application_block_send_l_sdu_length; // address and length of send-netto-data, exception:                        
                               // 1. csrd                 : length means number of POLL-elements       
                               // 2. await_indication     : concatenation of application-blocks and   
                               //    withdraw_indication  : number of application-blocks               
        us		application_block_l_status;       // link-status of service or update_state for srd-indication           
        us		application_block_reserved_2[2];   // for concatenated lists       (reserved for FDL !!!!!!!!!!)          
    
    	uc			user_data_1[260];
    	uc			user_data_2[260];
    } S7OexchangeBlock;
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  4. #4
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Ich hab das ganze jetzt mal in eine excel Tabelle gepackt und analysiere es...

    Ich werde die Struktur in libnodave anpassen wenn das denn recht ist.

    Auch habe Ich vor Routing und TCP/IP über S7Online zu implementieren..

    Das Problem ist nur wie Ich die IP an S7Online bringe... Da bei davenewinterface ja nur eine mpi adresse erlaubt ist...

    Würde mal eine neue Funktion davenewinterface machen, welche auch noch die IP als Parameter bekommt, oder hat jm. eine andere Idee??

    Es würde dann auch einen neuen Verbindungstype (51 S7Online TCP/IP) geben.

    Das routing würde dann wieder über davenewrouting connection aktiviert werden!

    Oder hat jemand Vorschläge?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren So...  

  5. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    So, denke Ich hab's mal soweit realisiert... Kanns im Moment aber nicht testen, keine SPS zur Hand. Was mir aber noch nicht gefällt: Hab jetzt meine Funktion daveNewRoutingConnection in daveNewExtenedConnection umbenannt, da S7Online bei einer TCP/IP Verbdindung ja auch noch die Quell IP Adresse braucht und diese dann auch noch mitgegeben werden muss... Mir gefällt das aber nicht wie Ich das jetzt alles in die Funktion gepackt habe... Vielleicht schaut jemand ja mal drüber und gibt mir ne gute Idee (Vieleicht Zottel, mir wäre es ja auch recht wenn die Änderungen nachher in das Orginal einfließen) ... Testen werde Ich das ganze im lauf der nächsten Woche...

    Mfg.
    Angehängte Dateien Angehängte Dateien
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren So nochmal...  

  6. #6
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mal eine prinzipielle Frage zu TCP/IP über S7Online.
    Wenn ich unter "PG/PC Schnittstelle einstellen" TCP/IP meines Netzwerkadapters auswähle und mit dem SIMATIC Manager eine Verbindung zur SPS aufbau, dann zeigt mir "netstat" in der DOS Box dass es sich hier um eine "iso-tsap" Verbindung handelt, wie auch bei einer ISO on TCP Verbindung via libnodave.
    Stellt sich für mich nun die Frage ob es sich hier dann nicht doch auch um eine ISO on TCO Verbindung handelt und wie ich dann eine echte TCP/IP Verbindung aubfbauen kann, grade wenn z.B. alle möglichen ISO on TCP Verbindungen einer CP343-1 LEAN bereits in Benutzung sind.

    Gruss,

    bool

  7. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    So, bin immer noch am arbeiten an der S7Online Schnittstelle, aber das wird wohl noch ne weile dauern... Ich meld mich wenns geht...

    Werde wohl auch beim Connecten jetzt noch eine Auswertung des Recieve Blocks in LibNoDave einbauen...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren So...  

  8. #8
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    So... habe in meiner jetzigen version das Routing über S7Online, genauso wie den Ethernetzugriff über S7Online am laufen. PLC Starten und Stoppen funktioniert im Moment auch (Auch über Routing). Hab nur irgendwie das Variablen lesen zerschossen... Aber das grieg Ich auch wieder hin... Da Ich aber nun auf Montage bin, gibt wahrscheinlich erst nächste Woche neueres...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren So...  

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Zitat Zitat von bool Beitrag anzeigen
    Wenn ich unter "PG/PC Schnittstelle einstellen" TCP/IP meines Netzwerkadapters auswähle und mit dem SIMATIC Manager eine Verbindung zur SPS aufbau, dann zeigt mir "netstat" in der DOS Box dass es sich hier um eine "iso-tsap" Verbindung handelt
    Bei allen Verbindungen mit dem "well-known" Zielport 102 zeigt netstat "iso-tsap".
    http://www.iana.org/assignments/port-numbers
    http://tools.ietf.org/html/rfc1006

    Gruß
    Harald
    Zitieren Zitieren iso-tsap = port 102  

  10. #10
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Bei allen Verbindungen mit dem "well-known" Zielport 102 zeigt netstat "iso-tsap".
    http://www.iana.org/assignments/port-numbers
    http://tools.ietf.org/html/rfc1006

    Gruß
    Harald
    Hallo Harald,

    Danke für die Info.
    Mir war tatsächlich gar nicht aufgefallen, dass iso-tsap ja eigentlich nur der port alias des Zielpunktes (hier CP der S7 Steuerung) ist und nicht der Protokolltyp selbst.

    Gibt es eigentlich auch Windows/DOS bordeigene Mittel welche es erlauben die lokalen Verbindungen (von/zum eigenen PC) protokollgenau zu prüfen ohne dass ein zusätzliches Tool installiert werden muss? Oder gibt es ggf. ein Tool welches nicht installiert werden muss und zur Lokal-Analyse z.B. vom USB Stick läuft?

    Danke schon mal im voraus.

    Gruss,

    bool

Ähnliche Themen

  1. libnodave S7Online mir .Net
    Von eloboy im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 31.08.2011, 01:57
  2. Libnodave und S7online
    Von adi im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 05.01.2011, 16:31
  3. Libnodave mit VBA und S7Online
    Von Watchdog im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.06.2010, 09:45
  4. LibNoDave + S7Online
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 05.05.2009, 19:56
  5. Libnodave und S7Online
    Von Ralle im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 02.02.2007, 13:49

Lesezeichen

Berechtigungen

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