APROLmicha
Level-1
- Beiträge
- 27
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
Ich versuche seit einiger Zeit mehr oder Weniger erfolgreich eine gemultiplexte 7-Segment-Anzeige einer Maschine mit BCD-CODE einzulesen, um Fehler zu Visualisieren. Bis jetzt wird den Bedienern nur ein Fehlercode angezeigt, was neuen bzw. unerfahrenen Bedienern zum Verhängnis wird. Die Neue Anzeige soll dann auf einem Signage-Display erfolgen in Klartext.
Leider bekomme ich einige Ziffern nicht mit bzw. es werden Ziffern erkannt, die nicht angezeigt werden.
Es handelt sich um eine WiBond Anzeige mit 6 Stellen (Datenblatt angehängt).
Den Code hab ich mal angehängt, auch wenn er einige versuche noch enthält. Simuliere ich dann wird alles richtig erkannt.
Verwendet wird eine B&R X20CP1584 mit einem reAction Eingangsmodul (aufgrund der möglichen kurzen Zeiten).
Die Anzeige hat einen Ausgangsstecker auf dem ich mit dem SPS-Modul daraufhänge. Auch ein Direkter Anschluss an die SPS der Maschine hilft nicht weiter.
Wie würdet ihr daran gehen?
Vielen Dank schonmal!
grüße
Micha
Ich versuche seit einiger Zeit mehr oder Weniger erfolgreich eine gemultiplexte 7-Segment-Anzeige einer Maschine mit BCD-CODE einzulesen, um Fehler zu Visualisieren. Bis jetzt wird den Bedienern nur ein Fehlercode angezeigt, was neuen bzw. unerfahrenen Bedienern zum Verhängnis wird. Die Neue Anzeige soll dann auf einem Signage-Display erfolgen in Klartext.
Leider bekomme ich einige Ziffern nicht mit bzw. es werden Ziffern erkannt, die nicht angezeigt werden.
Es handelt sich um eine WiBond Anzeige mit 6 Stellen (Datenblatt angehängt).
Den Code hab ich mal angehängt, auch wenn er einige versuche noch enthält. Simuliere ich dann wird alles richtig erkannt.
Verwendet wird eine B&R X20CP1584 mit einem reAction Eingangsmodul (aufgrund der möglichen kurzen Zeiten).
Die Anzeige hat einen Ausgangsstecker auf dem ich mit dem SPS-Modul daraufhänge. Auch ein Direkter Anschluss an die SPS der Maschine hilft nicht weiter.
Wie würdet ihr daran gehen?
Code:
PROGRAM _CYCLIC
RTEnable := TRUE;
f_trig_0(CLK := CS);
r_trig_0(CLK := CS);
IF CS AND Strobe THEN
//Adresse zusammen setzen
Bit2Byte_01.bitadr := ADR(adressarray[0]); (* get adress of bit array *)
Bit2Byte_01.length := 8;
Bit2Byte_01(bitadr := ADR(adressarray), length := 8); (* convert bit array into byte array *)
adress1 := Bit2Byte_01.byteadr; (* get adress of byte array *)
memcpy(ADR(adress), adress1, 2);
IF adress <> adressold THEN
arraycounter := arraycounter + 1;
adressdatabase[arraycounter] := adress;
IF arraycounter = 512 THEN
arraycounter := 0;
END_IF
adressold := adress;
END_IF
// Zeichen-Bits erstellen
IF D1 THEN
z0 := 1 ;
ELSE z0 := 0;
END_IF
IF D2 THEN
z1 := 2 ;
ELSE z1 := 0;
END_IF
IF D3 THEN
z2 := 4 ;
ELSE z2 := 0;
END_IF
IF D4 THEN
z3 := 8 ;
ELSE z3 := 0;
END_IF
// Zeichen Bilden
Zeichen := z0 + z1 + z2 + z3;
Zifferarray[adress] := Zeichen;
//Zeichen umwandeln & String bilden
sZiffer0 := INT_TO_STRING(Zifferarray[0]);
sZiffer1 := INT_TO_STRING(Zifferarray[1]);
sZiffer2 := INT_TO_STRING(Zifferarray[2]);
sZiffer3 := INT_TO_STRING(Zifferarray[3]);
sZiffer4 := INT_TO_STRING(Zifferarray[4]);
sZiffer5 := INT_TO_STRING(Zifferarray[5]);
sZiffer6 := INT_TO_STRING(Zifferarray[6]);
sZiffer7 := INT_TO_STRING(Zifferarray[7]);
//FehlerString Leeren
FehlerstringZiffer := leerstring;
strcat(ADR(FehlerstringZiffer), ADR(sZiffer7));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer6));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer5));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer4));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer3));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer2));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer1));
strcat(ADR(FehlerstringZiffer), ADR(sZiffer0));
//Fehlernummern Abspeichern
IF FehlerstringZiffer <> FehlerstringZifferOld THEN
//MpAlarmXSet(gAlarmXCore,FehlerstringZiffer);//
arraycounter1 := arraycounter1 + 1;
Fehlerstringdatabase[arraycounter1] := FehlerstringZiffer;
IF arraycounter1 = 512 THEN
arraycounter1 := 0;
END_IF
FehlerstringZifferOld := FehlerstringZiffer;
END_IF
END_IF
END_PROGRAM
Vielen Dank schonmal!
grüße
Micha