set_ch¶
set_ch setzt die Daten eines Kanals.
Die Funktion sollte nur innerhalb von Funktionen für den Formelinterpreter
verwendet werden. Die Funktion greift über die globale Variable _fi_ncid
auf
die zum Schreiben geöffnete UniPlot Datendatei zu.
- bool = set_ch(ssChannelName, values)
- bool = set_ch(ssChannelName, values, ssDepChannels)
- bool = set_ch(ssChannelName, values, ssDepChannels, bSIUnits)
Returnwert
bool ist TRUE (1) wenn die Funktion erfolgreich war und FALSE (0) bei Auftreten eines Fehlers.
Parameter
- ssChannelName
ssChannelName ist der Name des Kanals der erzeugt werden soll.
- values
values ist ein Vektor mit den Werten des Kanals.
- ssDepChannels
ssDepChannels ist ein String mit den Namen der abhängigen Kanäle, durch Komma getrennt oder ein leerer String. Falls der String leer ist, werden die Werte
missing_value
im values-Parameter nicht berücksichtigt. Die Funkion ch liefert alsmissing_value
den Wertinfinite
(1.#inf). Ob ein Wertinfinite
ist, kann mit der Funktion finite geprüft werden. Siehe Beispiel.
- bSIUnits
bSIUnits muss TRUE (1) sein, wenn values in SI-Einheiten vorliegt und das
units
-Attribut keine SI-Einheit ist. Es wird dann eine Einheitenrechnung durchgeführt. Falls bSIUnits FALSE (0) ist oder der Parameter nicht angegeben wird, wird keine Einheitenumrechnung durchgeführt.
Beispiel
// Leistung in kW
// M*2*PI*n
// Drehzahl n in 1/min
// Moment m in Nm
def _fi_Power(bInfo)
{
ssChannels = "n_Motor, Md_Motor";
if (bInfo) {
return ["Power"; ..
"kW"; ..
"Leistung"; ..
ssChannels;
"0"];
}
n_Motor = ch("n_Motor");
Md_Motor = ch("Md_Motor");
Power = (n_Motor .* Md_Motor) ./ 9549.3;
set_ch("Power", Power, ssChannels);
}
// Leistung in kW
// M*2*PI*n
// Drehzahl n in 1/s
// Moment m in Nm
def _fi_Power(bInfo)
{
bSIUnits = 1;
ssUnit = "kW";
ssChannels = "n_Motor, Md_Motor";
if (bInfo) {
return ["Power"; ..
ssUnit; ..
"Leistung"; ..
ssChannels;
"1"];
}
n_Motor = ch("n_Motor", "", bSIUnits);
Md_Motor = ch("Md_Motor", "", bSIUnits);
Power = (n_Motor .* Md_Motor) .* (2*PI);
set_ch("Power", Power, ssChannels, bSIUnits);
}
Beispiel für eine Integralberechnung, bei der ungültige Werte auf 0 gesetzt werden:
def _fi_qm(bInfo)
{
ssChannels = "time, m_flow";
if (bInfo) {
return ["qm"; ..
"kg"; ..
"Leistung"; ..
ssChannels;
"1"];
}
rvTime = ch("time");
rvMFlow = ch("m_flow");
idx = find(finite(rvMFlow) == FALSE);
if (idx[1] != 0) {
rvMFlow[idx] = 0;
}
// we ignore the error that the triangle before and after
// the missing values is added to the integral value.
rvQm = integral(rvTime, rvMFlow);
// Third parameter = "": missings will not set set:
// Only the second column is the integral
set_ch("qm", rvQm[;2], "", FALSE);
}
History
Version |
Beschreibung |
---|---|
R2013.11 |
Einheiten-Umrechnung. |
R2012.0 |
Neu dokumentiert. |
5.7 |
Neu. |
Siehe auch
Formelinterpreter 1 - Einführung, ch, get_ncid, OnFormulaStartEval
id-875561