Sida 1 av 1
Någon Labview-guru? Hur svårt är det här?
Postat: 24 oktober 2007, 20:00:39
av miklon
Jag behöver skriva ett program som tänder och släcker lampor enligt vissa tidsintervall, tanken är att man t.ex. anger att lampan ska vara tänd i två timmar, därefter släckt i tre timmar, tänd igen i två timmar osv. Det handlar om ca 8 lampor som ska styras individuellt.
Jag kan inte Labview, jag har viss koll på hur det fungerar rent översiktligt, men inte detaljerna. Hur svårt är det att skapa ovan nämnda tillämpning? Jag har grundläggande programmeringskunskaper när det gäller strukturer osv.
Det är tänkt att styrningen ska ske med ett I/O-kort med 16 kanaler åt vardera hållet, drivrutiner för Labview ska finnas.
Postat: 24 oktober 2007, 20:45:05
av bengt-re
Jag kör int Labview, men i factory express (
http://www.azeotech.com/daqexpress.php ) är det sketenkelt i... Labview är int eså mycket sämre så borde gå bra där också.
Postat: 25 oktober 2007, 09:38:33
av Jespiir
Hej miklon,
Det bör inte vara några problem alls att lösa detta med LabVIEW.
Hur mycket tid det kommer att ta i anspråk beror på två saker:
1. Hur bra (enkla) drivrutiner du får med I/O kortet du tänker använda.
2. Hur snyggt och smidigt interface användaren skall ha.
Postat: 25 oktober 2007, 12:35:16
av miklon
Jag har ändrat mig och kommer köra med ett DAQ från NI:
http://sine.ni.com/nips/cds/view/p/lang/en/nid/10705
Bör väl fungera bra antar jag eftersom det är NI:s egna grejer.
Postat: 25 oktober 2007, 12:55:20
av Jespiir
Mycket riktigt så fungerar NIs mjukvara bäst med NIs hårdvara

Vore konstigt annars.
Det är väldigt simpelt att köra med NIs egna grejer... allting finns redan färdigt i LV.
En fråga bara: kommer du att använda mer funktioner på DAQ kortet? Annars är det ju lite onödigt dyrt för 8 I/O...
Postat: 25 oktober 2007, 13:30:24
av miklon
Det kommer säkert bli mer funktioner senare, just nu handlar det mest om att det fanns i huset.
Postat: 25 oktober 2007, 14:03:39
av Jespiir
Då spelar det ju ingen roll vad det kostade!
Bara att koda på med andra ord.
Postat: 25 oktober 2007, 14:55:36
av miklon
Nu har jag satt igång och det går väl sådär än så länge. Just nu koncentrerar jag mig mest på att få ut en signal, så tar vi timingbiten senare. Jag kom ungefär så långt att jag satt med huvudet mellan knäna och hyperventilerade, men sedan hittade jag som tur var ett exempel som gör ungefär det jag vill (skickar ut en kontinuerlig likspänning på en av utgångarna), så nu känns det lite bättre.

Postat: 27 oktober 2007, 16:01:28
av miklon
Nu har jag kommit igång skapligt, men att få till timingen på ett bra sätt visade sig svårare än jag trodde.
Vad jag vill göra är ju alltså att skicka ut en True-signal en viss tid, därefter en False-signal en viss tid och så om igen. Dessutom vill jag kunna stoppa programmet när jag vill och gå över till ett manuellt kontrolläge utan att behöva vänta på att timerfunktionen ska bli klar med någon Wait-sats.
Vad är enklaste sättet att göra det på? Jag har testat lite olika varianter med For-loopar och olika Case osv, men får inte riktigt till det. Finns det något bra grundrecept, jag antar att scenariot är rätt vanligt?
I det program som har fungerat bäst hittills så kör jag med For-loop från 0-1 som innehåller en Wait-funktion, som hämtar tiden från en array. Det fungerar väl sådär, visserligen så hoppar den igång och växlar mellan True och False, men Wait-funktionen låser ju upp hela programmet, så jag kan t.ex. inte avbryta det inifrån programmet direkt, då måste jag vänta på att den pågående iterationen körs klart.
Det känns som att jag är lite fel ute, det måste finnas nåt enklare sätt att göra det på?
Postat: 27 oktober 2007, 16:14:49
av Johan.o
Jag kan inte Labview sådär jättebra, håller på att lära mig det.
Men kan du inte använda någon av de färdiga time-funktionerna, (nu tittar
jag i en gammal bok) så ligger det under Time & Dialog.
Då kan du ju hela tiden jämföra aktuell tid med den framräknande tiden då lampan ska släckas eller tändas. För att sedan tända/släcka när dom är lika. Om du lägger detta i en while-loop så kan du koppla en stopknapp till 'villkorsindikatorn', om du vill stoppa allt.
Sedan kan du ju ha inmatning och styra logiska funktioner innuti loopen, för
att ändra tider, eller för att koppla om till tvångs-styrning av utgångarna.
Postat: 27 oktober 2007, 20:22:29
av miklon
Ja, jag antar att det är en sådan lösning man får titta på, jag hade funderat lite åt det hållet, men det är alltid lättare när någon annan konkretiserar lite. Tack för tipset.
Postat: 27 oktober 2007, 22:09:53
av Stinrew
Några frågor:
Vilken LabVIEW-version kör du?
Stöder I/O-kortet DAQmx?
Ska samtliga 8 kanaler vara antingen i aktivt eller manuellt läge, eller ska 1 kanal kunna styras manuellt medan resterande 7 går på automatik?
Vilken typ av klocka använder du dig av, wait eller systemklockan?
Är det olika intervall till alla lampor, typ som för att simulera mänsklig aktivitet i ett hus där alla egentligen åkt på semester?
Postat: 28 oktober 2007, 06:53:00
av miklon
Labview 8.5
Kortet är ett sånt här, jag tror det stödjer DAQmx:
http://sine.ni.com/nips/cds/view/p/lang/en/nid/10705
Om det går att lösa så är det en fördel om det går att styra en lampa manuellt och köra resten på automatik, men det är inget absolut krav.
Jag har kört med Wait-funktionen.
Det bör gå att ställa in olika intervall för varje lampa.
Postat: 28 oktober 2007, 10:53:49
av Stinrew
Jo, det stöder DAQmx(jag tror att alla 16-bitars kort stöds av det). Du är alltså bara intresserad av att slå på och av lamporna med exakta intervall, dygnstiden har inget direkt med det här att göra!?? Jag tror att jag hade gjort det här med 8 parallella while-loopar. Har du RT(real-time) installerat?
Postat: 28 oktober 2007, 18:00:35
av miklon
Ja, i det här läget handlar det om av och på med vissa intervall, de intervallen kommer vara i timmar eller möjligen minuter, så det finns inga krav på någon exakt noggrannhet.
Jag vet inte om jag har RT installerat, jag får kolla det när jag kommer till jobbet imorgon.
Hur tänker du dig med While-looparna? Man kan ju ha som run-villkor att köra while-looparna så länge inte tiden är uppfylld, men hur får jag det att gå en viss tid innan loopen hoppar igång igen sen (dvs off-tiden)?
Edit: Hur kollar jag om jag har RT installerat?