Warum immer Komponenten der Automatisierungsindustrie?

drfunfrock

Level-1
Beiträge
934
Reaktionspunkte
72
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.
 
Zuletzt bearbeitet:
Verstehe ich nicht ..

Hallo,

drfunrock schrieb:
Warum immer Komponenten der Automatisierungsindustrie?

drfunrock schrieb:
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Prima Idee!

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
 
Häääääääääääääää????

@ FA und drfunfrock

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

Gruß Cerb
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Hallo,

Bei Prüfständen und Versuchsanlagen gibt es Messungen, wo normale
SPS-Analogeingänge überfordert sind.

den Fall hatte ich nocht nicht ...

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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
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

Ja. Aber der Preis so eines Instruments ist nicht nur günstig, sondern es kann Spannungen und Stöme auf etwa 6 Dezimalstellen genau messen, weil eben das DualSlope-AD-Verfahren eingesetzt wird. Zudem kann ich damit auch alles machen, wass ich will. Der Messbereich bis zu 1000V ist auch nicht überall zu finden und darauf kam es hier auch an.

Bei doppelten Preis gibts auch Instrumente, die mit TCP/IP angesteuert werden können. Diesen Luxus wollte mir mein Chef aber nicht gönnen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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

Nimm lieber Instrumente mit TCP/IP. Hier gab es aber das Budget nicht her. Du bist auch besser bedient mit Labview, wenn du viele Instrumente hast. Die Kopplung zur SPS kann man über 5V-IO machen oder per TCP/IP. Letzteres habe ich so schon gemacht. Wir setzen hier auf PXI-Systeme, zu denen es auch 5V-IO-Karten gibt. Da ich aber meinen Job wechsel, komme ich leider nicht mehr zu einer Anlage, wo ich Labview und Twincat per TCP/IP kopple.
 
Zuletzt bearbeitet:
Ich betreibe Laserabstandsmesssensoren mit einem Messbereich von 100mm mit einer Auflösung von 0,002mm. Den Meßwert lese ich auch über RS232 des Sensors aus. Der Sensor hat zwar auch einen 4-20mA-Ausgang aber das bringt, denke ich noch zusäztliche Ungenauigkeiten mit sich.

mfG Jan
 
Ich betreibe Laserabstandsmesssensoren mit einem Messbereich von 100mm mit einer Auflösung von 0,002mm. Den Meßwert lese ich auch über RS232 des Sensors aus. Der Sensor hat zwar auch einen 4-20mA-Ausgang aber das bringt, denke ich noch zusäztliche Ungenauigkeiten mit sich.

mfG Jan

Ich würde den Sensor auch direkt auslesen, weil die Strom-Messung eben Genauigkeit kostet, wenn man es denn braucht. Trotzdem, bei so einer billigen CX9010 kosten die beiden KL6001 ca. 30% der CPU-Zeit. Mehr als 3 RS232 geht wohl nicht. Die E-Bus Klemmen standen vor 2 Monaten noch nicht zur Verfügung. Nimm einen kleinen PC oder so etwas wie die CX1010.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also laut Beckhoff-Homepage stehen die EL-Klemmen zur Verfügung. Die ES-Klemmen werden voraussichtlich Ende des Jahres eingeführt. Würde mich allerdings nicht wundern wenn es nächstes Jahr wird, bis es soweit ist.
 
Also laut Beckhoff-Homepage stehen die EL-Klemmen zur Verfügung. Die ES-Klemmen werden voraussichtlich Ende des Jahres eingeführt. Würde mich allerdings nicht wundern wenn es nächstes Jahr wird, bis es soweit ist.

Ich schrieb ja auch VOR 2 MONATEN :ROFLMAO: Ich bin aber noch skeptisch, was den Ressourcenverbrauch angeht, weil jedes zusätzliche Bussytem unverhältnismässig viel CPU kostet. Die Profibusklemme hat uns an einem Pentium-D PC auch so um die 3%-5% gekostet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also die EL-Klemmen sind auch schon länger verfügbar!! Ich habe schon Anfang des Jahres mit denen gearbeitet!!

Unser Lieferant sagte nur, dass die EL6001 nicht verfügbar sind. Da habe ich dann zu einer E-Bus/K-Bus-Umsetzerklemme gegriffen. Allerdings sind die Schweden (Die sind auch Lieferanten für Norwegen) recht bräsig. Macht nix. Ich kam auch so klar.
 
Unser Lieferant sagte nur, dass die EL6001 nicht verfügbar sind. Da habe ich dann zu einer E-Bus/K-Bus-Umsetzerklemme gegriffen. Allerdings sind die Schweden (Die sind auch Lieferanten für Norwegen) recht bräsig. Macht nix. Ich kam auch so klar.

Ja kann natürlich sein, dass dein Lieferant die noch nicht im Sortiment hatte.
 
Zurück
Oben