PDA

Просмотр полной версии : Статс оперативных параметров по протоколу OWEN



Avol
07.10.2015, 08:33
ТРМ 202, протокол обмена ОВЕН, библиотека owen_io_lib.dll.
Не нашел понятия статуса в протоколе OWEN. В modbus есть статус регистр, который к примеру может показать ошибки на каналах.
В описании работы по протоколу ОВЕН для оперативных параметров PV (формата float24) в поле "Характеристика" упоминается:

PV* (опер.) B8DF F24 Измеренное значение входной величины или код ошибки: - 0xFD – ошибка на входе - 0xFE – отсутствие связи с АЦП - 0xF0 – вычисленное значение заведомо не верно (ответ при наличии Er.64) Определяется диапазоном измерения датчика
Вопрос: как понять что ошибка?
Когда все нормально сигнал на входах есть, я значения вижу. Пример получения значения


[DllImportAttribute("owen_io.dll", EntryPoint = "ReadFloat24", CallingConvention = CallingConvention.StdCall)]
public static extern int ReadFloat24(int adr, int adr_type, System.IntPtr command, ref float value, int index);
...
IntPtr name = Marshal.StringToCoTaskMemAnsi(textBox1.Text);
float value = 0;
ConnectionError res = (ConnectionError)NativeMethods.ReadFloat24(deviceA ddress, 0, name, ref value, Convert.ToInt32(comboBox1.Text));

Value - значение
Res - код ошибки.

Если с сигналами все в порядке то в Value=значение, Res = Ok(0)
Если нет сигнала то Vulue без изменения, Res = NErr(-104)

В конфигураторе, если нет сигнала, пишется ошибка на входе. Как мне идентифицировать ошибку на входе?

Avol
09.10.2015, 05:13
Насколько я понял, при ошибке на запрос оперативного параметра PV, эту ошибку (0*FD, 0*FE, 0*F0) можно узнать запросив значение параметра PV целочисленной функцией

ConnectionError res = (ConnectionError)NativeMethods.ReadUInt(AdresDevic e, 0, NameParam, ref value, Index);
При этом надо смещать AdresDevice+ (Chanel - 1) в зависимости от канала.