Timer Time On Delay

0

Cześć, chciałbym zapytać jak zrobić timer TON (Time On Delay) w języku ASCII C?

1

Nie moze być posix? ;-(

time_t  pause_end = time() + sec
while( pause_end > time() );

Koszmarne prawda? ;-)

1

Co to jest TON? Wybacz, twoje pytanie wygląda jak zadane przez początkującego, który założył że skoro termin został mu podany na jakichś zajęciach, to znaczy że jesult uniwersalnie zrozumiany. Z czasem będziesz więcej wiedział czy należy wyjaśniać użyte terminy, czy nie ma takiej potrzeby. Tutaj imo by się to przydało.

0

A co to za dialekt ten "ASCII C" ?

0

Dobra, mam takie zadanie:
Napisać program sterowania automatycznym otwieraniem i zamykaniem drzwi przesuwnych. Otwieraniem drzwi steruje wyjście o nazwie OTWIERANIE, zamykaniem drzwi steruje wyjście o nazwie ZAMYKANIE. Wyłącznik krańcowy otwarcia (KR_O=1) wyłącza OTWIERANIE, wyłącznik krańcowy zamknięcia (KR_Z=1) wyłącza zamykanie. Są dwa detektory ruchu: wewnątrz budynku (CZ_WEWN) i na zewnątrz budynku (CZ_ZEWN). Drzwi muszą pozostać otwarte, dopóki ktokolwiek znajduje się w pobliżu (CZ_WEWN=1 lub CZ_ZEWN=1). Jeśli detektory ruchu przez 20 s nie wykrywają nikogo w pobliżu, to należy drzwi zamknąć.

Ma to być napisane w języku ASCII C, napisany kod kompiluje się w PACSystems C Toolkit i później w PAC Machine Edition można ten kod odpalić. Mój kod wygląda tak, nie mam tej części czasowej, której nie wiem jak zrobić:

#include "PACRXPlc.h" 
#include "stdio.h"
#include "time.h"

// CZ_WEWN (%I00001);	CZ_ZEWN (%I00002);	KR_O (%I00003);	KR_Z (%I00004);	OTWIERANIE (%Q00001);	ZAMYKANIE (%Q00002)

int GefMain(void)
{
	int CZ_WEWN, CZ_ZEWN, KR_O, KR_Z;
	

	CZ_WEWN = BIT_TST_I(1);
	CZ_ZEWN = BIT_TST_I(2);
	KR_O = BIT_TST_I(3);
	KR_Z = BIT_TST_I(4);

	if((CZ_WEWN == 1) | (CZ_ZEWN == 1))	{BIT_SET_Q(1); BIT_CLR_Q(2);}
   // tu ta część z czasowa
	if((CZ_WEWN == 0) & (CZ_ZEWN == 0) & (KR_O ==1) &(odliczanie 20s - nie wiem jak to zrobić))	{BIT_CLR_Q(1); BIT_SET_Q(2);}
 
	if(KR_O == 1)	{BIT_CLR_Q(1);}
	if(KR_Z == 1)	{BIT_CLR_Q(2);}
}

Jeżeli robiłbym to na Ladderze to wstawiam sobie normalnie timer TON, ustawiam czas na 20 sekund i gdy CZ_WEWN=0, CZ_ZEWN=0 i KR_O=1 to po 20 sekundach setuje mi się wyjście Q2.
Znalazłem informacje że jest biblioteka time.h. Przeglądałem "C Programmer's Toolkit for PACSystems User Manual", ale nic konkretnego o timerach nie udało mi się znaleźć.
Jak widzicie za bardzo nie umiem programować w C, ale ten program jakiś trudny nie jest, jak ktoś ma pomysł jak taki timer można zrobić, albo coś podobnego co działałoby podobnie, to będę wdzięczny.

0
  1. ANSI C ?
  2. Czytaj dokumentacje do platformy a nie tylko C bo jak nie wiesz jak Twoja platforma działa to nie masz szans coś napisać

1 użytkowników online, w tym zalogowanych: 0, gości: 1