Steuerparameter REQUEST

Erklär mal - oder besser poste das mal ...
Aber am Allerbesten ... versuch mal den Code von Rostiger Nagel nachzuvollziehen - vor Allem in Bezug auf die Unterschiede zu deinem Code. Diese Kommunikation ist ein bißchen was anderes als einen Timer zu betreiben ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
L     1
      T     MB     0
      U     M      0.1
      =     #Start
 
      CALL  "TCON" , "Daten_FB65"
       REQ    :=#Start
       ID     :=#LOCAL_ID
       DONE   :=#CONN_DONE
       BUSY   :=#CONN_BUSY
       ERROR  :=#CONN_ERROR
       STATUS :=#CONN_STATUS
       CONNECT:=#TCON_PAR

ich hab bis jetzt nur das. ich wollte als erstes nur die Verbindung herstellen und hab das so in AWL in einem Funktionsblock geschrieben.
 
Dann solltest du ein wenig mehr erläutern:



Warum wird eine 1 in das MB0 geladen?

Warum nutzt du den M0.1 zum setzen der Startbedingung, wenn du ihn vorher mit 0 vorbesetzt?

Woher kommen deine Variablen mit den du den TCON beschaltest?



Du solltest vielleicht etwas mehr an Code hochladen!
 
Zuletzt bearbeitet:
das ist alles nur provisorisch ich wollte lediglich ich wollte lediglich die variabel #start auf 1 setzen

dieVariabeln Done, Busy, Error und Status sind ausgänge des FB 65 und wurden ihrem Datentyp nach in der Instanz DB erstellt

REQ ist das start bit (steigende Flanke um die Kommunikation zustarten) also einfach eine Variabel (start im Datentyp Bool)

Tcon_Par ist eine UDT, welcher die Verbindungsparameter von meinem Clienten beinhaltet (erstellt durch OC Wizard)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine Start Variabel solltest du anders setzen, entweder durch eine Variablentabelle
oder im Instanz DB beim Status beobachten. Also etwas im Programm auf '1' setzen
könntest du so machen.

Code:
SET
= M0.1

Deine Besschaltung außer von REQ und CONNECT nimm mal weg.
Wo stehen deine Parameter TCON_PAR in welchen DB und vor allen
Dingen stehen da noch deine Parameter drin die vom Wizzard erstellt
wurden.
 
Die von OC Wizard erstellten Datein (eine UDT) wurde in der Instanz DB von dem Funktionsblock, in dem der von mir beschriebene Code steht, unter dem Namen TCON_PAR bei strat hinzugefügt. Diese UDT hab ich schon gepostet.

Warum muss die Beschaltung außer REQ und CONNECT weg? Das sind doch nur Ausgänge die auf Variabeln gesetzt werden oder lieg ich da falsch?

Eine restliche Beschaltung gibt es nicht das von mir gesetzte Bit zum ansteuern des FB 65 wurde in einer frühreren Version im OB 1 erledigt und dann mit einer Variabel in den Funktionsblock überführt der dann den Funktionsblock 65 übertragen wird

ich hoffe das konnte man nachvollziehen ^^
 
Hier einmal mein OB1
Code:
  SET   
      =     M      0.1

      CALL  "Senden" , "Daten"
       Start:=M0.1

Dann der FB 500 ("Senden")

Code:
 U     #Start
      CALL  "TCON" , "Daten_FB65"
       REQ    :=#Start
       ID     :=#TCON_PAR.id
       DONE   :=#CONN_DONE
       BUSY   :=#CONN_BUSY
       ERROR  :=#CONN_ERROR
       STATUS :=#CONN_STATUS
       CONNECT:=#TCON_PAR
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ist nicht ganz klar wo deine Variablen deines TCON herkommen, liegen Sie im 'STAT' Bereich des aufrufenden Baustein? Wenn ja musst du Sie füttern.
Mach mal von deinen ganzen Programm eine Quelle und stell Sie ein.
 
