Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Форум

Вы не вошли.

 Поиск | Регистрация | Вход 

#2 Re: Техническая поддержка » Подключение отключенного крейта » 10.11.2015 19:42:56

Я просто отключал крейт в LTR Manager, галочка автоподключения установлена оставалась. Получалось, что был всего один крейт, и тот отключен. Даже просто установить соединение с ltrd уже не получается (например, чтобы запросить список крейтов), видимо и запрос на автоподключение не проходит.
В журнале пишется что-то вроде "попытка работать с незарегистрированным крейтом". Завтра более точное описание добавлю.

#3 Техническая поддержка » Подключение отключенного крейта » 10.11.2015 15:16:11

Иван
Ответов: 5

Здравствуйте! Возник такой вопрос: если во время работы с крейтом пропадает связь (в LTR Manager крейт перейдет в состояние "отключен"), то методом _LTRNative.LTR_ConnectAllAutoIPCrates(ref servTLTR) хочу подключить крейт обратно, однако ничего не выходит, хотя флаг автоподключения установлен (в LTR Manager крейт остается в отключенном состоянии).
Пишу на C#.
IP-адрес сервера указан в структуре верно, выставлен управляющий канал.
Нужно ли сначала установить соединение с сервером (_LTRNative.LTR_OpenEx(ref servTLTR, TIMEOUT))?
Пробовал и так, и так - не выходит.

#4 Re: Техническая поддержка » Измерение вольтажа на 22 модуле » 22.05.2015 09:12:05

Как раз хотелось бы измерить постоянную составляющую в цепи ICP-датчика. Спасибо за разъяснение.

#5 Техническая поддержка » Измерение вольтажа на 22 модуле » 22.05.2015 07:07:47

Иван
Ответов: 3

Добрый день! На 24-м модуле есть такой режим - ICP-тест, который позволяет измерить напряжение без отсечения постоянной составляющей, т.е. мы можем определить, подключен ли датчик, правильно ли он подключен, либо на линии к.з.
Программно на C# модуль можно настроить на такое измерение:

//переключаем модуль в тестовый режим
api24.TestMode = true;
//настраиваем каналы
ltr24api.CHANNEL_MODE channelMode = new ltr24api.CHANNEL_MODE(true, ltr24api.AdcRange.ICP_Range_5, false, true);
api24.ChannelMode[0] = channelMode;
api24.ChannelMode[1] = channelMode;
api24.ChannelMode[2] = channelMode;
api24.ChannelMode[3] = channelMode;

т.е. TestMode - true, ICPMode - true, AC - X: ICP-тест
Возможно ли организовать что-то подобное на 22-м модуле? Из описания функция ltr22api я не понял этого.

#6 Re: Техническая поддержка » LTR_GetListOfIPCrates И C# » 15.05.2015 13:10:07

Спасибо! Путем долгих поисков, проб и ошибок у меня вышло почти то же самое. Возможно кому-то пригодится.

public static unsafe void GetCratesStatus(_LTRNative.TLTR tLTR)
        {
            unsafe
            {
                //максимальное число крейтов
                const uint max_entires = 16;
                //IP-адрес сети (192.168.1.0)
                uint ip_net = 0xC0A80100;
                //маска подсети (255.255.255.0)
                uint ip_mask = 0xFFFFFF00;
                //количество найденных крейтов, соответствующих сетевым настройкам
                uint entires_found;
                //количество записей в массиве infoArray (возвращаемое процедурой)
                uint entires_returned;
                //выделение памяти
                int structSize = Marshal.SizeOf(typeof(_LTRNative.TIPCRATE_ENTRY)); 
                IntPtr info_array = Marshal.AllocHGlobal(structSize);
                Marshal.StructureToPtr(typeof(_LTRNative.TIPCRATE_ENTRY), info_array, true);
                //запрашиваем список крейтов
                _LTRNative.LTR_GetListOfIPCrates(ref tLTR, max_entires, ip_net, ip_mask, out entires_found, out entires_returned, info_array);
                //массив для сохранения списка 
                _LTRNative.TIPCRATE_ENTRY[] cratesArray = new _LTRNative.TIPCRATE_ENTRY[entires_found];
                //заполняем массив
                for (int index = 0; index < entires_found; index++)
                    cratesArray[index] = (index == 0) ? (_LTRNative.TIPCRATE_ENTRY)Marshal.PtrToStructure(info_array, typeof(_LTRNative.TIPCRATE_ENTRY))
                        : (_LTRNative.TIPCRATE_ENTRY)Marshal.PtrToStructure(info_array + structSize, typeof(_LTRNative.TIPCRATE_ENTRY));
                //освобождаем память
                Marshal.FreeHGlobal(info_array);
            }
        }

#7 Техническая поддержка » LTR_GetListOfIPCrates И C# » 15.05.2015 09:48:30

Иван
Ответов: 2

Добрый день! Подскажите, пожалуйста, как правильно реализовать функцию LTR_GetListOfIPCrates.

//максимальное число крейтов
const uint max_entires = 16;
//IP-адрес сети (192.168.1.0)
uint ip_net = 0xC0A80100;
//маска подсети (255.255.255.0)
uint ip_mask = 0xFFFFFF00;
//количество найденных крейтов, соответствующих сетевым настройкам
uint entires_found;
//количество записей в массиве infoArray (возвращаемое процедурой)
uint entires_returned;
//массив для сохранения списка
_LTRNative.TIPCRATE_ENTRY[] cratesArray = new _LTRNative.TIPCRATE_ENTRY[max_entires];
//указатель на массив
IntPtr info_array = new IntPtr();
_LTRNative.LTR_GetListOfIPCrates(ref tLTR, max_entires, ip_net, ip_mask, out entires_found, out entires_returned, info_array);

Не многу понять, как связать cratesArray и info_array, пытался взять адрес cratesArray и передать его в указатель, но C# не позволяет такого сделать, поэтому просто проинициализировал как new IntPtr(), в результате запуска entires_found = 4, out entires_returned = 0 и info_array = 0.

#8 Re: Техническая поддержка » Количество слотов » 13.05.2015 09:51:45

Спасибо, действительно, видел этот документ. А могу ли я программно получить число 1,2 и т.д.? GetCrateInfo вроде такой информации не даёт.

#9 Техническая поддержка » Количество слотов » 13.05.2015 08:13:06

Иван
Ответов: 5

Добрый день, только начинаю работать с системой LTR. Не могу ни где найти информацию - как определить количество слотов для модулей в крейте?