Användning av givare Avläsning av analoga mätvärden (telefon/klartext) Text Insert-funktionen
INNEHÅLLSFÖRTECKNING 1. ALLMÄN BESKRIVNING...3 2. EXEMPELTYPER...4 2.1 BESTÄM LARMNIVÅ FÖR EN ANALOG GIVARE...4 2.2 TYPER AV GIVARE SOM KAN KOPPLAS TILL INGÅNGARNA...6 2.3 ATT RAPPORTERA INGÅNGSSTATUS SOM SMS, TILL MINICALL TEXT ELLER SOM TALAT MEDDELANDE I TELEFONEN....7 2.4 TEXT-INSERT FUNKTIONEN...8 2.5 GÖR BYTEVÄRDENA BEGRIPLIGA...9 3. ANVÄNDNINGSOMRÅDEN...13 2
1. Allmän beskrivning Något av det allra viktigaste och mest användbara att lära sig hos en RobofonT1 är hur man hanterar analoga värden på ingångarna. Alla åtta ingångarna på OEM-kortet är analoga, vilket öppnar en hel värld av möjligheter. Som ingångarna är konstruerade och genom praktisk integration av hård- och mjukvara finns det redan färdigt möjligheten att använda sig av nästan alla olika typer av givare. Dessutom kan det sitta olika givare på varje ingång och varje ingång kan fungera separat. Man kan alltså tänka sig att det sitter en T1:a i ett växthus som har olika givare inkopplade som känner av luftfuktighet, temperatur, CO 2 -halt och ljusstyrka. Samtidigt kan larmsändaren hantera detektorer för rörelse och rök och fungera som en styrcentral, inbrott- och brandvarnare allt i ett. På motsvarande sätt kan i stort sett varje tänkbar fysikalisk och kemisk storhet mätas och användas, genom på marknaden befintliga givare. Hur fungerar det då rent praktiskt med de analoga givarna? I följande avsnitt kommer små programmeringsexempel visa hur analoga värden kan användas för statusmeddelanden, styrfunktioner och larmgränser. För tydlighetens skull har nummer lagts till framför programraderna, men de ska inte vara med i programmet. 3
2. Exempeltyper De olika exempel som kommer att visas behandlar: 1) Hur man ställer in en larmnivå för en analog givare 2) Vilka typer av givare kan kopplas till ingångarna 3) Hur status för en givare kan rapporteras via SMS, MiniCall Text eller Telefon. 4) Text-Insert funktionen 5) Hur omvandling av bytevärden går till så att bytevärdena blir begripliga 2.1 Bestäm larmnivå för en analog givare En analog givare (säg temperatur) är kopplad till ingång 1. Den är av resistiv typ och av NTC-karaktär (Negativ Temperatur Koefficient minskande motstånd vid sjunkande temperatur). Det som behövs från tillverkaren är en tabell över vilket motståndsvärde som motsvarar den temperatur vi är intresserade av. En exempeltabell skulle kunna visa: Vid 75 grader är vår applikation överhettad och då ska kylning slå till. För 75 grader är motståndet i NTC-givaren 161,2 ohm. Detta ska bli vår larmgräns. 4
Nu är det emellertid så att RobofonT1:an förstår ju bara dataspråk och vi ska omvandla motståndsvärdet till ett byte-värde så att givaren och T1:an pratar samma språk. Detta görs genom en formel: Avläst värde (byte-värde) = 255*R / (R+2200) Längst ute till höger visas byte-värdet. Detta byte-värde blir larmgränsen. = 17 Ett litet program ser då ut som följer: 1 :START ;Skapa en programplats START 2 IF IN01 > 17 GOTO START ;Så länge ingång 1 har ett bytevärde mindre än 17 (ca 75 grader) kommer ingenting att hända 3 DIAL T01 K01 ;Ingångsvärdet har blivit mindre än 17 och ett larm rings iväg 4 LET OUT03 = 1 ;En kylande fläkt dras igång för att motverka överhettningen. 5 :VÄNTA 6 IF IN01 < 20 GOTO VÄNTA ;Vänta till ingången har återgått. Att vi lagt 20 och inte 17 beror på att det ska vara en hysteres (ett intervall) som förhindrar en massa händelser precis vid gränsområdet. 7 LET OUT03 = 0 ;Nu kan vi slå av fläkten igen 8 DIAL T01 K02 ;Ring och berätta att temperaturen är nere på acceptabel nivå. Däremot kanske inte felet är åtgärdat. 5
2.2 Typer av givare som kan kopplas till ingångarna Ingångarna kan ta nästan alla typer av givare. Slutande/brytande kontakter, balanserade slingor, dubbelbalanserade slingor, men framför allt det som det här häftet handlar om analoga givare. Det finns tre typer av analoga givare som det finns stöd för Resistiva givare 0 till 10 kohm Strömgivare 4-20 ma Spänningsgivare 0-5 V Dessa täcker in möjligheterna att mäta i stort sett varje tänkbar storhet som går att mäta. De följer precis samma princip för larmgräns som exemplet med resistiva givaren (NTC) ovan. Skillnaden är omvandlingen till bytevärden. De olika givartyperna har olika omvandlingsfunktioner En resistitv givare ger ett bytevärde som motsvarar: 255*R / (2200+R) En strömgivare ger ett bytevärde som motsvarar: 255*220*I / 5 En spänningsgivare ger ett värde som motsvarar: 255*U / 5 6
2.3 Att rapportera ingångsstatus som SMS, till MiniCall Text eller som talat meddelande i telefonen. Scenario: I en datorhall brukar det vara som varmast runt klockan tre på eftermiddagen. Man har då bestämt att klockan halv fyra ska temperaturen vara på en godkänd nivå som är en bit under gränsvärdet. Larmsändaren programmeras då att varje dag, vid halv fyra, ringa iväg ett statusbesked på ingång 2 där tempgivaren sitter. Observera att realtidsklockan behöver ställas och hur man gör det beskrivs i manualen eller i häftet Hantera tid. 1 :START ;Definiera programplatsen START 2 IF HOUR!= 15 GOTO START ;Så länge timmen inte är 15 går den tillbaka till START och går alltså inte vidare 3 IF MINUTE!= 0 GOTO START ;Då klockan blivit 15 kontrolleras om minuten är 0 och är den det så går den vidare i programmet. 4 5 DIAL T01 K01 IN02 Ring iväg ett meddelande till telefonnumret som ligger på plats 1, skicka kodmall 1 och inkludera värdet på ingång 2. För att detta ska göras ska det stå %3 på kodmall 1. 6 :VÄNTA 7 IF MINUTE = 0 GOTO VÄNTA ;Vänta här så länge minuten är noll för T1:an inte ska ringa fler gånger. 8 GOTO START På det här sättet kan ett statusbesked ringas iväg. Telefonnumret bestämmer vilken mottagartyp det är. 7
SAY-kommandot som läser upp ingångsvärdet kan endast användas då du fjärrstyr en T1:a från knapptelefon. Med detta kommando finns det möjlighet att få värdet på en ingång uppläst i telefonen. Följande program läser upp ett ingångsvärde. :LÄS IF CMD!= 123 GOTO LÄS SAY K02 IN02 LET CMD = 0 GOTO LÄS ;Så länge kommandovariabeln inte är 123 ska ingenting hända ;Om man matar in 123 på knapptelefonen läses kodmall 2 upp (med ingångsvärde 2) ;Glöm inte att nollställa kommandovariabeln 2.4 Text-Insert funktionen I kodmallen finns det möjlighet att ha med variabel information. Exempel på detta är mätvärden, räknare eller dylikt. Kontrolltecken kan infogas med \ (backslash) följt av tecknet i hexadecimal form. Exempel: \0D = radmatning (0Dh = 13 decimalt) Variabler infogas med % (procent), följt av ett formatteringstecken. Se manual för komplett förteckning. Exempel: Kodmall 4, K04 = Ingång 4 har ingångsvärdet %3 Om man då har ett kommando i programmet som är DIAL T01 K04 IN04 Kommer programmet att ringa telefon#1 och med hjälp av kodmall#4 infoga värdet på ingång 4. På samma sätt kan man infoga %2 - två siffror %3 - tre siffror %4 - fyra siffror %A-D - omräkningstabeller (se mer om detta i följande avsnitt) Dessa kommandon kan hämta fasta värden - t.ex. 32, 55, 33, variabler - G01, S02, P10, CMD, Ingångsvärden - IN05, 8
2.5 Gör bytevärdena begripliga Det kan i många fall vara praktiskt att få skickat till sig hur många larm som har skickats, hur många pulser som tagits emot till T1:an eller att få reda på status på en ingång. Problemet med det senare är att ett bytevärde inte ger samma information som om man istället skulle få reda på att det är 39,6% kvar i tanken eller att det är 27,2 grader i bassängen. Men även den informationen går att få med några smarta omräkningstabeller som ligger färdiga i programmet. Det finns fyra stycken tabeller, A till D. Dessa kan individuellt behandla olika givartyper alternativt olika områden för samma givare. Under kodmallar -> omräkning ligger tabellerna. Normalt sett så räknar de om en spänningsgivares ingångsvärden till bytevärden som kan användas. Bytevärdet 0 motsvarar 0,00 V och bytevärdet 255 motsvarar 5,00 V. Om en temperaturgivare t.ex. skulle visa 0 grader vid 0 V och 255 grader vid 5 V skulle varje detekterbar stegökning i spänning motsvara en grad. Nu är det ju inte alltid så enkelt, men för att kunna omvandla vilken givares värden som helst krävs tre steg: 9
1) Att ta reda på vilket arbetsområde som är intressant för att approximera att givaren arbetar linjärt inom detta intervall 2) Att sätta in värden i den formel som motsvarar den aktuella givaren (se Typer av givare som kan kopplas till ingångarna) och plotta upp en kurva. 3) Mata in de max- respektive minvärden som blir aktuella. Detta kan verka aningen krångligt, men efter att ha gjort det en gång så kommer det kännas ganska naturligt. Exempel: Här är bytevärden plottade mot de temperaturer som de motsvarar. Man kan se att det inte följer en linjär kurva, så en linjärapproximering inom ett arbetsintervall är nödvändig. 10
Det vi har gjort här är att vi har funnit ett lämpligt arbetsintervall och dragit en tangent till kurvan för att hitta max- respektive minvärdena (bytevärden för 0 resp. 255). I det här fallet motsvarar bytevärde 0 : 45,0 och bytevärde 255 : -45,0 I ProgT1 skulle det ge följande graf 11
Det skulle ge en graf som ser ut så här, där bytevärden ligger på x-axeln och våra temperaturer på y-axeln: Med detta i baggaget kan vi nu lägga in en Text-Insert-funktion i kodmallen som ser ut som t.ex. Här i rummet är det just nu %B grader. Detta anger att omräkningstabell B ska användas för att hämta värde från en ingång. I programmet anger vi vilken ingång som ska infoga värdet. 1 DIAL T01 K04 IN04 ;Ingång 4 omvandlas enligt omräkningstabell B. 12
3. Användningsområden RobofonT1:ans sätt att hantera analoga mätgivare är en av anledningarna till att T1:an är så enormt flexibel. Det finns nästan inga gränser för vilka områden som skulle kunna täckas med hjälp av olika givare. Nu när du har en liten känsla för hur de analoga givarna beter sig och hur de kan användas tillsammans med larmsändaren, är det fritt fram att hitta på applikationer där de används. Exempel på områden är; Elkraft PH Effekt/energi Spänning Ström Vattenlösningar Konduktivitet Kritiska substanser Känsliga preparat och substanser som övervakas. Halter i bassänger. Temperatur Yttemperaturgivare Insticksgivare Luftgivare T.ex. frysvakter för kontroll av livsmedel (förvaring och transport) och även anläggningar för indsutriell, medicinsk och annan kommersiell förvaring Tryck Absoluttryck/differenstryck VVS T.ex. luftflöden. I mindre system skulle man kunna optimera ventilationen genom att reglera tryck. Flöden, fukt, gasanlyser, ljus, mekanik (acceleration, vibration, läge, varvtal ) 13