Delphi4 & umFish.DLL v1.2
PneuTuer.MDL ist das LLWin 2.1 Betriebsprogramm für das
Modell "Pneumatische Tür" des neuen Konstruktionskastens "Pneumatic
Robots". Hier eine Delphi4 Version (Delphi3 ist auch
möglich) unter Nutzung von umFishDLL. Das Programm orientiert sich weitgehend an der
Struktur des LLWin-Programmes. Es wurde bewußt einfach gehalten um zu einem einfachen
Modell auch einen einfachen Einstieg in die Delphi Programmierung als Alternative zu LLWin
aufzuzeigen. Nachfolgend werden wichtige Details vorgestellt. Das vollständige Programm
ist in PneuTuer.ZIP enthalten. Zusätzlich erforderlich ist die
aktuelle Version von umFish.DLL (Dez 99) in umFish.ZIP.
Modellkonstanten
' --- Modellkonstanten -----------------------
const
cvTuerAuf=1; cvTuerZu=2; // --- Magnetventile
ctTuerZu=1;
// ---
Taster
cpLichtSchranke=2; // --- Photowiderstand
clLichtSchranke=3; // --- Lampe
cmKompressor=4; // --- Motor
Die Modellkonstanten werden im Programm verwendet um es lesbare zu machen
Formalismus drumrum
Ist bei Delphi stets beieindruckend. Hier nur der zentrale
Dateikontrollblock und und der Hinweis auf die Unit umFish.PAS, die die Declarationen für
die genutzte umFish.DLL enthält. Um die Anwendung unterbrechbar (und damit bedienbar) zu
machen wurden einige Funktionen redifiniert. Es wurden zusätzlich einige Methoden aus
FishN632.DLL hierhin übernommen.
var
FishFace: TftiDCB; pFishFace: TpftiDCB;
und var NotHalt in
umFish.PAS. Über NotHalt kann die Abbrechbarkeit langlaufender Funktionen hergestellt
werden.
PneuTuer.MDL Routinen
procedure TfrmTuerMain.Init;
// --- Initialisierung -----
begin
lblStatus.Caption := 'Init läuft';
SetMotor(pFishFace, clLichtSchranke, ftiEin); // --- Lampe Lichtschranke ein
SetMotor(pFishFace, cmKompressor, ftiEin); // --- Kompressor ein
WaitForTime(pFishFace, 12000);
//
--- Warten auf Druck
SetMotor(pFishFace, cvTuerAuf, ftiAus); // --- Tür
schließen
SetMotor(pFishFace, cvTuerZu, ftiEin); //
Schließventil ein
WaitForInput(pFishFace, ctTuerZu);
// Warten TürZu
SetMotor(pFishFace, cvTuerZu, ftiAus); // ---
Schließventil aus
end;
procedure TfrmTuerMain.TuerAuf;
// --- Tür öffnen -------------
begin
SetMotor(pFishFace, cvTuerZu, ftiAus); // --- Schließventil aus
SetMotor(pFishFace, cvTuerAuf, ftiEin); // --- Öffnerventil ein
WaitForTime(pFishFace, 500);
// Warten Öffnen
SetMotor(pFishFace, cvTuerAuf, ftiAus); // --- Öffnerventil aus
end;
procedure TfrmTuerMain.TuerMain;
// --- Hauptprogramm, Schleife wird über NotHalt beendet ---
begin
Init;
//
--- Ausgangsstellung
lblStatus.Caption := 'Tür geschlossen';
repeat
//
--- Schleife bis NotHalt
WaitForInput(pFishFace, ctTuerZu, false); // --- Warten TürSchubs
TuerAuf;
//
--- Tür Öffnen
lblStatus.Caption := 'Tür geöffnet';
WaitForInput(pFishFace, cpLichtSchranke, false); // Schließen, wenn Lichts.
lblStatus.Caption := 'Tür schließt';
TuerZu;
//
--- Tür Schließen
lblStatus.Caption := 'Tür geschlossen';
until NotHalt;
end;
procedure TfrmTuerMain.TuerZu;
// --- Tür Schließen ---------
begin
SetMotor(pFishFace, cvTuerAuf, ftiAus); // --- Öffnerventil aus
SetMotor(pFishFace, cvTuerZu, ftiEin); // --- Schließventil ein
WaitForInput(pFishFace, ctTuerZu); // --- Warten
auf Schließen
SetMotor(pFishFace, cvTuerZu, ftiAus); // --- Schließventil aus
end;
Ablaufsteuerung
procedure TfrmTuerMain.cmdEndeClick(Sender: TObject);
begin
close;
end;
procedure TfrmTuerMain.cmdHaltClick(Sender: TObject);
// --- Setzen NotHalt, um Ende einzuleiten ----------
begin
cmdStart.SetFocus;
NotHalt := true;
end;
procedure TfrmTuerMain.cmdStartClick(Sender: TObject);
// --------- Starten der Türsteuerung ----------------
begin
cmdHalt.SetFocus;
if NotHalt then // --- Ist
beim Programmstart true
begin
NotHalt := false;
OpenInterface(pFishFace, 'COM1'); { ggf COMx anpassen }
TuerMain;
//
--- TürSteuerung
ClearMotors(pFishFace); // --- Ende
cmdStart.SetFocus;
lblStatus.Caption := 'START/ENDE';
CloseInterface(pFishFace);
end;
end;
Entspricht den Run-Funktionen der LLWin-Umgebung

|