Definierter Hardware Zustand beim Beenden

Dieser Bereich ist für den Austausch FERTIGER Makros und allgemein nützlicher Schaltungen vorgesehen.
Antworten
maniac_89
Beiträge: 5
Registriert: Mittwoch 29. September 2010, 21:27

Definierter Hardware Zustand beim Beenden

Beitrag von maniac_89 » Dienstag 18. Februar 2014, 22:52

Hallo,
ich möchte ein kleines Projekt realisieren indem ich mehrere Relais auf einer USB Karte verwende und möchte das diese, wenn das Programm beendet wird geöffnet werden (also in diesem Fall logische Null).

In Profilab selbst habe ich keine Möglichkeit gefunden, gibt es vieleicht dafür eine DLL?

Vielen Dank.

Gruß
Steffen

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: Definierter Hardware Zustand beim Beenden

Beitrag von IKT » Mittwoch 19. Februar 2014, 01:00

Hallo maniac_89,

dazu braucht man doch nur das Beenden zu zerzögern und parallel dazu alle Relais auf NULL zu setzen.

Sollte ich das Problem nicht richtig erkannt haben, bitte ich um eine ausführlichere Beschreibung.
++++++
Gruss/regards IKT

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Definierter Hardware Zustand beim Beenden

Beitrag von tom_g » Mittwoch 19. Februar 2014, 07:26

Hi

suche nach "permanent memory" im Forum.

Das hilft vielleicht.

Gruss Thomas
Curiousity makes us progress !

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Definierter Hardware Zustand beim Beenden

Beitrag von abacom » Mittwoch 19. Februar 2014, 08:17

ABACOM support

maniac_89
Beiträge: 5
Registriert: Mittwoch 29. September 2010, 21:27

Re: Definierter Hardware Zustand beim Beenden

Beitrag von maniac_89 » Mittwoch 19. Februar 2014, 13:58

Danke schon mal für die Antworten.
Ich glaube ich habe mich zu ungenau ausgedrückt. Ich möchte das die Relais auch eine Null bekommen, falls der Benutzer die Software über "x" oben rechts im Fenster beendet.

Mit "Simulation Stop" geht das ja nur, wenn die Software über eine Schaltfläche auf der Oberfläche beendet wird. Aber nicht über das "x".

funkybaer
Beiträge: 440
Registriert: Mittwoch 22. Oktober 2008, 08:51
Wohnort: Kitzingen

Re: Definierter Hardware Zustand beim Beenden

Beitrag von funkybaer » Mittwoch 19. Februar 2014, 14:22

Hallo Maniac

Dann gehts nur mit einem Watchdog auf der Karte der bei fehlenden Impulsen Alles abschaltet

Gruß gerhard

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: Definierter Hardware Zustand beim Beenden

Beitrag von IKT » Mittwoch 19. Februar 2014, 14:26

Hallo maniac_89,

dies ist wohl nur über einen Trick zu erreichen:
Start des Prog's. (Kopilat von PL) über einen 'Batch-Job' (*.bat / *.cmd) der danach im Hintergrund auf das Beenden wartet, um anschliessend einen (wie auch immer gearteten) RESET der HW auszulösen (muss ausprobiert werden, da HW-spezifisch).

Dokumentation der HW studieren, ob dies von der Kommandozeile möglich ist.

Es gibt übrigens noch weitere Möglichkeiten ein Kompilat zu beenden:
ESC drücken, oder ALT+F4 ... dies nur der Vollständigkeit halber.
++++++
Gruss/regards IKT

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Definierter Hardware Zustand beim Beenden

Beitrag von tom_g » Mittwoch 19. Februar 2014, 16:57

Hi,

müsste doch über eine DLL funktionieren:

Procedure SimStop(PInput,POutput,PUser: PDLLParams); //called when ProfiLab RUN mode is terminated
begin
// open the relays
end;

Bin leider unter Srom und kann derzeit nicht konkreter helfen.

Gruss Thomas
Curiousity makes us progress !

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: Definierter Hardware Zustand beim Beenden

Beitrag von IKT » Mittwoch 19. Februar 2014, 17:41

