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


ltrModulesNet(1.22) - функции управления LTRServer

Вы не вошли.

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

Александр. СПб.
31.01.2011 20:22:37
#1

Гость

ltrModulesNet(1.22) - функции управления LTRServer

Добрый день, на 4 LTR-8-EU реализуем сбор и управлние, используем платы LTR43, LTR41, LTR42, LTR11, LTR114, подключение по Ethernet.
Основное средство разоработки LabVIEW 2010 соответственно используем библиотеку ltrModulesNet. Библиотеки(ltrdll_1_22), LTRserver(1.5.3.0) - последних версий, скачаны с сайта.
Примеры работают, но с некоторыми вопросами.

1) Не могу найти в библиотеке функции для управления LTRServer,перечисленные ниже. Может я невнимателен. Было бы сильно впомощь, если вы сможете выслать пример.
ltrapi.pdf -> 4.3.2.1. Список крейтов, подключенных к серверу: INT LTR _GetCrates(TLTR *ltr, BYTE *csn)
ltrapi.pdf -> 4.3.2.2. Список модулей крейта: INT LTR_GetCrateModules(TLTR *ltr, WORD *mid)
ltrapi.pdf -> 4.3.4.1. Преобразование кода ошибки в текстовое сообщение: LPCSTR LTR_GetErrorString(INT error)
ltrapi.pdf -> 4.3.5.4. Получение списка IP-крейтов: INT LTR_GetListOfIPCrates(TLTR *ltr, DWORD max_entries, DWORD
                            ip_net, DWORD ip_mask, DWORD *entries_found, DWORD
                            *entries_returned, TIPCRATE_ENTRY *info_array)
ltrapi.pdf -> 4.3.5.16.Перезапуск LTR-сервера: INT LTR_ServerRestart(TLTR *ltr)
ltrapi.pdf -> 4.3.5.18.Чтение номера версии LTR-сервера: INT LTR_GetServerVersion(TLTR *ltr, DWORD *version)

2) Получение данных от модуля LTR11: INT LTR_Recv(PTLTR43 hnd, DWORD *data, DWORD *tmark, DWORD size, DWORD timeout) - хочется получать с синхрометками, но реализации функции с метками нет в библиотеке (пример работы c LTR11 на LabVIEW). Что посовертеете?
3) Все остальные используемые модули имеют возможность получать синхрометки. Если не прав, то поправте.

Спасибо.

31.01.2011 21:05:52
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: ltrModulesNet(1.22) - функции управления LTRServer

Александр. Вообще, процедура получения синхрометок от типа LTR-модуля не зависит. Принципиально, приём синхрометок можно взять из примера работы с любым LTR-модулем.

Александр. СПб.
01.02.2011 13:15:29
#3

Гость

Re: ltrModulesNet(1.22) - функции управления LTRServer

Александр. Согласен, но тогда возникает вопрос, как в LabVIEW вызвать функцию LTR_Recv(...) с необходимым числом параметров, её просто нет в списке выпадающего меню выбора элемента используемой библиотеки. Функция которая там присутствует не содержит необходимого параметра. (Во всех отальных примерах есть две реализации данной функции, а именно в примере работы  c LTR11 только одна реализация). Так же в силе остаётся вопрос о использовании функций управления LTRServer. Если не сложно, то идеальным вариантом был бы пример с метками от LTR11 и примером управления LTRServer. Спасибо.

01.02.2011 13:47:36
#4

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,379

Re: ltrModulesNet(1.22) - функции управления LTRServer

