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

Ergebnis 1 bis 6 von 6

Thema: BC8150 RS232 Kommunikation Byte-weise

  1. #1
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute
    Ich habe mir einen BC8150 zugelegt, da er sehr Preisgünstig ist und eine Serielle schnittstelle besitzt.
    Will mit dem BC ein I2C 7-Segment Display ansteuern (über ein Modem I2C - PC Modem / RS232 Interface).
    Leider klappt das nicht.

    Habe ein Excel Makro mit dem das sehr gut Funktioniert.
    Hat jemand einen Tipp für mich wie ich die Bytes über die RS232 auf das Modem senden kann?

    Es soll über die RS232 4 Byte Kommandos gesendet werden.

    65dez sagt dem Modem die Zahl der Bytes nach der Slave Adresse. (Im Beispiel 2 Bytes) 112dez ist die Slave Adresse.
    0dez ist das Config Register im Display Slave 119dez steht für die maximale Helligkeit (23dez für die niedrigste)

    Habe kurz mit Beckhoff geschrieben, die mir sagen außer RTU und ADS kann die Schnittstelle nix.
    Habe ich wirklich keine Chance diese doch sehr simple Aufgabe mit dem BC8150 zu lösen?

    Lg Jörg
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren BC8150 RS232 Kommunikation Byte-weise  

  2. #2
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Normalerweise braucht man die TwinCAT PLC Serial Communication Library (kostenpflichtig) für die RS232 Kommunikation, die steht ja auch als Zubehör für den BC8000 mit dabei .....

  3. #3
    peacekeeper03 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Lib wollte er mir mit dem BX8000 verkaufen.
    Beckhoff meine der BC8150 kann das nicht mit der on board rs232.
    Dazu brauche ich die Kl6031.

    Hört sich aber etwas komisch an die 4 Kommandos nicht über die obboard Schnittstelle senden zu können.

    EDIT: Hab jetzt nichmal die Beschreibung der ComLib gelesen und die unterstützt die Hardware scheinbar nicht.
    Der BX8000 hat eine LIB in der er die Schnittstelle emulieren kann.
    Geändert von peacekeeper03 (15.04.2013 um 17:55 Uhr)

  4. #4
    Registriert seit
    01.04.2009
    Beiträge
    143
    Danke
    0
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Schau doch mal in die TcSystemBCxx50, da gibt es Serial Communication interface, in der Doku wirst du dazu nichts finden, aber ein kleiner Tipp, in der BX Doku steht das und noch ein "aber", die serielle Schnittstelle ist nur einmal auf dem BC8150, du musst halt über diese programmieren und kannst sie nicht gleichzeitig für die SPS nutzen. Macht das debuggen schwer. Aber wenn du fiffig bist und nicht viele Fehler beim Programmieren machst, bekommst du das schon hin. Sonst nimm einen BX8000 der hat 2 serielle Schnittstellen damit kannst du Programmieren und gleichzeitig die andere COM Schnittstelle für die SPS nutzen.
    Dann viel spass schreib mal ob du es geschafft hast

  5. #5
    Registriert seit
    08.10.2011
    Ort
    Belgien
    Beiträge
    32
    Danke
    1
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Hi Peacekeeper

    Vielleicht eine kleine "alte" beispiel...

    Prog Main:
    Code:
    PROGRAM MAIN
    VAR
    (*    BC8150
        Example with 1 x KL2xx4 *)
    (* programming address is for example 11. If the address switch 10 then use the PLC project the RS232 interface.
    Then is it not possible to debug the PLC project. A restart is not necessay*)
        ReadSlaveAddress:ReadSlaveAddress;
        FBComOpen:FB_COMPortOpen;
        FBComClose:FB_COMPortClose;
        COMConfig: ST_COMConfig;
        iHandle: INT;
    END_VAR
    
    
    
    ReadSlaveAddress(
        bRead:=TRUE ,
        bBusy=> ,
        bError=> ,
        iErrorId=> ,
        iSlaveAdress=> );
    IF NOT ReadSlaveAddress.bBusy THEN
        ReadSlaveAddress(bRead:=FALSE);
    END_IF
    
    
    COMConfig.BaudRate :=38400;
    COMConfig.dwMode:=0;
    COMConfig.eCommPort:=COM1;
    COMConfig.eDataBits:=EIGHT_DATABITS;
    COMConfig.eParity:=EVEN;
    COMConfig.eStoppBits:=ONE_STOPPBIT;
    
    
    IF ReadSlaveAddress.iSlaveAdress =10 THEN
        FBComClose(
            bClose:=FALSE);
        FBComOpen(
            bOpen:=TRUE ,
            stCOMConfig:=COMConfig ,
            bBusy=> ,
            bError=> ,
            iErrorId=> ,
            iHandle=>iHandle );
        IF NOT FBComOpen.bBusy THEN
            IF NOT FBComOpen.bError THEN
                Serial;
                OUT.0:=TRUE;
            END_IF
        END_IF
    ELSE
        FBComOpen(
            bOpen:=FALSE);
        FBComClose(
            bClose:=TRUE ,
            iHandle:=iHandle ,
            bBusy=> ,
            bError=> ,
            iErrorId=> );
        IF NOT FBComClose.bBusy  THEN
            Out:=0;
        END_IF
    END_IF
    Readslaveaddress: die switch (normal is dass fur eine BC8150 address=11 fur ADS communication...
    <> 11 is keine ADS communication... verschiedene optionen.. check manual!

    prog serial:
    Code:
    PROGRAM Serial
    VAR
        i: INT;
        DataSend: ARRAY[0..11] OF BYTE;
        fb_Timer1: TON;
        DataRec: ARRAY[0..11] OF BYTE;
        Result: INT;
        MerkerResult: INT;
    END_VAR
    
    DataSend[0]:=11;
    DataSend[1]:=55;
    DataSend[2]:=11;
    DataSend[3]:=11;
    DataSend[4]:=11;
    DataSend[11]:=16#AA;
    
    
    CASE i OF
        0:    F_COMPortWrite(MAIN.iHandle ,SIZEOF (DataSend), ADR(DataSend));
            i:=1;
            fb_Timer1(IN:=FALSE);
        1:    Result:=F_COMPortRead(MAIN.iHandle, 12,ADR(DataRec)+MerkerResult);
            IF Result+MerkerResult  =12 THEN
                i:=0;
                MerkerResult:=0;
                DataSend[5]:=DataRec[5]+1;
                OUT.2:=NOT OUT.2;
            ELSE
                MerkerResult:=MerkerResult+Result;
            END_IF
    
    
            fb_Timer1(PT:=t#2s,IN:=TRUE);
            IF fb_Timer1.Q THEN
                fb_Timer1(IN:=FALSE);
                i:=0;
                DataSend[5]:=DataSend[5]+1;
                OUT.2:=NOT OUT.2;
                MerkerResult:=0;
            END_IF
    END_CASE
    OUT.3:=NOT OUT.3;
    diese beispiel sended 6 bytes... 6de byte is eine "checksum"

    gruss,
    Peter
    Geändert von PeterT (25.04.2013 um 11:14 Uhr)

  6. #6
    peacekeeper03 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe jetzt den Tausch auf einen BX8000 vollzogen.
    Jetzt klappt die kommunikation ohne Probleme.

Ähnliche Themen

  1. RS232 Kommunikation EM-PC
    Von Rauchegger im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 05.02.2013, 21:57
  2. Kommunikation BC8150 <--> Beijer IX T4A
    Von Friedrich-Alexander im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 21.03.2012, 11:24
  3. RS232 Kommunikation
    Von justbql im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.12.2010, 16:48
  4. RS232 Kommunikation
    Von CanCow im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 14.10.2009, 16:14
  5. Kommunikation VIPA -> KUKA über 1 Byte
    Von olitheis im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 18.10.2008, 15:04

Lesezeichen

Berechtigungen

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