| |
Programmbeispiel : Alarmanlage
Modell Alarmanlage aus Kasten Profi E-Tec
Funktion :
Sobald I1 unterbrochen wird, ertönt der Summer mit Unterbrechungen. Wird I3
geschlossen, schaltet der Summer ab, aber nur, wenn vorher I1 wieder geschlossen
wurde. Durch Überbrücken von I2 kann die Dauer des einzelnen Summtons
verändert werden (Text Handbuch). An I1 ist im Original ein Reed-Kontakt
angeschlossen (Tür zu : ein, Schaltung durch einen Magneten).
Sub Main
Dim PZ%
Do
If Not GetInput(ftiE1) Then
PZ = IIf(GetInput(ftiE2),256,512)
Do
SetMotor ftiM1, ftiEin
Pause PZ
SetMotor ftiM1,ftiAus
Pause PZ
Loop Until ( GetInput(ftiE1) And GetInput(ftiE3) Or Finish())
End If
Loop Until Finish()
End Sub |
Programmiersprache VBA, erstellt mit vbaFish. Gegenüber E-Tec etwas
vereinfacht : Die Alarmanlage kann nur am Ende einer Hup-Phase zurückgesetzt
werden (Also max. 1 Sekunde drücken).
ft = FishFace()
ft.OpenInterface("LPT")
while not ft.Finish():
if not ft.GetInput(eReed):
if ft.GetInput(eTime): PZ = 256
else: PZ = 512
while not(ft.GetInput(eReed) and ft.GetInput(eStop) or ft.Finish()):
ft.SetMotor(mHupe, ftiEin)
ft.Pause(PZ)
ft.SetMotor(mHupe, ftiAus)
ft.Pause(PZ)
|
Programmiersprache Python (Programmausschnitt). Die Lösung entspricht
der obigen VBA-Version. Da Python keinen "Until" Loop kennt, wurde
hier die Abbruchabfrage für die Hup-Schleife "umgedreht" (in Klammern
gesetzt und not davor).
class FishFaceP(FishFace):
def Pause(self, mSek, TermInput):
sZeit = windll.kernel32.GetTickCount()
while (windll.kernel32.GetTickCount() - sZeit) < mSek:
if (windll.user32.GetAsyncKeyState(self.ESCAPE) != 0
or self.GetInput(TermInput)): return
windll.kernel32.Sleep(self.PollInterval)
ft = FishFaceP()
ft.OpenInterface("LPT") # --- ACHTUNG : PortName
while not ft.Finish():
if not ft.GetInput(eReed):
if ft.GetInput(eTime): PZ = 256
else: PZ = 512
while not(ft.GetInput(eReed) and ft.GetInput(eStop) or ft.Finish()):
ft.SetMotor(mHupe, ftiEin)
ft.Pause(PZ, eStop)
ft.SetMotor(mHupe, ftiAus)
ft.Pause(PZ, eStop) |
Programmiersprache Python (Programmausschnitt) : Die Alarmanlage kann
in jedem Augenblick zurückgesetzt werden. Dazu wurde die Methode Pause der
Klasse FishFace in einer hiervon abgeleiteten Klasse FishFaceP durch eine neue
Methode Pause überschrieben. Sie entspricht voll der bisherigen Methode Pause,
hinzugekommen ist lediglich ein Abbruchparameter TermInput, der in der bereits
vorhandenen Abbruchabfrage zusätzlich abgefragt wird.
Und dann noch eine Lösung mit dem Intelligenten Steuerrelais Siemens
LOGO! Hier wurde auf die Änderung der Hupfrequenz durch Überbrücken von
I2 verzichtet, da der Baustein B01 bequem von außen parametrisiert werden kann.
B02 : Selbsthalterelais, B01 : Symmetrischer Taktgeber.
Alle Sources in eTec.ZIP
Stand : 03.11.2003
|