ich fürchte in deiner Parameterbeschaltung stehen dann falsche Werte bzw. "0" drin, wenn Sie
nicht durch Anfangswerte oder zuweisung richtige Werte bekomoen haben. Zum Beispiel bei TCON.ID
steht dann nicht die richtige ID drin.

Quellen kannst du Generieren, wenn du im Baustein-Editor unter Datei -> Quellen generieren anwählst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ID Problem hatte ich schon dann kam Error = 1 und Status Hex 0x8022 ;-)

Code:
FUNCTION_BLOCK "Senden"
TITLE =
VERSION : 0.1

VAR_INPUT
  Start : BOOL ; //Auftrag starten (bei steigender Flanke)
END_VAR
VAR
  CONN_DONE : BOOL ; //Auftrag läuft (0) oder ist fehlerfrei bearbeitet (1)
  CONN_BUSY : BOOL ; //Auftrag in Bearbeitung (1) oder ist beendet (0)
  CONN_ERROR : BOOL ; //Fehler aufgetreten bei (1)
  CONN_STATUS : WORD ; //Auftragsstatus, Fehlerinformation bei Error = 1
  TCON_PAR : UDT 510; //Connection Parameter für S-HER o82-PN generiert über OC Wizrad 
  TADDR_PAR : UDT 511; //Adress Parameter für S-HER o82-PN generiert über OC Wizrad
