DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Textkanal mitteln

Hallo,
 
ich habe ein numerischer und ein Text Kanal
numerischer Kanal hat verschiedene Werte
Text Kanal mit text
 
alle 3 Zeilen vom numerischen Kanal sollen gemittelt werden, die zeilen müssen auch im textkanal gemittel werden. Da sie aber texte sind, können die nicht gemittelt werden.
 
Kanal1    Kanal2                                                                         Kanal1                Kanal2
15,21       ja                                                                                  15,10                   ja
15,11       ja                                                                                  16,28                   nein
15,01       ja                                                                                  12,52                   vielleicht 
16,25       nein                  Ziel ist folgende Ausgabe      
16,35       nein
16,25       nein
12,50       vielleicht
12,53       vielleicht
12,53       vielleicht
 
Wie kann ich das realisieren? DANKE!
0 Kudos
Message 1 of 5
(3,783 Views)

Hallo alghouz,

ein Ansatz wäre sich einen Steuerkanal zu generieren in Abhängigkeit des Textkanals, d. h. für jeden verschieden Text eine Zahl zuzuweisen, z. B. ja = 1, nein = -1, vielleicht = 0. Diesen Steuerkanal kann man dann mitteln (und runden) und dem Ergebnis wieder den Text zu weisen.

Bei mehr als drei Text-Zuständen macht es vielleicht Sinn eine Matrix (über ein Array oder über Kanalbezug) für die versch. Zustände zu erstellen.

Oder wolltest Du ein fertiges Script?

 

greets Andreas

Volkswagen AG
Wolfsburg - Germany
0 Kudos
Message 2 of 5
(3,771 Views)
Hallo,

wie könnte man jede dritte Zeile von dem Textkanal angezeigt bekommen?

gruß,

alghouz
0 Kudos
Message 3 of 5
(3,760 Views)

Hallo

Du kannst mit CHT auf einen Textkanal zugreifen. Folgendes Script löst deine Aufgabe (vorrausgesetzt, die Anzahl der Werte im Kanal ist durch 3 teilbar)

dim iChnLenght,iChannelNo1,iChannelNo2,iChannelNo3,iChannelNo4, iLoop
iChnLenght = ChnPropGet("Channel1", "length")           ' in older versions use ChnLength
Call ChnAlloc("Channel3", int(iChnLenght/3), 1, DataTypeFloat64)      'Allocate channel Channel3
Call ChnAlloc("Channel4", int(iChnLenght/3), 1, DataTypeString)      'Allocate channel Channel4
iChannelNo1 = CNo ("/Channel1")                         'Calculate channel number input
iChannelNo2 = CNo ("/Channel2")                         'Calculate channel number input (text)
iChannelNo3 = CNo ("/Channel3")                         'Calculate channel number
iChannelNo4 = CNo ("/Channel4")                         'Calculate channel number
For iLoop = 1 to iChnLenght Step 3   ' in old version use ChnLength
  chd((iLoop+2)/3,iChannelNo3)=(CHDX(iLoop,iChannelNo1)+CHDX(iLoop+1,iChannelNo1)+CHDX(iLoop+2,iChannelNo1))/3
  chT((iLoop+2)/3,iChannelNo4)=CHT(iLoop,iChannelNo2)
Next

Ich hoffe das hilft

Winfried

0 Kudos
Message 4 of 5
(3,753 Views)
Es hat super geklappt danke.

kann man auch mit chd auf Zeit oder Datum Kanäle zugreifen?

wie kann ich das gleiche erreichen, wenn ich mehrere Kanäle habe.
Es soll automatische durch die Kanäle gehen, mitteln und abspeichern.

ich habe es mit einer schleife versucht, aber hat nicht funktioniert.


Call ChnAlloc(ChnName("[3]/[" & s & "]") = ChnName(CNoXGet(OrigGroup, s)) & "_Mittel", 34, 1, DataTypeString)

chd(((iloop+2)/3),cno("[3]/[" & s & "]"))=(( CHDx(iloop,cno("[2]/[" & j & "]"))+ CHDx((iloop+1),cno("[2]/[" & j & "]"))+ CHDx((iloop+2),cno("[2]/[" & j & "]")) )/3)
 

0 Kudos
Message 5 of 5
(3,734 Views)