Hallo tom_g,
tom_g hat geschrieben:called when ProfiLab RUN mode is terminated
Genau DAS ist der springende Punkt: wo genau im zeitlichen Ablauf des Herunterfahrens, wird diese Funktion aufgerufen (besteht die HW-Anbindung von PL-Prog. noch, oder muss die DLL selbst das Kommando direkt auf die HW schicken?), solange diese Fragen offen sind, ist dieser Lösungs-Ansatz wohl eher NICHT geeignet.

DLL war auch mein erster Gedanke, habe diesen aber, wegen mangelnder präziser Dokumentation (In den Beispielen wird nur von DLL-internen Aufräumaktionen, wie Daten zurückschreiben, Memory freigeben etc. gesprochen.) wieder verworfen.

Möglicherweise hat abacom zu diesen Thema weiterführende Informationen.

[edit]Habe es kurz mit einer DLL versucht, nur die benötigten Funktionen/Sub's eingesetzt. Resultat = an Duo-LED: wenn bei Start auf Hoch (5 V) dann grün, beim Stop LED ist AUS (geht NICHT zuerst auf rot).[/edit]
++++++
Gruss/regards IKT

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Definierter Hardware Zustand beim Beenden

Beitrag von abacom » Donnerstag 20. Februar 2014, 08:33

Grundsätzlich ist die Anbindung eines Hardware-Gerätes aus einer DLL heraus gut möglich.
Die DLL sollte dann aber die GANZE Kommunikation mit dem Gerät übernehmen.

In eine bestehende Anbindung, die bereits mit einer anderen Komponente hergestellt wurde
aus einer DLL heraus "hineinzupfuschen" würde ich nicht empfehlen. Dies wird sicherlich auch nur in
Ausnahmefällen gelingen.
ABACOM support

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Definierter Hardware Zustand beim Beenden

Beitrag von abacom » Donnerstag 20. Februar 2014, 09:02

Hier noch ein Vorschlag...

- Zwei compilierte PL-Anwendungen herstellen:
- Anwendung I steuert die Relais wie bisher
- Anwendung II stellt den Endzustand her (Save State) und beendet sich dann selbst.
- Beide Anwendungen nacheinander aus einer Batch aufrufen. (siehe StartRelayApp.bat in der Anlage)

Code: Alles auswählen

@echo off
echo Running relay app...
call .\compilation_myrelay\myrelay.exe
echo Setting save state...
call .\compilation_myrelaysavestate\myrelaysavestate.exe
echo We are save now!
pause 
Die Compilate habe ich aus anliegendem Beispiel entfernt. Beide Projekte also bitte selbst compilieren.
MyRelay.zip
(1.98 KiB) 309-mal heruntergeladen
ABACOM support

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: Definierter Hardware Zustand beim Beenden

Beitrag von IKT » Donnerstag 20. Februar 2014, 12:51

Hallo abacom,

Danke für die Antwort. Ohne einen 'Wrapper': CMD (WIN32) / BAT (DOS/WIN16) geht's also NICHT.

Für den Gebrauch unter Windows empfehle ich CMD anstelle des 'alten' BAT einzusetzen, da dieses einen grösseren und moderneren Befehlssatz zur Verfügung stellt. Ausserdem ist dies der WIN-Standard seid W2K (Windows NT5.0 / Win. 2000) und alle nachfolgenden Versionen (XP / Vista / 7 / 8 / 8.1).

Zur Info @alle:
eine Referenz für die Kommandozeile, in diesem Falle CMD (versch. Betriebssysteme/Software) findet Ihr unter:
http://SS64.com/nt/

Noch ein Hinweis:
Einige der Kommandos sind wirklich 'gefährlich' (man kann ein System/Netzwerk/Workgroup/Domäne etc. lahmlegen ...), wenn man NICHT weiss, was man tut, also Vorsicht mit den jungen Pferden ...


Frohes scripten ...
++++++
Gruss/regards IKT

maniac_89
Beiträge: 5
Registriert: Mittwoch 29. September 2010, 21:27

Re: Definierter Hardware Zustand beim Beenden

Beitrag von maniac_89 » Sonntag 23. Februar 2014, 19:51

Hallo zusammen,

