nonkel_dw
nonkel dw
hallo ik heb dit geprogrameert in proton ide:
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF, PWRTE_ON,LVP_OFF ,MCLRE_OFF
ALL_DIGITAL TRUE
SYMBOL UITGANG = PORTA.1
SYMBOL INGANG = PORTB.0
prog:
WHILE 1=1
IF INGANG = 1 THEN HIGH UITGANG
DELAYMS 15000
WEND
INGANG=0
GOTO prog
END
maar het werkt niet voor wat het moet dienen
even de werking
op de ingang poort B,0 komt de ingang van de plc,
dan zou de uitgang hoog moeten worden poort A,1
deze zou 15 seconden moet opblijven en dan af gaan
de pic kan zich alleen "resetten" als de ingang laag is
(die van de plc komt)
d.w.z dat de pic terug moet wachten voor te reageren tot de ingang terug hoogemaakt word
kan iemand me verder helpen
TRISA
www.picbasic.nl
Zoefje
Druk- en typfouten voorbehouden.
nonkel_dw
nonkel dw
hoe kan ik dit oplossen
ik ben nog niet zo lang met pic bezig
while 0=1
klopt dit dan
[Bericht gewijzigd door nonkel_dw op ]
Zoefje
Druk- en typfouten voorbehouden.
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF, PWRTE_ON,LVP_OFF ,MCLRE_OFF
ALL_DIGITAL TRUE
SYMBOL UITGANG = PORTA.1
SYMBOL INGANG = PORTB.0
WHILE 1=1
IF INGANG = 1 THEN
HIGH UITGANG
DELAYMS 15000
ELSE LOW Uitgang
ENDIF
WEND
END
Ofzo?
Op 27 februari 2007 19:30:37 schreef Zoefje:
Hij blijft in deze lus hangen:WHILE 1=1
IF INGANG = 1 THEN HIGH UITGANG
DELAYMS 15000
WEND
Zover was ik nog niet eens
Maar zonder TRISA zie je nog niks.
dus wel, de TS gebruikt HIGH & LOW, twee 'kludge' commando's.
[Bericht gewijzigd door Henry S. op ]
En zoals Henry al als een stille hint gaf.
Standaard zijn alle pinnen van de 628a
als ingang gedefinieerd. Je zal dus de uitgang
1 op poort A als uitgang moeten zetten.
En zoals henry zei, kan je dat instellen
in het trisA register. In picbasic kan je gewoon
zetten.
output UITGANG
Dit moet je dan plaatsen tussen je symbol
declaraties en je while loop.
nonkel_dw
nonkel dw
dat prog dat jullie me gegeven hebben werkt niet de led blijft altijd branden
de led mag alleen branden als de uitgang hoog is en gaat 15 sec aan en dan uit
dan pas wachten tot de uitgang terug hoog word gemaakt
als deze nu nog moest hoog zijn mag die daar op nog niet reageren
aleen reageren als hij laag geweest is en dan terug hoog is dus reageren
[Bericht gewijzigd door nonkel_dw op ]
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Je moet je vraag beter stellen.
Moet de tijd al gaan lopen als de ingang hoog is of als de puls weer wegvalt?
Want voorgaande voorbeeld programma klopt dan niet.
Deze wacht steeds 15 seconden en kijkt dan pas of de poort hoog is.
Als je dus een puls op ingang zet, kan de PIC net in de 15 seconden routine zitten en mis je de puls.
De DELAYMS moet (waarschijnlijk) pas gaan lopen als de ingang HOOG is, of heb ik het mis?
Hoe meer gegevens = Des te beter het antwoord
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF, PWRTE_ON,LVP_OFF ,MCLRE_OFF
ALL_DIGITAL TRUE
SYMBOL UITGANG = PORTA.1
SYMBOL INGANG = PORTB.0
WHILE 1=1 ' never ending loop
WHILE INGANG = 0 ' wachten op hoog ingang
WEND
HIGH UITGANG ' zet uitgang hoog
DELAYMS 15000 ' wacht 15s
LOW UITGANG ' zet uitgang laag
WHILE INGANG = 1 ' controleer ingang
WEND ' blijf loopen indien ingang = 1
WEND ' never ending loop
END
[Bericht gewijzigd door shortcircuit op ]
Sorry maar je uitleg blijft echt onduidelijk, kan ook aan mij liggen.
De PLC stuurt een puls naar de ingangspin op de microcontroller en dan?
De uitgangspin moet na deze puls 15 seconden lang HOOG worden? en uiteraard na 15 seconde dus weer laag.
Verklaar je nader! Je krijgt voor het bovenstaande zoiets.
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF, PWRTE_ON,LVP_OFF ,MCLRE_OFF
ALL_DIGITAL TRUE
SYMBOL UITGANG = PORTA.1
SYMBOL INGANG = PORTB.0
OUTPUT UITGANG
WHILE 1=1 'Programma loop
WHILE INGANG = 0: WEND 'Wachten op de ingang hoog
HIGH UITGANG 'Uitgang hoog zetten
DELAYMS 15000 '15 seconden wachten
LOW UITGANG 'Uitgang weer laag
WHILE INGANG = 1: WEND 'Wachten op ingang laag
WEND
'Einde programma
END
[Bericht gewijzigd door ReDdiE op ]
nonkel_dw
nonkel dw
ik ga nog een een poging doen 
de plc stuurt een hoog signaal naar de pic
de pic moet als de ingang hoog is de uitgang 15sec hooghouden
als de 15sec om zijn dan moet deze uitgang terug laag worden
dan moet de pic gaan kijken of de uitgang al terug hoog is
maar het kan meer als 5 minuten duren voor waneer het signaal dat van de plc komt terug laag is maar dan mag de pic de uitgang niet terug 15 sec hoog maken
dit is voor een buzzer te sturen die 15 sec moet lawaai maken maar die staat in serie met een signaal lamp
je kan alleen de reset knop op bediening paneel indrukken als de hele installatie stil staat dit kan zo als ik al zij meer als 5 minuten duren maar die buzzer moet de eerste 15 sec lawaai maken en dan zwijgen tot de volgende fout melding binne komt
snappen jullie wat ik bedoel
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Op 27 februari 2007 19:58:55 schreef ReDdiE:
Sorry maar je uitleg blijft echt onduidelijk, kan ook aan mij liggen.
Ligt niet aan jouw.
Stellen vraag duidelijk antwoord beter is.
(En in goed Nederlands hoort daar dus ook bij).
EDIT:
Je laatste poging is al wat beter.
dat laatste programma moet het doen denk ik:
het wacht op een HOOG signaal ingang
dan wordt de uitgang = 1
na 15s terug laag
en wacht het prog op LAAG signaal ingang
en dat in een never ending loop
anders moet je op + flank gaan testen van de ingang, dat gaat ook...
nonkel_dw
nonkel dw
nu nog effe een vraag waarom staat er ; output uitgang
is dat omdat alle pinnen op de 16f628 als ingang zijn ingestelt ?
just daarvoor is die output statement, maar dat had ik een paar post eerder ook al uitgelegd.
en zoals shortcircuit steeds vraagt, stel ik hem ook maar eens: Werkt het al?
nu hoop ik toch dat de uitgang van de plc (24V) getransformeerd is naar 5V voor de pic 
anders zou je picje wel eens opgeblazen kunnen zijn 
[Bericht gewijzigd door shortcircuit op ]
nonkel_dw
nonkel dw
NEE HET WRKT NOG NIET TO MEN GROTE SPIJT
nu heb nog iets geschreven
de werking
ik krijg hoog signaal van de plc dus de ingang word hoog en dan stuurt deze de uitgang hoog
nu blijft de uitgang hoog tot deze reset word met een andere ingang (drk)
ik moet altijd de buzzer kunnen stoppen met de reset knop
de buzzer kan maar terug opspringen als de plc uitgang laag geweest is
en het programma mag pas reset worden als de ingang van de plc terug laag is
klopt deze code dan dit is zonder timer
er zit nog wel en fout in want ik krijg het niet gecomprimeert to hex
iemand hulp
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF, PWRTE_ON,LVP_OFF ,MCLRE_OFF
ALL_DIGITAL true
SYMBOL plc = PORTA.1
SYMBOL drk = PORTA.0
SYMBOL bzer = PORTB.0
OUTPUT bzer
prog:
WHILE 1=1
IF plc = 1 THEN
HIGH bzer
WEND
WHILE 1=1
IF drk=1 THEN
LOW bzer
WEND
WHILE 1=1
IF plc = 0 THEN
GOTO prog
WEND
END
Je hebt "IF" gebruikt, maar het commando "ENDIF" vergeten. Dat staat als het goed is onderaan bij Proton.
nonkel_dw
nonkel dw
nu heb ik denk de fout gevonden
de pic mag pas terug naar zijn prog gaan (goto)programma "prog"
als de plc ingang (porta.1) terug laag is is dit geen ander comando?
die ENDIF moet die overal in staan dus tussen alle while en wend