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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Warum immer Komponenten der Automatisierungsindustrie?

  1. #1
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe hier einen End-Of-Line-Test mit einer kleinen Beckhoff SPS aufgebaut. Aufgabe: Messe 3 Ströme (Bereich 100mA, Genauigkeit besser als 0.02mA) und eine Spannung (Bereich 300V, Genauigkeit besser als 0.1V) .

    Ich habe das mit dem Butter-und-Brot-Messinstrument von Agilent 34401 und einer Spannungsversorgung von Xantrex XTR (0-600V) gelöst. Beide Instrument mussten über RS232 gesteuert werden, weil GPIB nicht zur Verfügung stand oder besser, GPIB scheint es auch nicht zu geben.

    Die Signale werden zum Messen über 24V-Relais geroutet und es funkt wunderbar. Das Messinstrument verfügt jedenfalls über eine Genauigkeit, die mehr als genügend ist.
    Geändert von drfunfrock (24.10.2008 um 13:02 Uhr)
    Zitieren Zitieren Warum immer Komponenten der Automatisierungsindustrie?  

  2. #2
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Frage

    Hallo,

    Zitat Zitat von drfunrock
    Warum immer Komponenten der Automatisierungsindustrie?
    Zitat Zitat von drfunrock
    mit einer kleinen Beckhoff SPS aufgebaut.
    Sag mal, ist eine Beckhoff SPS keine Komponente der Automatisierungsindustrie ? Oder willst Du uns jetzt sagen, dass ein Agilent 34401 eine SPS ersetzen kann ? Irgendwie werde ich aus Deinem Posting nicht schlau ...

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Verstehe ich nicht ..  

  3. Folgende 2 Benutzer sagen Danke zu Question_mark für den nützlichen Beitrag:

    Cerberus (22.10.2008),Frank (22.10.2008)

  4. #3
    Registriert seit
    28.08.2006
    Ort
    Nordbayern, Mittelfranken
    Beiträge
    165
    Danke
    46
    Erhielt 63 Danke für 49 Beiträge

    Standard

    Hi drfunfrock,

    das ist eine Prima Idee, ich habe darüber auch nachgedacht, aber immer die Programmierung der RS232 gescheut. man könnte ja sogar die beiden "bordeigenen" RS232 des BX9000 verwenden.
    Könnte ich Deine Lösung mal sehen?

    Gruß FA
    Zitieren Zitieren Prima Idee!  

  5. #4
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Frage

    @ FA und drfunfrock

    Was habt ihr denn vor??? Ich versteh immer noch euer Anliegen nicht!

    Gruß Cerb
    A programmer is just a tool which converts caffeine into code.
    Zitieren Zitieren Häääääääääääääää????  

  6. #5
    Registriert seit
    28.08.2006
    Ort
    Nordbayern, Mittelfranken
    Beiträge
    165
    Danke
    46
    Erhielt 63 Danke für 49 Beiträge

    Standard

    Hi Cerberus,

    ich will, Labormessgeräte mit an die SPS-Steuerung anbinden.
    Bei Prüfständen und Versuchsanlagen gibt es Messungen, wo normale
    SPS-Analogeingänge überfordert sind.
    Solche Messgeräte können eventuell auch schon eine Signalvorverarbeitung
    extern durchführen (z.B. Spitzenwertermittlung schneller Signale, Fourieranalyse...).
    Diese Messgeräte liefern ja oft mehrere Analogwerte, die man einzeln
    einlesen müsste.
    Über Schnittstellenanbindung können die sowieso schon
    digitalisierten Signale ohne weitere Fehler in die SPS eingelesen werden und
    zusammen mit den anderen SPS-Daten in ein Messdatenfile geschrieben werden.

    Gruß FA

  7. Folgender Benutzer sagt Danke zu Friedrich-Alexander für den nützlichen Beitrag:

    Cerberus (23.10.2008)

  8. #6
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Hi FA

    Und diese Messgeräte wollt ihr über RS232 anbinden?? Dafür gäbe es auch noch die Klemmen KL6001 oder KL6031 für einen K-Bus-Koppler von Beckhoff oder für ein EtherCAT-System die Entsprechungen EL6001 oder ES6001.

    Genauere Information findest du dazu unter www.beckhoff.de

    Gruß Cerb
    A programmer is just a tool which converts caffeine into code.

  9. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,

    Zitat Zitat von Friedrich-Alexander Beitrag anzeigen
    Bei Prüfständen und Versuchsanlagen gibt es Messungen, wo normale
    SPS-Analogeingänge überfordert sind.
    den Fall hatte ich nocht nicht ...

    Zitat Zitat von Friedrich-Alexander Beitrag anzeigen
    Solche Messgeräte können eventuell auch schon eine Signalvorverarbeitung
    extern durchführen (z.B. Spitzenwertermittlung schneller Signale, Fourieranalyse...).
    das kann die SPS auch alles sehr schön machen ... vor allen Dingen kann man es in der SPS dann so machen, wie man es haben will und nicht so, wie man es vorgesetzt bekommt.

    Gruß
    LL

  10. #8
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... vor allen Dingen kann man es in der SPS dann so machen, wie man es haben will und nicht so, wie man es vorgesetzt bekommt.
    Manchmal kommt es bestimmt auch vor, dass schon alles so passt wie man es haben möchte. Dann muss man nichts eigenes mehr schreiben.
    A programmer is just a tool which converts caffeine into code.

  11. #9
    Registriert seit
    09.12.2006
    Ort
    Lahnstein/Mannheim
    Beiträge
    66
    Danke
    3
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Hi,

    gibt auch Busumsetzer z.B. von Anybus, da kann man dann das RS232 auf den Profibus oder was man immer auch haben will umsetzen.
    Funktioniert auch sehr gut
    Gruß

    Ron

  12. #10
    drfunfrock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Friedrich-Alexander Beitrag anzeigen
    Hi drfunfrock,

    das ist eine Prima Idee, ich habe darüber auch nachgedacht, aber immer die Programmierung der RS232 gescheut. man könnte ja sogar die beiden "bordeigenen" RS232 des BX9000 verwenden.
    Könnte ich Deine Lösung mal sehen?

    Gruß FA
    Abschnitt 1 Background Thread:

    Code:
    PROGRAM FastBackground
    VAR
        rs232_1                : SerialLineControl;
        error1                : BOOL;
        id1                        : ComError_t;
        rs232_2                : SerialLineControl;
        error2                : BOOL;
        id2                        : ComError_t;
    
        rs232_init1     :    KL6configuration;
        rs232_init2     :    KL6configuration;
        ready1     : BOOL;
        ready2    : BOOL;
        busy1     : BOOL;
        busy2        : BOOL;
    END_VAR
    
    IF (NOT ready1) OR (NOT ready2) OR busy1 OR busy2 THEN
        rs232_init1 (
            Execute := TRUE,
            Mode := SERIALLINEMODE_KL6_3B_ALTERNATIVE,
            Baudrate := 9600,
            NoDatabits := 8,
            Parity := PARITY_NONE,
            Stopbits := 1,
            Handshake := HANDSHAKE_NONE,
            ContinousMode := FALSE,
            pComIn := ADR(ST02_RS232InData1),
            pComOut := ADR(ST02_RS232OutData1),
            SizeComIn := SIZEOF(ST02_RS232InData1),
            Done => ready1,
            Busy => busy1,
            Error => error1,
            ErrorId => id1
        );
    
        rs232_init2 (
            Execute := TRUE,
            Mode := SERIALLINEMODE_KL6_3B_ALTERNATIVE,
            Baudrate := 9600,
            NoDatabits := 8,
            Parity := PARITY_NONE,
            Stopbits := 1,
            Handshake := HANDSHAKE_NONE,
            ContinousMode := FALSE,
            pComIn := ADR(ST02_RS232InData2),
            pComOut := ADR(ST02_RS232OutData2),
            SizeComIn := SIZEOF(ST02_RS232InData2),
            Done => ready2,
            Busy => busy2,
            Error => error2,
            ErrorId => id2
        );
    ELSE
        rs232_1 (
            Mode := SERIALLINEMODE_KL6_3B_ALTERNATIVE,
            pComIn := ADR(ST02_RS232InData1),
            pComOut := ADR(ST02_RS232OutData1),
            SizeComIn := SIZEOF(ST02_RS232InData1),
            TXBuffer := ST02_TxBuffer1,
            RXBuffer := ST02_RxBuffer1,
            Error => error1,
            ErrorID => id1
        );
    
        rs232_2 (
            Mode := SERIALLINEMODE_KL6_3B_ALTERNATIVE,
            pComIn := ADR(ST02_RS232InData2),
            pComOut := ADR(ST02_RS232OutData2),
            SizeComIn := SIZEOF(ST02_RS232InData2),
            TXBuffer := ST02_TxBuffer2,
            RXBuffer := ST02_RxBuffer2,
            Error => error2,
            ErrorID => id2
        );
    END_IF

    Abschnitt 2 FB CMD senden:

    Code:
    FUNCTION_BLOCK FB_SendCMD
    VAR_INPUT
        start : BOOL;
        cmd : STRING;
        pt : TIME;
        com : UINT := 1;
    END_VAR
    VAR_OUTPUT
        ready : BOOL;
    END_VAR
    VAR
        Send : SendString;
        t : TON;
        flag : R_TRIG;
        state : UINT;
        bt : BOOL;
    END_VAR
    
    t(PT:=pt,IN:=(state=1));
    flag(CLK:=start);
    
    CASE state OF
        0:
            IF flag.Q THEN
                ready := FALSE;
                IF com=1 THEN
                    Send(    SendString:= CONCAT(cmd,'$0D$0A'),
                            TXbuffer:= ST02_TxBuffer1);
                ELSE
                    Send(    SendString:= CONCAT(cmd,'$0D$0A'),
                            TXbuffer:= ST02_TxBuffer2);
                END_IF
                state := 1;
            END_IF
    
        1:
            IF t.Q THEN
                ready := TRUE;
                state := 0;
            END_IF
    END_CASE

    Abschnitt 3 FB Empfangen von AG34401A:

    Code:
    VAR_INPUT
        start : BOOL;
    END_VAR
    VAR_OUTPUT
        out : REAL;
    
        ready : BOOL;
    END_VAR
    VAR
        Receive: ReceiveString;
        ReceivedString: STRING;
        LastReceivedString: STRING;
        StringReceived: BOOL;
        ReceiveBusy: BOOL;
        l : INT;
    
        state : UINT;
        flag : R_TRIG;
      rflag : R_TRIG;
    END_VAR
    
    flag(CLK:=start);
    
    ready := StringReceived;
    rflag(CLK:=Receive.StringReceived);
    
    CASE state OF
        0:
            ready := TRUE;
            IF flag.Q THEN
                ready := FALSE;
                state := 1;
            END_IF;
    
        1:
            Receive(
                Prefix:= '',
                Suffix:= '$0D$0A',
                Timeout:= T#0s,
                ReceivedString:= ReceivedString,
                RXbuffer:= ST02_RxBuffer1,
                StringReceived=> StringReceived,
                Busy=> ReceiveBusy
            );
         IF rflag.Q THEN
                L := LEN(ReceivedString);
                l := SEL(L>2,4,L);
                Out := STRING_TO_REAL(LEFT(ReceivedString,l-2));
                state := 0;
            END_IF;
    
    END_CASE;

    Abschnitt 4 Bsp (Codestücke):
    Code:
        S2_PU1:
            (* Init Instruments *)
            (* 34401A *)
            Send(start:=TRUE,CMD:='SYST:REM',PT:=T#400ms,COM:=1);
            IF Send.ready THEN
                Send(start:=FALSE);
                state := S2_PU1A;
            END_IF
    
        S2_PU1A:
            state := S2_PU1B;
    
        S2_PU1B:
            Send(start:=TRUE,CMD:='*CLS',PT:=T#400ms,COM:=1);
            IF Send.ready THEN
                Send(start:=FALSE);
                state := S2_PU2;
            END_IF
    
        S2_07:
            (* Meas curr *)
            Send(PT:=T#50ms, CMD := 'MEAS:CURR:DC? 0.1,0.00001', COM:=1, start := TRUE);
            IF Send.ready THEN
                Send(start:=FALSE);
                state := S2_07a;
            END_IF
    
        S2_07a:
            rec(start:=TRUE);
            IF rec.ready THEN
                rec(Start:=FALSE);
                I3 := rec.out;
                IF ABS(I3-I2)>=0.001 THEN
                    state := S2_FAILED;
                ELSE
                    state := S2_08;
                END_IF;
            END_IF

  13. Folgender Benutzer sagt Danke zu drfunfrock für den nützlichen Beitrag:

    Friedrich-Alexander (23.10.2008)

Ähnliche Themen

  1. [B] S5 Komponenten 115 U
    Von Hermann im Forum Suche - Biete
    Antworten: 1
    Letzter Beitrag: 12.09.2011, 18:17
  2. Antworten: 0
    Letzter Beitrag: 18.05.2011, 09:34
  3. pc komponenten
    Von Homer79 im Forum PC- und Netzwerktechnik
    Antworten: 12
    Letzter Beitrag: 29.04.2010, 20:54
  4. Hello world funktioniert nicht immer, aber warum?
    Von Outrider im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 20.04.2010, 10:04
  5. Warum sind Zweihandschaltungen immer mit 2 Öffner/Schließer-Kombinationen realisiert?
    Von Amaryl im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 3
    Letzter Beitrag: 18.02.2010, 12:32

Lesezeichen

Berechtigungen

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