vielen Dank erstmal für die Antworten. Die letzten Tage hatte ich nicht so viel Zeit um mich um das Projekt zu kümmern und bin erst gestern Abend wieder dazu gekommen.

Die Lösung mit dem Batch Skript gefällt mir gut, das ist auch nicht so aufwändig, weil an eine eigene DLL traue ich mich nicht so richtig.

Ich habe auch folgenden Forums Beitrag gefunden:
viewtopic.php?f=26&t=1566&p=4778&hilit= ... .dll#p4778

die dort erwähnte ExecOnStop Dll würde wohl ebenfalls den gewünschten Effekt bringen, als zweites Programm würde ich hier eben auch einfach eine zweite ProfiLab Anwendung verwenden.

Allerdings habe ich gestern auch festgestellt das die Relais Karte die ich verwenden wollte (http://www.amazon.de/SainSmart-Automati ... =usb+relay) nicht so einfach über ProfiLab ansteuern lässt. Ich bin davon ausgegangen das der FTDI Chip als eine Art Parallel Port über die Virtuelle Com Port Schnittstelle angesteuert werden kann, was ja mit ProfiLab kein Problem gewesen wäre das funktioniert aber nicht. Das schöne an dem Board wäre das es günstig ist und ich sowieso nur drei Relais benötige.

Alternativ hätte ich noch ein Velleman K8055 hier aber das wäre dann auch zu Schade.

Deshalb werde ich wahrscheinlich einen kleinen PIC Microcontroller aus meinem Bastel Lager nehmen und da eine kleine Software schreiben und mit so einem (http://www.ebay.de/itm/USB-TTL-konverte ... 1c3be1c150) Modul kann die Kommunikation dann über einen Virtuellen Com Port erfolgen, das hoffe ich zumindestens. Und in die Embedded Software kann ich dann auch eine Art Watchdog einbauen, ich würde eben einen Timer nehmen der alle 10 Sekunden über einen Befehlt zurück gesetzt werden muss. Damit bin ich dann auch gegen einen PC Absturz gewappnet :D .

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: Definierter Hardware Zustand beim Beenden

Beitrag von IKT » Sonntag 23. Februar 2014, 20:58

Hallo maniac_89,

Betreffend
maniac_89 hat geschrieben:ExecOnStop Dll
Externes Programm starten, egal wie (DLL, EXE etc.), funktioniert alles nur mit 'regulärem' Beenden, also NICHT wie von Dir verlangt 'in allen Lebenslagen'.

Desswegen ist CMD ein MUSS (entweder zum Starten einer EXE oder Kommando direkt absetzen), da es im Hintergrund 'stehen bleibt und wartet' bis das von ihm (dem CMD) aufgerufene EXE (mit call ProgName.EXE) beendet ist und die Kontrolle zurückgibt. Worauf CMD die Kontrolle wieder übernimmt und alles was es will, ausführt.
++++++
Gruss/regards IKT

tom_g
Beiträge: 215
Registriert: Freitag 31. Oktober 2008, 14:59

Re: Definierter Hardware Zustand beim Beenden

Beitrag von tom_g » Montag 24. Februar 2014, 07:22

Hallo zusammen,

ich glaube unterdessen wie IKT, dass nur externe Lösungen zum gewünschten Resultat der Initialisierung von eingebundener Hardware führt.

Die sicherste Lösung ist meiner Meinung nach die Anwendung von Watchdogfunktionalität.

Batch File Scripting wie von Abacom und CMD Scripting wie von IKT vorgeschlagen funktioniert;

vielleicht lohnt auch ein Blick auf diese (Open/Freeware):

*EventGhost mit dem darin enthaltenen PlugIn "ApplicationObserver", welcher in EventGhost Events auslöst, wenn Anwendungen gestartet/beendet werden. Darauf kann EventGhost dann reagieren. Es könnte eine weitere PL-Anwendung starten, welche die Initialisierung vornimmt. Das entspricht dann der IKT Lösung.

*AutoIt kann das wohl auch, evt. noch flexibler.

Ich wünsche Euch eine gute Woche, viele Grüsse von Thomas
Curiousity makes us progress !

Antworten

Zurück zu „Makros & Schaltungen“