END_VAR
BEGIN
NETWORK
TITLE =Connection

      U     #Start; 
      CALL "TCON" , "Daten_FB65" (
           REQ                      := #Start,
           ID                       := #TCON_PAR.id,
           DONE                     := #CONN_DONE,
           BUSY                     := #CONN_BUSY,
           ERROR                    := #CONN_ERROR,
           STATUS                   := #CONN_STATUS,
           CONNECT                  := #TCON_PAR);
 
END_FUNCTION_BLOCK
DATA_BLOCK DB 500
TITLE =
VERSION : 0.0
"Senden"
BEGIN
   Start := FALSE; 
   CONN_DONE := FALSE; 
   CONN_BUSY := FALSE; 
   CONN_ERROR := FALSE; 
   CONN_STATUS := W#16#0; 
   TCON_PAR.block_length := W#16#40; 
   TCON_PAR.id := W#16#1; 
   TCON_PAR.connection_type := B#16#13; 
   TCON_PAR.active_est := FALSE; 
   TCON_PAR.local_device_id := B#16#2; 
   TCON_PAR.local_tsap_id_len := B#16#2; 
   TCON_PAR.rem_subnet_id_len := B#16#0; 
   TCON_PAR.rem_staddr_len := B#16#0; 
   TCON_PAR.rem_tsap_id_len := B#16#0; 
   TCON_PAR.next_staddr_len := B#16#0; 
   TCON_PAR.local_tsap_id[1] := B#16#7; 
   TCON_PAR.local_tsap_id[2] := B#16#D0; 
   TCON_PAR.local_tsap_id[3] := B#16#0; 
   TCON_PAR.local_tsap_id[4] := B#16#0; 
   TCON_PAR.local_tsap_id[5] := B#16#0; 
   TCON_PAR.local_tsap_id[6] := B#16#0; 
   TCON_PAR.local_tsap_id[7] := B#16#0; 
   TCON_PAR.local_tsap_id[8] := B#16#0; 
   TCON_PAR.local_tsap_id[9] := B#16#0; 
   TCON_PAR.local_tsap_id[10] := B#16#0; 
   TCON_PAR.local_tsap_id[11] := B#16#0; 
   TCON_PAR.local_tsap_id[12] := B#16#0; 
   TCON_PAR.local_tsap_id[13] := B#16#0; 
   TCON_PAR.local_tsap_id[14] := B#16#0; 
   TCON_PAR.local_tsap_id[15] := B#16#0; 
   TCON_PAR.local_tsap_id[16] := B#16#0; 
   TCON_PAR.rem_subnet_id[1] := B#16#0; 
   TCON_PAR.rem_subnet_id[2] := B#16#0; 
   TCON_PAR.rem_subnet_id[3] := B#16#0; 
   TCON_PAR.rem_subnet_id[4] := B#16#0; 
   TCON_PAR.rem_subnet_id[5] := B#16#0; 
   TCON_PAR.rem_subnet_id[6] := B#16#0; 
   TCON_PAR.rem_staddr[1] := B#16#0; 
   TCON_PAR.rem_staddr[2] := B#16#0; 
   TCON_PAR.rem_staddr[3] := B#16#0; 
   TCON_PAR.rem_staddr[4] := B#16#0; 
   TCON_PAR.rem_staddr[5] := B#16#0; 
   TCON_PAR.rem_staddr[6] := B#16#0; 
   TCON_PAR.rem_tsap_id[1] := B#16#0; 
   TCON_PAR.rem_tsap_id[2] := B#16#0; 
   TCON_PAR.rem_tsap_id[3] := B#16#0; 
   TCON_PAR.rem_tsap_id[4] := B#16#0; 
   TCON_PAR.rem_tsap_id[5] := B#16#0; 
   TCON_PAR.rem_tsap_id[6] := B#16#0; 
   TCON_PAR.rem_tsap_id[7] := B#16#0; 
   TCON_PAR.rem_tsap_id[8] := B#16#0; 
   TCON_PAR.rem_tsap_id[9] := B#16#0; 
   TCON_PAR.rem_tsap_id[10] := B#16#0; 
   TCON_PAR.rem_tsap_id[11] := B#16#0; 
   TCON_PAR.rem_tsap_id[12] := B#16#0; 
   TCON_PAR.rem_tsap_id[13] := B#16#0; 
   TCON_PAR.rem_tsap_id[14] := B#16#0; 
   TCON_PAR.rem_tsap_id[15] := B#16#0; 
   TCON_PAR.rem_tsap_id[16] := B#16#0; 
   TCON_PAR.next_staddr[1] := B#16#0; 
   TCON_PAR.next_staddr[2] := B#16#0; 
   TCON_PAR.next_staddr[3] := B#16#0; 
   TCON_PAR.next_staddr[4] := B#16#0; 
   TCON_PAR.next_staddr[5] := B#16#0; 
   TCON_PAR.next_staddr[6] := B#16#0; 
   TCON_PAR.spare := W#16#0; 
   TADDR_PAR.rem_ip_addr[1] := B#16#C0; 
   TADDR_PAR.rem_ip_addr[2] := B#16#A8; 
   TADDR_PAR.rem_ip_addr[3] := B#16#0; 
   TADDR_PAR.rem_ip_addr[4] := B#16#B; 
   TADDR_PAR.rem_port_nr[1] := B#16#0; 
   TADDR_PAR.rem_port_nr[2] := B#16#A1; 
   TADDR_PAR.spare[1] := B#16#0; 
   TADDR_PAR.spare[2] := B#16#0; 
END_DATA_BLOCK
 
nichts :p das ja das Problem ^^

der Status gibt 0x7000 an, was so viel bedeutet wie keine "keine Auftragsbearbeitung aktiv"
 
ja ich denke ich habe es mittlerweile gelöst :)

das erste Problem war das ich es gar nicht mitbekommen hab, das die Kommunikation zustande gekommen ist. Gelöst hab ich das in dem ich das Status Wort abgefangen habe.

Desweiteren hatte ich Probleme mit den Online/Offline Versionen von meinen Programm (denke ich zumindestens) aber da muss ich mich nochmal genauer dransetzen. Jedoch konnte ich nun die Verbindung herstellen :)

vielen Dank für eure Hilfe

mfg Tim
 
Hallo zusammen,

wenn du im Simatic Manager "STRG+D" drückst du anschließend auf den Reiter "Kommunikation" gehst siehst du unter der Schaltfläche "Diagnose" welche Teilnehmer verbunden sind, bzw welche mit dem TCON FB projektiert wurden, aber nicht antworten. Vielleicht hilft es ein wenig weiter den Fehler zu finden!
 
Zurück
Oben