ЖУРНАЛ «СТА» №3/2007
TYPE aim726_outputs : STRUCT vout0: REAL; vout1: REAL; END_STRUCT END_TYPE (* Входы AIM728 *) TYPE AIM728_inputs : STRUCT diagnostics: BYTE; vin0: DINT; vin1: DINT; vin2: DINT; vin3: DINT; END_STRUCT END_TYPE (* Значения напряжения на входах AIM728 *) TYPE aim728_outputs : STRUCT vout0: REAL; vout1: REAL; vout2: REAL; vout3: REAL; END_STRUCT END_TYPE Кроме того, пусть в проект добавлены два типа функцио- нальных блока, предназначенных для преобразования ре- зультатов аналогоцифрового преобразования сигналов на каналах модулей: (* Блок преобразования показаний на каналах AIM726 *) FUNCTION_BLOCK AIM726_STIN VAR_INPUT inputs: AIM726_inputs; END_VAR VAR_OUTPUT (* Признак достоверности преобразования *) valid: BOOL; outputs: aim726_outputs; END_VAR (* Если значение на канале диагностики не равно 16#FF, то все в порядке *) valid := inputs.diagnostics <> 16#FF; IF valid THEN outputs.vout0 := DWORD_TO_REAL(inputs.vin0) * 4.7683729E006; outputs.vout1 := DWORD_TO_REAL(inputs.vin1) * 4.7683729E006; END_IF END_FUNCTION_BLOCK (* Блок преобразования показаний на каналах AIM728 *) FUNCTION_BLOCK AIM728_STIN VAR_INPUT inputs: AIM728_inputs; END_VAR VAR_OUTPUT (* Признак достоверности преобразования *) valid: BOOL; outputs: aim728_outputs; END_VAR (* Если значение на канале диагностики не равно 16#FF, то все в порядке *) valid := inputs.diagnostics <> 16#FF; IF valid THEN outputs.vout0 := DINT_TO_REAL(inputs.vin0) * 2.3841861E006; outputs.vout1 := DINT_TO_REAL(inputs.vin1) * 2.3841861E006; outputs.vout2 := DINT_TO_REAL(inputs.vin2) * 2.3841861E006; outputs.vout3 := DINT_TO_REAL(inputs.vin3) * 2.3841861E006; END_IF END_FUNCTION_BLOCK АППА РАТ НЫ Е С Р Е Д С Т В А / П Р ОМЫШЛ Е ННЫ Е КОН Т Р ОЛЛ Е Р Ы 73 СТА 3/2007 www.cta.ru Реклама
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy