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


Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

Вы не вошли.

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

Грошев Егор
08.04.2012 11:30:10
#1

Гость

Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

Здравствуйте!
У меня крейт LTR-U-1-4 со встроенным модулем Ltr43. Я установил все необходимые программы и успешно запустил простой пример в руководстве для программиста ltrapi.pdf. Теперь у меня новая задача:
Мне нужно установить джамперы как-то, чтобы порты 1 и 2 используются только для ввода, а порты 3 и 4 только для вывода.
В порты 1 и 2 подаем электрические сигналы (допустим сигналы идут от батареек). Программа читает 5 слов (каждый слов через определенный интервал времени, скажем через каждую секунду). В каждом слове мы делаем инверсию каждого бита слова (т.е 1-> 0 и 0 -> 1). Каждое полученное слово посылаем на порты 3 и 4 (cкажем через опять каждую секунду).
Как установить джамперы?
Как конфигуровать порты программно (возможно ли кофигурировать аппаратно)?
Как конфигуровать метку старта и секундную метку?
Как точно узнать что моя программа (допустим я написал свою программу) корректно работает как я хочу (в смысле возможно ли оппаратно проверить результаты, полученны с портов 3 и 4).
P.S: Я тоже почитал руководство для пользователя и программиста (ltrapi.pdf, ltr43api.pdf), но не всё понял. Поэтому хочу узнать ваш ответ в этом конкретном примере (когда есть пример то всегда легко понять).

Спасибо за внимание!

08.04.2012 15:20:49
#2

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

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

Егор.
1. Джампера X4, X5, X7, X8 нужно оставить положении 1-2 (см. табл. 8-1 Руководства). На разъёме X6 если все джампера снять, то при включении LTR43 все порты будут настроены на вход, а нужные порты можно будет перестроить на выход программно - это наиболее универсальный и гибкий подход. Если требуется, чтобы при включении LTR43 порты 3 и 4 были сразу же настроены на выход, то джампера нужно одеть на контакты 5-6 и 7-8 разъёма X6(см. табл. 8-2 Руководства).

2. "В порты 1 и 2 подаем электрические сигналы (допустим сигналы идут от батареек)..."
- Я уже пытался объяснить Вашему коллеге,
http://www.lcard.ru/forumthreads/12443
что при непосредственном подсоединении батарейки +2,4...+5,3 В ко входу LTR43 логический уровень входа LTR43 не изменит своего логического состояния состояния (логическая единица). А поскольку задача, которую Вы решаете, не сформулирована, то до вопроса "как правильно подключить?" мы ещё не дошли.

3. "возможно ли оппаратно проверить результаты, полученны с портов 3 и 4"
- можно выход соединить с одним или более входами. И протестировать программно эти линии.
- можно на выход присоединить вольтметр и измерить непосредственно выходное напряжение
- можно вход замкнуть на AGND, тогда он перейдёт из состояния "1" в "0" и состояние входа считать программно. При размыкании - вернётся обратно в "1".

4. Батарейку отнесите туда, где взяли :-). Она не понадобится, судя по всему.

5. По программным примерам ждите ответ нашего программиста.

08.04.2012 15:54:16
#3

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

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

09.04.2012 11:16:19
#4

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

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

Чтобы сконфигурировать модуль нужно сперва заполнить нужные поля структуры TLTR43 (после того, как соединение с модулем было установлено) и затем вызвать LTR43_Configure.

Для направления портов используются поля IO_Ports. PortX (где X – номер порта от 1 до 4).
В Вашем случае (если hnd – структура типа TLTR43):
hnd.IO_Ports. Port1=0;
hnd.IO_Ports. Port2=0;
hnd.IO_Ports. Port3=1;
hnd.IO_Ports. Port4=1;

