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

Ergebnis 1 bis 4 von 4

Thema: BX9000: externes Gerät über RS232 steuern

  1. #1
    Registriert seit
    11.06.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Forumsmitglieder,

    ich habe mich nun auch frisch hier angemeldet, da ich mit einer Problematik nicht so richtig weiterkomme. Die Beckhoff Dokumentation bzw. im Forum hier habe ich dazu nichts direkt gefunden.

    Ich arbeite seit 4 Monaten mit einem Beckhoff BX9000. Programmiert wird jetzt aktuell mit Twincat 2.11 (Build 2241).
    Mein Anliegen ist es ein externes Stromnetzgerät (TopCon Quadro der Firma Regatron) mit Hilfe von RS232 zu steuern. Hierzu bietet Regatron ein LowLevel-Protocol an. Hierzu war meine Idee über einen String die benötigten Anfragen zu Senden bzw. Auszuwerten.
    Ein Beispielstring wäre z.B. A5 04 E5 10 85 50 00.


    Ich habe aber bereits Probleme bei der Einrichtung von der RS232-Schnittstelle. Ich wollte ein Beispiel programmieren und über die PC-Com-Schnittstelle und HTerm die gesendeten Daten auslesen:
    Zunächste habe ich die TCSerialCommunication Bibliotheken installiert. Dadurch habe ich ja Zugriff auf die ComLib.
    Über die Beckhoff Dokumentation BX9000de.chm habe ich dann ein Beispiel zur Seriellen Kommunikation mit Hilfe der "TcComPortBX.lbx" gefunden:

    Code:
    PROGRAM MAIN
    VAR
    (* EXAMPLE - BRIDGE between PIN 7 and 8 from X01 COM 2 Port *)
        fb_COMPortOpen_1                : FB_COMPortOpen;
        stCOMConfig_1                   : ST_COMConfig;
        hCOM                            : WORD;
        Result_R                        : INT;
        Result_W                        : INT;
        Var_M                           : ARRAY[0..9] OF BYTE:=11,22,0,33,0(6);
        Var_R                           : ARRAY[0..9] OF BYTE;
        Value                           : INT;
        Counter_V                       : BYTE; (* It is all OK, this value counts up *)
        i                               : INT;
        i_k                             : INT;
        fbTimer                         : TON;
    END_VAR
     
    stCOMConfig_1.cbRxBufferLen :=300;
    stCOMConfig_1.cbTxBufferLen :=300;
    stCOMConfig_1.dwMode :=0;
    stCOMConfig_1.BaudRate :=9600;
    stCOMConfig_1.eCommPort :=COM2;
    stCOMConfig_1.eDataBits:=EIGHT_DATABITS;
    stCOMConfig_1.eParity:=EVEN;
    stCOMConfig_1.eStoppBits:=ONE_STOPPBIT;
    CASE i OF
    (* Open Port *)
    0:  fb_COMPortOpen_1(bOpen:=TRUE , stCOMConfig:=stCOMConfig_1 );
        IF NOT fb_COMPortOpen_1.bBusy THEN
            IF NOT fb_COMPortOpen_1.bError THEN
                hCOM:=fb_COMPortOpen_1.iHandle ;
                i:=i+1;
            ELSE
                i:=100;
            END_IF
        END_IF
    (* Write data*)
    1:  fbTimer(IN:=FALSE);
        Result_W:=F_COMPortWrite(hCom, 4, ADR(Var_M[0]));
        IF Result_W>0 THEN
            i:=i+1;
            Var_M[2]:=Var_M[2]+1;
        ELSE
            i:=101;
        END_IF
    (*Receive data*)
    2:  Result_R:=F_COMPortRead(hCom, 100, ADR(Var_R[Value]));
        IF Result_R<>0 THEN
            Value:=Result_R+Value;
        END_IF
        IF Value>=4 THEN
            FOR i_k:=0 TO Value DO (*Check protocol*)
                IF Var_R[i_k-4]=11 AND Var_R[i_k-3]=22 AND Var_R[i_k-1]=33 THEN
                    Counter_V:=Var_R[i_k-2];
                    i:=1;
                    Value:=0;
                END_IF
            END_FOR
        END_IF
        fbTimer(IN:=TRUE,PT:=t#1s); (*Watchdog receive*)
        IF fbTimer.Q THEN
            fbTimer(IN:=FALSE);
            i:=102;
        END_IF
    100: ; (*ERROR open port*)
    101: ; (*ERROR send data*)
    102: i:=1; (*WD ERROR no data receive*)
    END_CASE
    Dieses lies sich auch über PLC einwandfrei übersetzen und starten. Dabei erschien auch niemals der ErrorCode i= 100, 101 oder 102.
    Nur leider konnte ich über HTerm am Rechner nichts empfangen. Die Baudraten waren beide auf 9600 gesetzt.

    Muss ich über den Systemmanager bei den Klemmenbelegungen noch irgendetwas ändern?
    Da finde ich nur unter E/A-Geräte unter "Verschiedenes" für den BX nur "Serial Slave BC8150"
    Die Beckhoff Dokumentation hilft mir nicht so richtig weiter.

    Ich hoffe mir kann jemand weiterhelfen.

    Mit freundlichen Grüßen,
    Forest
    Zitieren Zitieren BX9000: externes Gerät über RS232 steuern  

  2. #2
    Registriert seit
    05.05.2012
    Beiträge
    96
    Danke
    44
    Erhielt 14 Danke für 14 Beiträge

    Standard

    Die Bibliothek TCSerialCommunication ist auch für den BX9000?
    Hast du das Beispiel unter folgendem Link?
    http://infosys.beckhoff.com/index.ph...V2_Example.htm

    Die Steckerbelegung ist korrekt?
    Testweise TxD und RxD mal an einem Ende getauscht? (Da passiert nichts, wenn es mal nicht stimmt)

  3. #3
    Forest ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.06.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Lilli,

    Danke für die schnelle Antwort.
    Über die BX COM-Port - ComLibV2 habe ich es auch zuerst versucht gehabt. Genau über das Beispiel aus deinem Link.
    Nur da gab es schon beim übersetzen 2 Fehler:
    SerialLineControlADS
    - Fehler 3760 (30) Fehlerhafter Initialwert
    - Fehler 3760 (13) Fehlerhafter Initialwert
    Dazu habe ich leider keine richtige Lösung gefunden, bzw. habe nicht verstanden wie der Initialwert zu besetzen ist.

    TxD und RxD habe ich noch nicht getauscht gehabt. Muss ich mir erstmal mal nen Kabel zusammenlöten.

    Gibts da nicht auch irgendwo mal ne schöne Schritt für Schritt Anweisung?

    Grüße
    Forest

  4. #4
    Forest ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.06.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also meine Kommunikation zunächst SPS zu PC (HTerm) steht soweit .
    Ich habe das jetzt über die ComLib gemacht:TwinCat Dokumentation/BX8000/Programmierung/Bibliotheken/ComPort
    Dort habe ich auch das Beispiel aus meinem ersten Post her.

    Leider komme ich gerade beim nacheinander beschreiben meiner Register nicht weiter. Meine Idee ist es:
    1.Funktion/Register ansprechen
    - ComPort über FB_ComPortOpen öffnen
    - mit Hilfe von F_ComPortWrite die Bytes rüberschrieben (funktioniert soweit auch, dass ichs mit HTerm auslesen kann
    - ComPort wieder schließen

    2.Funktion/Register ansprechen
    - gleiches Spiel nochmal: ComPort auf/Schreiben/ComPort zu

    Ich habe nun das Problem, dass bei der 2. Funktion/Register beschreiben mein ComPort anscheinend immer noch geöffnet ist und somit das Errorflag i=100 gesetzt wird. Das Schließen des ComPorts bekomme ich aber nicht so richtig hin.
    Dafür gibt’s ja den FB_ComPortClose Baustein, den ich über bClose := TRUE aktiviere und gleichzeitig das iHandle von dem FB_ComPortOpen übergebe. Leider funktioniert das bei mir nicht. Sowohl als Pointer mit ADR(fb_ComPortOpen_1.iHandle) als auch direkt über meine Variable fb_ComPortOpen_1.iHandle erhalt ich jedes mal einen Übersetzungsfehler 4025 bzw. 4000.

    Ich kann auch gerne nochmal meinen aktuellen Code posten. Ansonsten bin ich für jede Hilfe Dankbar!

    Viele Grüße
    Forest

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 16.12.2013, 10:43
  2. Terrarium Steuerung über Beckhoff BX9000
    Von Hohe im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 19.09.2012, 07:57
  3. Compax 3 über V24/RS232 Steuern! Nur wie?
    Von pittiplatsch86b im Forum Antriebstechnik
    Antworten: 1
    Letzter Beitrag: 17.11.2009, 15:14
  4. Siemens Logo! über RS232 steuern
    Von latexp im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 20.05.2005, 14:07
  5. S7-300/400 Email senden über externes Modul
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 27.09.2004, 15:29

Lesezeichen

Berechtigungen

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