К сожалению не все функции ltrapi реализованы в библиотеке ltrModulesNet, через которую работает LabView. В частности Recv для большинства модулей сделан без синхрометок. С синхрометками уже решалась подобная проблему для LTR-212 (http://www.lcard.ru/forumthreads/9452). Во второй половине дня займусь добавлением работы с синхрометками для LTR11 и других модулей.

Насчет перечисленных Вами функций управления сервером – тоже посмотрю, возможно, их тоже нет, тогда тоже добавлю в самое ближайшее время.

Хотелось бы так же узнать, кто будет эти синхрометки генерировать – крейт EU или LTR4X. В первом случае тоже вышлю Вам пример.

Александр. СПб.
01.02.2011 14:24:29
#5

Гость

Re: ltrModulesNet(1.22) - функции управления LTRServer

Алексей, спасибо за столь оперативную реакцию. Вы подтвердили мои ожидания, что в ltrModulesNet реализованы нен все описанные функции. Необходимость управление сервером возникла, т.к. крейтов несколько и они забиты разными модулями. Разрабатываемая система динамеческая, т.е. в процессе использования могут подключаться и отключаться различные модули или крейт в целом. Отсюда и необходимость реализовать  управление программно. По поводу синхронизации вы задали правильный вопрос. Необходимо засинхронизировать все 4 крейта. Идея такова: каждый крейт генерирует свои синхрометки, одна плата LTR4x будет переодически менять свой выход и в каждом крейте этот ваход будет задействован на вход LTR11, состояние которого можно будет получить с синхрометкой. После программно внести нужные поправки по синхронизации (решение в лоб). Если есть более правильное решение (LTR114 используется с датчиком температур), то опять же перенял бы его. Спасибо.

Александр. СПб.
01.02.2011 14:28:13
#6

Гость

Re: ltrModulesNet(1.22) - функции управления LTRServer

Ветку форума ((http://www.lcard.ru/forumthreads/9452)) прочитал ещё раньше. Что-то подчерпнул.

01.02.2011 14:56:33
#7

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: ltrModulesNet(1.22) - функции управления LTRServer

Александр. Ваша идея синхронизации непонятна. Попробуйте сформулировать яснее...Желательно общее описание задачи с указанием требуемой точности синхронизации по времени.
Обычно для синхронизации нескольких крейтов модули LTR4x в разных крейтах соединяют по каналу синхронизации, в одном крейте назначают LTR4x ведущим, который транслирует синхросигнал остальным  ведомым LTR4x.

02.02.2011 12:42:40
#8

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,379

Re: ltrModulesNet(1.22) - функции управления LTRServer

Отправил письмо

02.02.2011 14:07:47
#9

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,379

Re: ltrModulesNet(1.22) - функции управления LTRServer

Про LTR114 и термометр понял, что Вы имели ввиду (после того как послал письмо). Если используете внешний термометр, то, действительно, синхронизацию именно LTR114 не задействовать. Остаются синхрометки (хотя это несколько разные механизмы). Но все, что было в письме остается в силе (включая про режим ведущий - ведомые)

Александр. СПб.
04.02.2011 13:26:34
#10

Гость

Re: ltrModulesNet(1.22) - функции управления LTRServer

"Высылаю дополненную ltrModulesNet и 3 примера. Пример ltr11_l8_mark  -  аналогичен примеру ltr11_l8 за исключением того, что принимаются и метки. Выводится последняя метка из массива.

ltr-eu-sync демонстрирует как запускать синхрометки, которые может генерировать крейт EU. Этот пример генерирует по запуску метку старт и запускает генерацию секундных меток (до нажатия кнопки стоп). Для проверки можно использовать примеры параллельно – запустить ltr-eu-sync и в ltr11_l8_mark   наблюдать изменение меток. Кроме того, в ltr-eu-sync приведен пример использования функций Config (используется для настройки линий разъема  крейта EU. Его можно использовать, чтобы засинхронизовать крейты по принципу мастер-ведеомые, если необходимо получать синхронно синхрометки от нескольких крейтов) и GetCrateInfo.

Пример ltr-ctl использует те функции о которых Вы писали в первом пункте письма. Для функций работы с крейтами по сети скорее показан пример как их вызывать, реальный порядок будет зависеть от логики Вашей программы (в примере есть комментарии). Кроме того, в примере в комментариях указывается некие отличия от ltrapi .

Насчет IP-адресов. В ltrapi они задаются 32-битным числом. Не уверен, что в labview это удобно, но пока оставлено так. Если средствами LabView получить в таком формате адрес будет затруднительно, то если нужно, позже могу дописать, чтобы функции могли принимать адрес в виде строки.

Если нужно синхронизовать несколько крейтов, то как уже было написано выше можно с помощью внешнего разъема соединить их по принципу ведущий-ведомые. Тогда ведомы будут генерировать метки тогда же, когда и ведущий. Не очень понял насчет LTR114 и термодатчика – это как то связано с синхронизацией?

Когда будете писать ответ – напишите на форуме. Был случай, что не доходили письма на мой mail"

Алексей, спасибо за столь быстрый ответ. Только с получением новой библиотеки обнаружил, что старая была версии 1.0.3666.21699, присланная вами же 1.2.0.0. Вы очень метко уловили суть желаемого, добавили целый модуль в библиотеку и расписали примеры хорошими комментариями. Что касается формата IPадреса, то это уже пройденный этап, т.к. с LTR4x приходится работать с битами. но если будет возможность указывать строку, то это конечно же удобнее. Не до конца понятно, как мне необходимо соеденить несколько крейтов с использованием "внешнего разъёма". Прошу уточнения. Функция INT LTR_Open(TLTR *ltr) при неуказании csn крейта открывает первый в списке и по идее должна заполнять поле csn, но возвращает те же нули.

Александр. СПб.
04.02.2011 16:54:48
#11

Гость

Re: ltrModulesNet(1.22) - функции управления LTRServer

Практически разобрался с синхронизацией крейтов. (оказывается, есть SYNC на самом крейте, сейчас крейты видны только с лицевой стороны и как-то сразу на него не обратил внимания...)

04.02.2011 19:34:19
#12

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,379

Re: ltrModulesNet(1.22) - функции управления LTRServer

Отправил исправленную библиотеку, которая изменяет серийник при LTR_Open и чуть изменненый ltr-eu-sync - с отображением этого серийника (только нужно не забыть проинициализировать тогда весь массив нулями (16 нулей), если хотим получить серийник на выходе).

Если будут вопросы про синхронизацию - пишите.

Максим
19.12.2011 14:07:18
#13

Гость

Re: ltrModulesNet(1.22) - функции управления LTRServer

Добрый день.

Крейт LTR-EU-8-1.
Подключение через Ethernet.
LTRServer 1.5.3.0

Возникла задача генерации меток на 2-х крейтах LTR-EU-8-1. Когда был один крейт, то обходился указанием пустого серийного номера. Теперь же необходимо указывать серийный номер. Как правильно передать строку с серийным номером в LTR Server. Мой код приводит к ошибке. Участок кода с конвертированием строки в массив байт выделен комментарием ниже. Предполагаю, что некорректно конвертирую строку. Помогите пожалуйста.

static _ltr010api.TLTR10 hCrate = new _ltr010api.TLTR10();
static _LTRNative.TLTR_CONFIG hLTR_config;
_LTRNative.LTRERROR ltr_status;

hCrate.Ltr = _LTRNative.NewLTR;

ltr_status = _LTRNative.LTR_Init(ref hCrate.Ltr);
hCrate.Ltr.cc = (ushort)_LTRNative.LTRCC.CONTROL;
//
// здесь указываем серийный номер
string SN_string = "2D228266"
char[] CSN = SN_string.ToCharArray();
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
hCrate.Ltr.csn = encoding.GetBytes(CSN);
//
//
hCrate.Ltr.saddr = CNF_MANAGER.IP_LTR_SERVER;
hCrate.Ltr.sport = (ushort)CNF_MANAGER.PORT_LTR_SERVER;
// открытие канала связи с крейтом
ltr_status = _LTRNative.LTR_Open(ref hCrate.Ltr);
// вызываем функцию конфигурации
ltr_status = _LTRNative.LTR_Config(ref hCrate.Ltr, ref hLTR_config);

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон:+7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск