Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi K8055 Analog EIngang - Digital Ausgang (https://www.delphipraxis.net/175105-k8055-analog-eingang-digital-ausgang.html)

nexttoptechniker 30. Mai 2013 17:15

K8055 Analog EIngang - Digital Ausgang
 
Hallo, ich habe bis jetzt hier viel gelesen, kommen aber bei dem
problem nicht mehr weiter. Ich bin gerade dabei meine staal. gepr.
Techniker zu machen und noch im ersten Halbjahr. Wir sollen mit der
Vellemann K8055 zwei Eingänge auslesen und min. zwei Ausgänge ansteuern.
Die Programmierung machen wir mit Delphi. Mein Projekt sind zwei
Lichtschranken die als Eingang dienen als Ausgang hängen zwei LED und
ein Piepser dran. Die Lichtempfindliche Diode hängt am Analogeingang und
dessen Wert kann ich mit einer Progressbar auslesen...
Soweit genug geschrieben, jetzt zu meiner Frage.

Wie sage ich dem Digitalen Ausgang das er schalten soll wenn die
Lichtschranke das Signal gibt?


Lese den Analog in mit einem timer aus

Procedure Form.timer3timer(Sender: tobjec)
Var ldr1, ldr2 : integer
Beginn
Readallanalog(ldr1,ldr2)
Progressbar1.Position := ldr1;
Progressbar2.Position :=ldr2;

End;

Wen ich das durch habe bin ich endlich fertig und kann mich an die
Dokumentation und Präsentation machen.

Vielen Dank


Andreas

kamel08 30. Mai 2013 19:14

AW: K8055 Analog EIngang - Digital Ausgang
 
// In der Demo gibt es folg. procedure

Delphi-Quellcode:
procedure TForm1.DigitalOut(Sender: TObject);
var i:longint;
begin
  i:=integer(CheckBox6.checked)*1+
  integer(CheckBox7.checked)*2+
  integer(CheckBox8.checked)*4+
  integer(CheckBox9.checked)*8+
  integer(CheckBox10.checked)*16+
  integer(CheckBox11.checked)*32+
  integer(CheckBox12.checked)*64+
  integer(CheckBox13.checked)*128;
  if not DisableOtherFunctionCall then WriteAllDigital(i);
end;
ich mache es so:

Delphi-Quellcode:
Type TDigitalAusgaenge = Array[1..8] of Boolean;
Var     DigitalAusgang : TDigitalAusgaenge;

Procedure TMainForm.WriteDigital;
var i: longint;
begin
     DisableOtherFunctionCall := true;
     i := Integer(DigitalAusgang[1]) * 1 +
          Integer(DigitalAusgang[2]) * 2 +
          Integer(DigitalAusgang[3]) * 4 +
          Integer(DigitalAusgang[4]) * 8 +
          Integer(DigitalAusgang[5]) * 16 +
          Integer(DigitalAusgang[6]) * 32 +
          Integer(DigitalAusgang[7]) * 64 +
          Integer(DigitalAusgang[8]) * 128;
     //SetDigitalChannel(CardAddr); // Karte 0..3 auswählen
     WriteAllDigital(i);
     DisableOtherFunctionCall := false;
end;

begin
     DigitalAusgang[1] := TRUE;
     DigitalAusgang[2] := TRUE;
     WriteDigital;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz