.. highlightlang:: us .. index:: set_ch .. _set_ch: set_ch ====== .. us.tag set_ch GERMAN formula New570 Changed5400 Changed5511 :ref:`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. .. function:: bool = set_ch(ssChannelName, values) bool = set_ch(ssChannelName, values, ssDepChannels) bool = set_ch(ssChannelName, values, ssDepChannels, bSIUnits) .. us.return **Returnwert** *bool* ist TRUE (1) wenn die Funktion erfolgreich war und FALSE (0) bei Auftreten eines Fehlers. .. us.params **Parameter** .. uparam:: ssChannelName *ssChannelName* ist der Name des Kanals der erzeugt werden soll. .. uparam:: values *values* ist ein Vektor mit den Werten des Kanals. .. uparam:: 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 :ref:`ch` liefert als ``missing_value`` den Wert ``infinite`` (1.#inf). Ob ein Wert ``infinite`` ist, kann mit der Funktion :ref:`finite` geprüft werden. Siehe Beispiel. .. uparam:: 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. .. us.example **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); } .. us.history **History** .. list-table:: :header-rows: 1 * - Version - Beschreibung * - R2013.11 - Einheiten-Umrechnung. * - R2012.0 - Neu dokumentiert. * - 5.7 - Neu. .. seealso:: :ref:`formelinterpreter-1---einfuhrung`, :ref:`ch`, :ref:`get_ncid`, :ref:`onformulastarteval` :sub:`id-875561`