-> Hier kostenlos registrieren
ich bin noch ziemlich am anfang mit dem programmieren in delphi.
hab mich bereits etwas eingearbeitet und ein paar kleine pogramme geschrieben.
ich muss eine maschine mit delphi steuern mittel meines WebIO von W&T und stehe nur vor folgenden problemen:
wie kann ich eine zyklische abarbeitung eines programms erreichen wie bei einer sps? denn angenommen ich starte ein programm für eine maschine zu steuern(also führe die .exe aus) nun wird der start-button gedrück und abjetzt soll die maschine ja vollständig alleine weiterarbeiten. angenommen mit dem klickereigniss des start-button setze ich einen ausgang, der den antrieb eines förderbandes einschaltet. an schließen, wenn ein sensor betätig wird, soll der antrieb wieder abgeschaltet werden. ich muss also ständig alle eingäge einsehen, dass auf änderungen reagiert werden kann. und angenommen ich schriebe sinngemäß folgendes program(implementationsteil):
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket1.SendText(GET /outputaccess0?PW=&Status=ON&)
// setzt ausgang0 des WebIO
ClientSocket1.Socket.SendText(GET /input3?PW=&) // ließt dem zustand von eingang 3 ein
if ClientSocket1.Socket.ReciveText='input3;ON' // dies bedingung wird erfüllt, wenn das WebIO den Text 'input3;ON' zurückliefert, also eingang3 ein 1-signal hat
then
ClientSocket1.Socket1.SendText(GET /outputaccess0?PW=&Status=OFF&)
// setzt den Ausgang0 des WebIO zurück
end;
nun wird also beim betätigen des start-button(button1) der ausgang 0 gesetzt. nun aber das programm wird ja dann sofort weiter abgearbeitet. und es dauert ja noch, bis das band den sensor betätigt und der eingang3 ein 1-signal erhält.
das förderband würde so nicht mehr zum stehen kommen, weil die eingänge nicht städing abgefragt werden und auch nicht drauf reagiert wird.
liegt ich überhaupt richtig mit der annahme, das eine programm beim starten der .exe einmal ausgeführt wird und wenn dieses beendet ist, geschieht solange nichts mehr, bis ein button oder ein timer eine procedure oder function "startet" ?
kann man irgendwie herrausfinden, wie lange die bearbeitungszeit einer bestimmten procedure ist?
ich hoffe man kann verstehen worauf ich hinnaus möchte und hoffe das mir jemand weiterhelfen kann. danke
hab mich bereits etwas eingearbeitet und ein paar kleine pogramme geschrieben.
ich muss eine maschine mit delphi steuern mittel meines WebIO von W&T und stehe nur vor folgenden problemen:
wie kann ich eine zyklische abarbeitung eines programms erreichen wie bei einer sps? denn angenommen ich starte ein programm für eine maschine zu steuern(also führe die .exe aus) nun wird der start-button gedrück und abjetzt soll die maschine ja vollständig alleine weiterarbeiten. angenommen mit dem klickereigniss des start-button setze ich einen ausgang, der den antrieb eines förderbandes einschaltet. an schließen, wenn ein sensor betätig wird, soll der antrieb wieder abgeschaltet werden. ich muss also ständig alle eingäge einsehen, dass auf änderungen reagiert werden kann. und angenommen ich schriebe sinngemäß folgendes program(implementationsteil):
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket1.SendText(GET /outputaccess0?PW=&Status=ON&)
// setzt ausgang0 des WebIO
ClientSocket1.Socket.SendText(GET /input3?PW=&) // ließt dem zustand von eingang 3 ein
if ClientSocket1.Socket.ReciveText='input3;ON' // dies bedingung wird erfüllt, wenn das WebIO den Text 'input3;ON' zurückliefert, also eingang3 ein 1-signal hat
then
ClientSocket1.Socket1.SendText(GET /outputaccess0?PW=&Status=OFF&)
// setzt den Ausgang0 des WebIO zurück
end;
nun wird also beim betätigen des start-button(button1) der ausgang 0 gesetzt. nun aber das programm wird ja dann sofort weiter abgearbeitet. und es dauert ja noch, bis das band den sensor betätigt und der eingang3 ein 1-signal erhält.
das förderband würde so nicht mehr zum stehen kommen, weil die eingänge nicht städing abgefragt werden und auch nicht drauf reagiert wird.
liegt ich überhaupt richtig mit der annahme, das eine programm beim starten der .exe einmal ausgeführt wird und wenn dieses beendet ist, geschieht solange nichts mehr, bis ein button oder ein timer eine procedure oder function "startet" ?
kann man irgendwie herrausfinden, wie lange die bearbeitungszeit einer bestimmten procedure ist?
ich hoffe man kann verstehen worauf ich hinnaus möchte und hoffe das mir jemand weiterhelfen kann. danke