Далее, нужно настроить, каким образом будут генерироваться секундные метки и метка старт. Они могут генерироваться либо программно (то есть Вы из Вашей программы будет с помощью функций будет говорить модулю LTR43, что надо сгенерировать метку старт (LTR43_MakeStartMark), что надо начать или закончить генерировать раз в секунду секундные метки (LTR43_StartSecondMark и LTR43_StopSecondMark), либо аппаратно – то есть модуль будет генерировать метку старт и/или когда секундную метку только когда ему на его соответствующий вход придет сигнал (Плюс еще вариант, когда момент генерации определяется программно, но модуль когда генерирует метку еще сам выдает сигнал на линии).

В случае программного управления:
hnd .Marks.SecondMark_Mode=0;
hnd .Marks.StartMark_Mode=0;
В случае аппаратного управления:
hnd .Marks.SecondMark_Mode=2;
hnd .Marks.StartMark_Mode=2;

После этого вызываете:
res = LTR43_Configure(&hnd);

С этого момента модуль настроен, и Вы можете считывать значения с его портов или записывать, (а также вызывать вызывать LTR43_MakeStartMark/ LTR43_StartSecondMark/ LTR43_StopSecondMark в случае программного управления метками):

Считывание (wrd – типа DWORD):
res = LTR43_ReadPort(&hnd, &wrd);
Результат считывания с первого порта в младшем байте (биты 7..0), со второго - биты (15..8). Т.е. проинвертировать вам нужно младшие два байта:
wrd = wrd ^ 0xFFFF;

Далее, если Вы записываете в 3 и 4 порт, то выводимое значение на порт 3 будет в битах 23..16, а на порт 4 в батах 31..24 слова, переданного в LTR43_WritePort. Если Вы считаное с первого порта инвертированное слово посылаете на порт 3, а со второго на порт 4, то просто смещаем биты 15..0, полученные при считывании на 16 влево:
res = LTR43_WritePort(&hnd, wrd << 16);

В принципе это есть в примерах, в том же ltr43api.pdf есть код примера для работы с LTR43.

Гусев Артем
12.04.2012 06:13:49
#5

Гость

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

@Алексей (L-Card)
Здравствуйте!

Сначало спасибо большое за пояснение. Они действительно полезны, хотя все подобное уже написано в ltr43api.pdf.

Я запустил пример приложения в пункте 1.2 на странице 31, в документе ltr43api.pdf. У меня, (кажется), все получилось кроме одного. Обратите, пожалуйста, на эти строки в коде:
// Подождем 3 секунды. После этого в сервере видно, что пришло 3 секундные метки
Sleep(3000);

После того, как прошло 3 секунды в LTR Server-e я не нашёл ни какого признака, говорящего о том что в сервере видно, что пришло 3 секундные метки. Вместо этого в сервере записаны следующие информации:
[09.04.12 13:01:57.283] (3) CLIENT_CTL: 127.0.0.1 [2R369038 : 1]: Connection started
[09.04.12 13:02:08.378] (1) CLIENT_WRITE: 127.0.0.1 [2R369038 : 1]: async receive failed (error 10054)
[09.04.12 13:02:08.378] (3) CLIENT_CTL: 127.0.0.1 [2R369038 : 1]: Connection stopped
В чем у нас проблема?

Еще вопрос: в пункте  5.1  Конфигурация секундных меток написано: "Секундная метка  генерируются  с  периодом 1  с  и может  быть  сконфигурирована  как внутренняя, внутренняя с трансляцией на выход и внешняя." А можно ли изменить этот период 1 с?

Опять жду ваш ответ!

Всего доброго!

12.04.2012 07:37:40
#6

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

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

В LTR43 "секундная метка" в режимах "внутренняя" и "внутренняя с трансляцией на выход" генерируется внутри LTR43 аппаратно, и её период 1 с не может быть изменён - по крайней мере, в текущей реализации ПО и прошивок LTR43 это не предусмотрено.

12.04.2012 10:30:28
#7

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

CLIENT_WRITE: 127.0.0.1 [2R369038 : 1]: async receive failed (error 10054) -
аварийно завершилось соединение с программой, которая открывала модель в слоте 1.
Похоже, что приложение завершилось, не дождавшись результата и не сделав LTR_Close?

12.04.2012 10:37:13
#8

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Ввод и вывод сигналов с помощью ltr43 в LTR-U-1-4

Секундные метки в журнале не пишутся. Счетчик принятых меток виден в окне статистике по крейту (если в левой половине окна выбрать крейт, в правой половине отображается всякая информация о нем, в т.ч. счетчики меток СТАРТ и СЕКУНДА.
Это для визуального контроля. А для работы с метками их считывают вместе с данными через массив tmark в функции LTRxx_Recv().

Контакты

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

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

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

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