Step
Anmeldungsdatum: 30.01.2007
Beiträge: 67
Verfasst am: 16.08.2007 10:05 Titel: DLL - Setzen der Ausgänge
--------------------------------------------------------------------------------
Hallo,
ich bin dabei, eine DLL für einen Temperatursensor zu erstellen. Dabei soll, solange der Sensor gesucht bzw. die Temperatur ausgelesen wird, ein Ausgang zur Kontrolle HIGH gesetzt werden (also auf 5). Die Werte werden bei mir allerdings immer erst am Ende der <CALCULATE>-Routine übergeben (also nach der Tastaturabfrage mit "if PInput^[SEARCH] > 2.5 then" usw.). Kann man das Signal auch sofort übergeben, also direkt nach dem Einstieg in der CALCULATE-Routine - oder mache ich hier einen Denkfehler. (Falls mein Problem nicht rüberkommt ... ... kann ich hier auch kurz einen Auszug aus dem Quelltext posten ... ?).
Die DLL wird mit Delphi erstellt.
Gruß Stephan
Nach oben
abacom
Site Admin
Anmeldungsdatum: 30.06.2006
Beiträge: 898
Verfasst am: 16.08.2007 12:02 Titel:
--------------------------------------------------------------------------------
Natürlich können Sie jeden Ausgang an beliebiger Stelle der CALCULATE-Procedure setzen:
Code:
Procedure Calculate ...;
begin
POutput^[0]:=MyTemperature;
POutput^[1]:=5; // Output 1 high
...
end;
Natürlich übernimmt ProfiLab die Werte erst nach Verlassen der Procedure, aber das sollte selbstverständlich sein. In Ihrem Fall muss CALCULATE daher "gedanklich" mehrmals durchlaufen werden.
1. Durchlauf: Ausgang auf HIGH
2. Durchlauf: Temperatur auslesen
3. DurchLauf: Ausgang wieder auf LOW
Sie brauchen also eine Statusvariable (ähnlich einem Programmzähler). Es sei empfohlen dafür z.B. PUSER[0]^ zu verwenden.
Sinngemäss sieht die Source dann so ähnlich aus:
Code:
Procedure Calulate
begin
case round(PUser^[PGM_Counter]) of
0:
begin
POutput^[1]:=5; // Output HIGH
PUser^[PGM_Counter]:=PUser^[PGM_Counter]+1;
end;
1:
begin
if ReadTemperatureReady then
begin
POutput^[0]:=ReadTemperature;
PUser^[PGM_Counter]:=PUser^[PGM_Counter]+1;
end;
end;
2:
begin
POutput^[1]:=0; // Output LOW
PUser^[PGM_Counter]:=0;
end;
end;
end;
Zuletzt bearbeitet von abacom am 16.08.2007 12:21, insgesamt einmal bearbeitet
Nach oben
kpaul
Anmeldungsdatum: 29.09.2006
Beiträge: 43
Wohnort: Rosenheim
Verfasst am: 16.08.2007 12:08 Titel:
--------------------------------------------------------------------------------
Hallo,
Neben dem Beispiel in der Profilab-Hilfe sind im Forum auch mehrere
Links für DLL-Beispiele in Delphi zu finden z.B. http://www.kpaul.ag.vu/downloads.html
Gruß kpaul
Nach oben
Step
Anmeldungsdatum: 30.01.2007
Beiträge: 67
Verfasst am: 16.08.2007 12:19 Titel:
--------------------------------------------------------------------------------
Hallo Abacom,
abacom hat Folgendes geschrieben:
Natürlich übernimmt ProfiLab die Werte erst nach Verlassen der Procedure, aber das sollte selbstverständlich sein.
Genau DAS war meine Frage! Wenn dem so ist, so bin ich zumindest was mein Delphi-Programm angeht beruhigt ... und selbstverständlich war es für mich nun nicht ...
Hintergrund: Ich möchte gerne im PL-Programm anzeigen lassen, ob die Routine auf dem 1-Wire-Netz sucht, oder nicht. Ich habe mich jetzt fürs erste damit beholfen, einen BEEP am Anfang und Ende auszugeben - so habe ich wenigstens eine Kontrolle ob sich etwas tut.
kpaul, danke für den Link. Eine Frage zu der DLL von Hygrosens: Ich nehme an, du benutzt das Hygrosens-Modul, oder?
Stephan
Nach oben
kpaul
Anmeldungsdatum: 29.09.2006
Beiträge: 43
Wohnort: Rosenheim
Verfasst am: 16.08.2007 14:40 Titel:
--------------------------------------------------------------------------------
Ja,
verwende ich in meiner Heizungssteuerung, ist also Tag und Nacht im Einsatz.
Über Hygrosens-Temperaturmessmodul sind auch schon mehrere Beiträge im Forum
kpaul
Nach oben
Step
Anmeldungsdatum: 30.01.2007
Beiträge: 67
Verfasst am: 16.08.2007 18:46 Titel: !
--------------------------------------------------------------------------------
kpaul:
Ich wollte auch erst das Hygrosens-Modul nehmen, aber ich habe mir zwischenzeitlich einen Adapter für die 1-Wire-Sensoren selber gebaut und wollte die natürlich auch selbst softwaremässig ansprechen - was jetzt auch gelungen ist (mit Delphi).
Wo ich nun soweit war, wollte ich das zum Anlass nehmen, mal eine DLL für ProfiLab zu entwickeln, da ich diese geniale Möglichkeit von PL sicherlich öfter brauchen werde.
Abacom:
Danke für die ausführliche Antwort (ich habe mich gewundert, dass ein schon existierender Artikel plötzlich immer wieder anders aussieht und wollte schon meinen Browser überprüfen ... )
Die Idee mit der Statusvariable ist einfach zu implementieren und sehr flexibel - DANKE!
Stephan
DLL - Setzen der Ausgänge
Zurück zu „DLL-Programmierung“
Gehe zu
- SOFTWARE-UPDATES
- ProfiLab
- ↳ PROFILAB Kundenprojekte und Aufgabenstellungen
- ↳ Einsteigerfragen / FAQ
- ↳ Darstellung / Visualisierung
- ↳ Zählfunktionen, Zeitsteuerung und Programmablauf
- ↳ Messwertverarbeitung
- ↳ STRING-Verarbeitung
- ↳ Datenschnittstellen
- ↳ Hardware-Anbindung, I/O-Schnittstellen
- ↳ (Fern-)Bedienung / Externe Eingabegeräte
- ↳ Plattformen / PC-Systeme
- ↳ Aus- und Weiterbildung
- ↳ Makros & Schaltungen
- ↳ Projekte
- ↳ Heizungssteuerung
- ↳ Ofensteuerung
- ↳ Elektrische Antriebe
- ↳ Wetter und Klima
- ↳ Kraftfahrzeugtechnik
- ↳ Lichttechnik
- ↳ Multimedia
- ↳ Messtechnik
- ↳ Haussteuerungen
- ↳ Modellbau
- ↳ Elektronik und µ-Controller
- ↳ DLL-Programmierung
- ↳ Kundenspezifische Jobangebote rund um ProfiLab
- ↳ PROFILAB SOFTWARE Support
- ↳ Thema: Frontplatte und Frontplattenelemente
- ↳ Thema: Schaltung und Bauteile
- ↳ Thema: Makros
- ↳ Thema: Compiler
- ↳ Thema: Installation, Updates, Plattformen
- ↳ Thema: Geschwindigkeit und Systemauslastung
- ↳ Thema: ProfiLab-WebServer
- ↳ Thema: Anregungen zu ProfiLab
- ↳ PROFILAB HARDWARE Support
- ↳ Thema Hardware-Beispiele / Examples
- ↳ Thema Schaltungsaufbau, EMV, Störungen
- ↳ Thema RS232
- ↳ Thema Modbus
- ↳ Thema Temperatur
- ↳ Thema Relais
- ↳ Thema Multimeter
- ↳ Thema GPIB
- ↳ Thema Portzugriffe und LPT
- ↳ Geräte: ABACOM
- ↳ Geräte: BMCM
- ↳ Geräte: Conrad / Voltcraft
- ↳ Geräte: Deditec
- ↳ Geräte: DLP-Design
- ↳ Geräte: ELV
- ↳ Geräte: Greisinger
- ↳ Geräte: H-Tronic
- ↳ Geräte: Hygrosens
- ↳ Geräte: IO-Warrior
- ↳ Geräte: Kolter Electronic
- ↳ Geräte: LabJack
- ↳ Geräte: Meilhaus
- ↳ Geräte: Quancom
- ↳ Geräte: Velleman
- ↳ Weitere Geräte
- RealView
- ↳ REALVIEW SOFTWARE Support
- ↳ Einsteigerfragen / FAQ
- ↳ Kundenprojekte
- ↳ Anregungen
- ↳ REALVIEW HARDWARE Support
- sPlan
- ↳ SPLAN SOFTWARE Support
- ↳ Thema: Bibliotheken, Bauteile und Symbole
- ↳ Thema: Schaltpläne zeichnen und bearbeiten
- ↳ Thema: Seitenverwaltung, Blätter, Formblätter, Zoom
- ↳ Thema: Import, Export und Drucken
- ↳ Thema: Installation, Versionen, Updates, Plattformen
- ↳ Thema: Anregungen zu sPlan
- ↳ SPLAN SYMBOLE - Tauschbörse
- ↳ sPlan-Symbole: Elektronikbauteile, µ-Controller, Röhren und Halbleiter
- ↳ sPlan-Symbole: Installation und Anlagenbau, SPS
- ↳ sPlan-Symbole: Andere Fachgebiete, Pneumatik, Hydraulik, Kfz, etc.
- ↳ sPlan 8.0 - Demoversion
- Sprint-Layout
- ↳ SPRINT-LAYOUT SOFTWARE Support
- ↳ Einsteigerfragen / FAQ
- ↳ Thema: Platinenherstellung / Fertigungstechnik
- ↳ Thema: Isolationsfräsen und Bohren
- ↳ Thema: Gerberdateien
- ↳ Thema: Makros und Bauteile
- ↳ Thema: Lötaugen, Pads, Leiterbahnen, Masse
- ↳ Thema: Layer, Lötstop, Umriss
- ↳ Thema: Koordinaten und Raster
- ↳ Thema: Import, Export und Drucken
- ↳ Thema: Installation, Versionen, Updates, Plattformen
- ↳ Thema: Anregungen zu Sprint-Layout
- ↳ Kundenprojekte
- LochMaster
- ↳ LOCHMASTER SOFTWARE Support
- ↳ LochMaster - Tauschbörse
- ↳ Einsteigerfragen / FAQ
- ↳ Kundenprojekte
- ↳ Installation, Updates, Plattformen
- ↳ Anregungen
- FrontDesigner
- ↳ FRONTDESIGNER SOFTWARE Support
- ↳ FrontDesigner: Anregungen
- ↳ HPGL-Export, Fräsen und Gravieren
- AudioWave
- ↳ AUDIOWAVE SOFTWARE Support
- ↳ AudioWave: Anregungen
- ... und mehr von www.electronic-software-shop.com
- ↳ Link zum ABACOM - Webshop
- ↳ USB-µPIO / netPIO
- ↳ Fimware /TEMP12
- ↳ Fimware /GPIO18
- ↳ Fimware /INCR3
- ↳ Fimware /FREQ
- ↳ Fimware /PWMIO18
- ↳ USB-ADC Messmodul, 12 Bit
- ↳ USB-LRB Relaiskarte, 8-fach
- ↳ USB-LCD Textdisplay, 4x20
- ↳ Andere Artikel
- Sonstiges
- ↳ Sonstiges