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

- Rejestracja:prawie 12 lat
- Ostatnio:około 21 godzin
- Postów:1027
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.

- Rejestracja:około 2 lata
- Ostatnio:około 2 lata
- Postów:2
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.