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

Ergebnis 1 bis 9 von 9

Thema: Frage zu FC5 - AG_SEND

  1. #1
    Registriert seit
    27.01.2010
    Ort
    NRW
    Beiträge
    26
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi, ich habe da mal eine kleine Frage ;)

    Also ich möchte nur über TCP von einer CP343-1 LEAN
    einen STRING fester länge zu einem JAVA ServerSocket schicken.

    Ich hab scho die Verbindung projektiert (aktiv, da SPS client sein soll).
    klappt auch alles wunderbar.

    Im Webinterface wird solange als status 'SYN SEND' angegeben,
    bis ich auf meinem Rechner den JavaServer starte,
    dann wechselt der status zu 'ESTABLISHED'.

    Code des Servers
    Code:
    try {
                ss = new ServerSocket(10001);
                s = ss.accept();
                ...setText("ACCEPT");
                is = s.getInputStream();
                isr = new InputStreamReader(is);
                in = new BufferedReader(isr);
                jStatusLabel.setText("accept bis while!");
                while ((line = in.readLine()) != null) {
                        jChatInput.setText(" <<< " + line + "\n");
                }
                        jStatusLabel.setText("msg received...");
     
                        in.close();
                        s.close();
                        ss.close()
        } catch................
    er kommt genau bis zur zeile while((line=in.readLine().....)


    mein Problem ist eigtl. das starten des FC5 ;)
    alleine schon die steigende Fanke für aktivierung
    (habe keine eingänge etc, die CP soll einfach zyklisch den string schicken)

    AWL Code OB1
    Code:
     FP    M      1.0
          =     L     20.0
          CLR   
          =     M      1.0
          SET   
          =     M      1.0
          BLD   103
          CALL  "AG_SEND"
           ACT   :=L20.0
           ID    :=2
           LADDR :=W#16#100
           SEND  :=P#DB111.DBX2.0 BYTE 10
           LEN   :=10
           DONE  :=M11.0
           ERROR :=M11.1
           STATUS:=MW10
          NOP   0
    hab versucht ne flanke zu simulieren ^^
    es kann auch sein dass ich irgendetwas grundlegendes übersehen habe,
    ich beschäftige mich erst seit rund 2 wochen mit
    der Siemens SPS Technik ^^

    Wäre nett, wenn jemand meinen AWL code korrigieren könnte,
    so dass der CP halt immer mit AG_SEND einen STRING sendet

    p.s. P#DB111.DBX2.0 BYTE 10
    dort steht STRING[128] 'hieristmeinstringdenichschickenwilletc..."

    vielen Dank für eure Mühen :D
    Zitieren Zitieren Frage zu FC5 - AG_SEND  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    für zyklisch eignet sich ein taktmerker
    auch solltest du darauf achten, dass nur aufgerufen wird, wenn der letzte auftrag fertig ist.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    p.s. P#DB111.DBX2.0 BYTE 10
    dort steht STRING[128] 'hieristmeinstringdenichschickenwilletc..."
    So versendest Du nur 10Bytes. An der Adresse mag zwar der String deklariert sein, gesendet wird aber nur das, was du bei Deinem Pointer angibst.

    Wenn Du möglichst schnell senden möchtest, kann man das auch so lösen:
    Code:
    UN Send_Done
    =   Send_Data
    Das Send_Data kannst Du auch noch mit Fehlermeldungen o.ä. verküpfen, so das nur gesendet werden soll, wenn auch keine Fehler anstehen.

  4. #4
    phoo82 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.01.2010
    Ort
    NRW
    Beiträge
    26
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    erstmal vielen dank für eure antworten

    allerdings ist mein problem ja z.B. der Taktmerker

    wenn ich

    Code:
    FP M 1.0
    = L20.0
    versuche passiert nichts.

    ich verstehe das ganze funktionsprinzip nicht, die CPU muss ja
    einen internen clock haben , wieso soll das falling und rising edge
    iwo gespeichert werden?

    kann mir bitte jemand erklären wie ich rising_edge abfrage und dann
    auf L20.0 lege?
    bzw muss bei einer steigenden Flanke auf L20.0 dann nur eine konstante
    logische '1' liegen um FC5 zu aktivieren?

    Die Tutorials in KOP und FUP die ich finden konnte arbeiten
    alle mit den Digitalen eingängen und nutzen die Praktisch als Schalter,
    das will ich ja nicht.

    @Grubba

    kann ich das Send_Data mit dem ACT-Eingang (L20.0) des FC5
    verbinden?

    hier nun der code:
    Code:
    FP    M      0.3
          =     L     20.0
          BLD   103
          CALL  FC     5
           IN0 :=L20.0
           IN1 :=2
           IN2 :=W#16#100
           IN3 :=P#DB111.DBX 2.0 BYTE 10
           IN4 :=10
           OUT5:=M11.0
           OUT6:=M11.1
           OUT7:=MW10
          NOP   0
          UN    M     11.0
          =     L     20.0
    taktmerker M0.3

    noch eine frage:
    ich kann ja in eineme OB1 mehrer Netzwerke einfügen,
    werden diese (zyklisch) nacheinander oder parallel ausgeführt?

    vielen dank für eure hilfe .p
    ich brauche nur ein lauffähiges beispiel, da ich an diesen am meisten
    über funktionsweise etc lerne und mir aneignen kann.

    bis gfeich


    p.s.: achso, dass ich nur 10bytes schicke ist mir bewusst, auch ab position2 beginnend .p

  5. #5
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Code:
    *
    //mit takt...
    
          U     M      2.5                  //sekundenTakt
          FP    M     11.2                  //Flankenauswertung (mit Hilfsmerker für nächsten Zyklus)
          UN    M     11.0
          =     M     11.3                  //start
    
          CALL  "AG_SEND"
           ACT   :=M11.3
           ID    :=2
           LADDR :=W#16#100
           SEND  :=P#DB111.DBX 2.0 BYTE 10
           LEN   :=10
           DONE  :=M11.0
           ERROR :=M11.1
           STATUS:=MW10
    
    //immer, wenn der letzte auftrag raus ist...
          UN    M     11.0
          =     M     11.3
    
          CALL  "AG_SEND"
           ACT   :=M11.3
           ID    :=2
           LADDR :=W#16#100
           SEND  :=P#DB111.DBX 2.0 BYTE 10
           LEN   :=10
           DONE  :=M11.0
           ERROR :=M11.1
           STATUS:=MW10
    probier es mal so.
    der merker, der hinter FP steht ist die Hilfsvariable und sollte nach möglichkeit nicht anders verwendet werden
    die netzwerke werden zyklisch, nacheinander abgearbeitet.
    Geändert von vierlagig (03.02.2010 um 12:17 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    Registriert seit
    16.06.2004
    Beiträge
    60
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Mahlzeit

    die Taktmerker werden in der HW-Konfiguration eingestellt;
    sind eigentlich Impulsmerker.
    Aus diesen kannst Du dann Flanken bilden:
    U taktm
    FP Hilfsm
    = Flankenm

    für den FC5:
    U Flankenm
    UN done
    = activ

    mfg
    jb

  7. #7
    phoo82 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.01.2010
    Ort
    NRW
    Beiträge
    26
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi, erstmal vielen dank.

    Ich wollte den AWL Code testen, da ist mir etwas ganz anderes aufgefallen.

    Also ich habe mein project und mein OB1 in dem FC5 aufgerufen wird.
    FC5 ist aus der SYMANTEC NET BIBLIO,

    habe mein project mit Objecte übersetzen und laden auf die Station gesendet, habe ram -> rom kopiert, habe anwendungsprogramm auf die
    memory card gesendet und vorher url gelöscht.

    Wenn ich nun aber ein neues leeres projekt erstelle und mit
    'Station in PG laden' lade, dann sieht mein OB1 anders aus, nämlich.

    Code:
          U     M      2.5
          FP    M     11.2
          UN    M     11.0
          =     M     11.3
          CALL  FC     5
           IN0 :=M11.3
           IN1 :=2
           IN2 :=W#16#100
           IN3 :=P#DB111.DBX 2.0 BYTE 10
           IN4 :=10
           OUT5:=M11.0
           OUT6:=M11.1
           OUT7:=MW10
    auf einmal wird ein anderer FC5 baustein ausgeführt, der nicht aus
    der SIMANTEC NET Biblio, denke daran wird des liegen.

    Wie kann ich denn die SPS komplett löschen, so dass sie ist wie im
    auslieferungszustand? iwie kommt mir das komisch dass er den OB1 "ändert" einfach.


    bei interesse kann ich auch mein Step7-Project uploaden, damit sich das jemand anguckt kurz, würde mir sehr helfen und ich könnte hier mal weitermachen.

    Ich finde die Programmierung an sich garnciht so schwer, allerdings
    diese effekte mit nicht ordnungsgemäßem übertragen des projectes
    machen alles so zeitintensiv .p

    achso, ich habe immernur die HW config auf die MMC geladen, nciht das komplette project, da ich nur eine 64kByte MMC habe in der SPS.

    Vielen Dank für die viele Zeit die ihr für mich Opfert.

    "Wissen ist das einzige Gut, welches sich vermehrt wenn man es teilt"

    noch eine frage: wenn die instruktionen in OB1 alle sequentiell abgearbeitet werden, wie reagiert dann ACT von FC5 auf eine steigende Flanke, so wie ich den Code verstehe wird durch
    Code:
    = M 11.3 //start
    eine logische '1' dort angelegt und dann erst FC5 aufgerufen.

    Aber pro takt kann man doch maximal einen befehl ausführen mit CPU oder? (ist ja kein FPGA etc)

  8. #8
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von phoo82 Beitrag anzeigen
    ...............
    Wenn ich nun aber ein neues leeres projekt erstelle und mit
    'Station in PG laden' lade, dann sieht mein OB1 anders aus, nämlich.
    .............

    auf einmal wird ein anderer FC5 baustein ausgeführt, der nicht aus
    der SIMANTEC NET Biblio, denke daran wird des liegen.
    Das ist kein anderer FC5!
    Wenn Du ein Programm aus der CPU in das PG lädst fehlt die Symbolik und die Beschreibungen der Bausteinparameter werden durch Defaults ersetzt.
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  9. #9
    phoo82 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.01.2010
    Ort
    NRW
    Beiträge
    26
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hehe danke *rotwerd*

    habe auch zum ersten mal die OptionFrames gesehen, in denen man
    Taktmerker etc einstellen kann.

    Ich werd das alles nochmal in Ruhe testen und mich morgen nochmal melden.

    sorry nochmal für all die dummen fragen, aber speziell zu AWL...
    ...ich glaube manchmal denke ich einfach zu komplliziert...

    z.B. bei
    Code:
    //mit takt...
    
          U     M      2.5                  //sekundenTakt
          FP    M     11.2                  //Flankenauswertung (mit Hilfsmerker für nächsten Zyklus)
          UN    M     11.0
          =     M     11.3                  //start
    
          CALL  "AG_SEND"
           ACT   :=M11.3
           ID    :=2
           LADDR :=W#16#100
           SEND  :=P#DB111.DBX 2.0 BYTE 10
           LEN   :=10
           DONE  :=M11.0
           ERROR :=M11.1
           STATUS:=MW10
    und dem wissen das ACT auf steigende Flanke wartet zum ACTIVATEN..

    ich dachte nach
    Code:
          U     M      2.5                  //sekundenTakt
          FP    M     11.2                  //Flankenauswertung (mit Hilfsmerker für nächsten Zyklus)
          UN    M     11.0
          =     M     11.3
    ist M11.3 auf logisch '1' (VCC) gesetzt, bis man es z.B. negiert etc.

    und der CALL befehlt ist erst ein zyklus später, deswegen kommt an M11.3 keine steigende Flanke, weil es ja schon auf '1' ist und sich nciht mehr ändert.

    vielen dank euch allen nochmal

    Bin heute auch ziemlich durch den wind und gestresst (wie man an meienn formulierungen bestimmt merkt

    Ich werde das nochmal alles in ruhe testen und mich gegebenfalls nochmals morgen/übermorgen melden.

    Gruss, Marc

Ähnliche Themen

  1. ISO on TCP AG_SEND
    Von markuscps im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 17.02.2011, 15:03
  2. nochmals AG_SEND
    Von phoo82 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 06.02.2010, 03:48
  3. FC5 AG_Send
    Von klauserl im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.02.2009, 18:18
  4. Fehlermeldung in AG_SEND
    Von quant81 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 08.06.2007, 09:21
  5. Ag_send
    Von reiki im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.10.2006, 13:02

Lesezeichen

Berechtigungen

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