Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Также судя по всему машины без поддержки SSE2 в настоящее время достаточно редки (Ваша - первое обращение).
Софт без SSE2 синсталлировался и запустился без ошибок. OK.
По поводу использования SSE2 - я как программист захотел исследовать как сделать второе рабочее место. Я хотел установить LTRd на тестовый комп, сделав подключение через TCP и т.п. оставив основной комп подключенным крейту по USB. Но часто программист не может рассчитывать, что ему выделят, просто для тестов, еще один современный комп. Для тестов приходится использовать и старьё.
Если производительность действительно существенно выше с использованием SSE2, то конечно используйте, Для тестов вероятно сойдут и старые версии софта без SSE2. Свой софт (на основе ltrapi библиотек) я вообще компилирую на VSstudio.net 2001 и c производительностью проблем нет.
А если Profile->Start Profiling... запустить с установленной "Log first chance exception" и журнал выложить?
А ltrd_start.bat на консольном окне что-нибудь все же выводит?попробуйте эту версию: https://bitbucket.org/lcard/ltrd/downlo … .1.5.0.exe
1. Не нашел где "Profile->Start Profiling... запустить с установленной "Log first chance exception""
2. После запуска ltrd_start.bat сразу crash:
https://drive.google.com/open?id=0B4vhI … nF1Q0p5dTA
3. Новая версия проглючила только два раза, до отбоя дело не дошло. Вот события (c 10:35):
https://drive.google.com/open?id=0B4vhI … UQzQkI2VjQ
Однако служба ltr запустилась. Остановил ее, попробовал с инсталлировать заново - инсталляция прошла. Однако теперь новая засада - не запускается ltrmanager - вылетает с ошибкой "Ошибка при иницализации приложения 0xc000001d. Для выхода нажмите OK"
Крейт к тестовому компьютеру не подключен. Но ведь это не критично для запуска программы?
Попробуйте также скачать и запустить Dependency Walker - http://www.dependencywalker.com
Скрин программы dependency
https://drive.google.com/open?id=0B4vhI … Uw4emVIdms
Картинка событий
https://drive.google.com/open?id=0B4vhI … UNjZjJITWs
Ошибка не одна, а три раза. Каждый раз спрашивает послать отчет или отменить. Я выбирал отменить. На третьем разе (на config.xml) вылетает "ошибка установки сервиса -1073741795" с прдложением прервать/повтор/пропустить и я выбираю прервать.
PS На тестовом компе мало что установлено - может в этом причина. Может так какой-нибудь XML парсер нужно доустанавливать? На машине поставлен MSNetframework.4.0; Windows Installer 4.5
Рабочий комп (где все встало) WindowsXP-SP3/Windows7-64 где рабочая XP на диске c.
Тестовый комп 2 системы - Windows98 (диск c:) / WindowsXP-SP3 где рабочая XP стоит на диске D:
Установщик взят с сайта (http://www.lcard.ru/download/ltrd-setup.exe) и он уже использовался на моем основном компьютере тоже с XP - все прошло нормально. На всякий случай скачал заново регитов и сравнил файлы - одинаковые.
PS: инсталяция ltrmanager_setup.exe прошла нормально.
В системном журнале Windows приложений, есть какие-то записи, связанные с ltrd?
А в каком файле смотреть? В журнале событий Application Error событие 1000. Из диагностических сообщений об ошибке установки можно достать вот такой текст
Попробовал установить сабж на тестовый компьютер - при инсталляции серьезные ошибки. В чем может быть дело (windows XPSP3) PIII?
картинка
http://savepic.su/7542273.gif
Соответственно этот новый более удобный способ используется и в примерах, которые были обновлены. К сожалению документация пока не обновлена и в ней эта вспомогательная функция отсутствует, как и вторая введенная позже вспомогательная функция LTR11_FindAdcFreqParams()
В принципе я вроде понял. Вот к примеру отрывок из моего ini файла c настройками слота LTR11:
Встретил пример на Билдере для LTR11 где встретилась функция LTR11_CreateLChannel
Во всех ltrapi11.pdf которые у меня есть описания этой функции нет. По примеру конечно понятно что дифференциальный режим это mode=0; С общим нулем mode=1 И т.д.
Но в примере из ltrapi11.pdf LTR11_CreateLChannel вообще не используется и логические каналы настраиваются через таблицу довольно магическим образом
/* диапазон - 10В, режим - 16-канальный, физический канал - 4 */
hltr11.LChTbl[0] = (0 << 6) | (0 << 4) | (4 << 0);
Все таки хочу уточнить моё понимание LTR27. И так на нем 8 мезонинов по два канала. Выбираем частоту дискретизации 100 Гц ( ltr27.FrequencyDivisor=9;)
Реальная частота опроса одного канала будет 100/16? Или нужно делить на число мезонинов (8)?
Sorry, в документации информация о LTR 27 есть, не заметил с первого раза.
При изучении LTR27 в документации не нашел описания как задать частоту дискретизации каналов.
В примере из документации есть без объяснения:
// выбираем частоту дискретизации 100Гц
ltr27.FrequencyDivisor=9;
Можно по подробнее? Например я хочу 10 Гц на канал (8 мезонинов заполнены)
Соедините "-" c AGND.
Да, помогло, спасибо.
Электронщики дали мне раъём (см картинку). От источника питания он подключен двумя проводами (от + и -) Насколько я понимаю мне нужно третий провод от "земли" источника напряжения к пину AGRD на раъеме модульного входа?
Сорри небольшая ошибочка (которая не меняет вопроса, так как параметр 1)
Вместо
for (j = 0; j < size; j++)
{
double* frame_point = proc_data; char fr_str[200];
Нужно было
for (j = 0; j < size; j++)
{
double* frame_point = proc_data + j; char fr_str[200];
PS: Я так понял, что на форуме я не могу поправить свое сообщение?
Испытываю непонятную проблему. Все упростил до теста, но все равно не пойму в чем дело. Тест простой - каждаю секунду срабатывает таймер и я пытаюсь прочитать пять фреймов. Делитель 1600, дискредитация 5 Гц (стало быть 5 фреймов в секунду). На входе первого канала +4.9V. Сначала все читает нормально. Потом значения начинают уменьшаться и падают до нулевого шума.
Вот как это выглядит:
А вот код функции таймера
В функции LTR114_Recv в случае запроса блока фреймов - как узнать, сколько фреймов за раз я могу запросить?
Видимо покадровое чтение делать нельзя из-за отсутствия гарантии, что в FIFO что-то есть. Он так же может переполнится. Если буфер стал через некоторое время пустым, то будем читать нули.
Т.е. видимо стратегия быстрой записи должна быть видимо такая:
1 накопление в FIFO буфере фреймов в течении например 1 секунды
2. После накопления считываем все фреймы в буфер (с одновременной очисткой FIFO)
3. Сброс буфера на диск + плюс начинается новое накопление фреймов.
При этом совершенно не важно, принимаете Вы данные по одному кадру или по несколько. По сути модуль всегда их передает в ПК со скоростью измерения, а с помощью LTR114_Recv() Вы только их откачиваете из буфера.
Т.е. я так понимаю, что нет особого смысла заморачиваться считыванием фреймов блоками? На скорость это не влияет?
Я сейчас работаю с LTR 114. Мне нужно получать теги (имя+время+значение) и сбрасывать их потоком на диск.
В настоящее время алгоритм упрощен - я читаю с крейта 1 фрейм, после LTR114_ProcessData я беру локальное время компьютера как время фрейма (т.е. все параметры фрейма имеют это время). Я читаю параметры фрейма и формирую таги. Тут возникает вопрос - с какой _максимальной_ частотой может вызываться LTR114_Recv для чтения одного кадра? Нужно ли ставить задержки? У меня есть подозрение что нужно.
Второй вариант - это когда LTR114_Recv читает за раз много фреймов. Но как мне получить времена каждого фрейма? Как я понимаю, вренные метки служат совсем для другого и помочь не могут, да время на крейте не устанавливается.
Пожалуйства проясните ситуацию.
В принципе скоростную выдачу данных выглядит возможным реализовать и средствами OPC, если иметь тег с типом массив данных и в нем возвращать блок сырых отсчетов нужной длины.
Это потребует серьезной переделки как серверной так и клиентской части, а достижение многокилогерцовых записей не факт, что будет - OPC медленный механизм.
alexko пишет:OPC сервер выдает тэги типа u1_m1_c1
А что в этих тегах возвращается?
alexko пишет:проблема скоростной записи
А можно подробнее, что именно Вы имеете ввиду под скоростной записью? Какую именно задачу решаете?
alexko пишет:так как две разные программы не могут работать с крейтом одновременно
Точнее две разные программы не могут напрямую работать с одним и тем же модулем.
Возвращается значение с плавающей точкой (один параметр - одно значение). Т.е. к каждому параметру привязан OPC тег, и значение с него считывается программой клентом.
OPC теги используются программами отображения - тут низкая скорость OPC достаточна. Но требуется, чтобы при эксперименте была возможность скоростного опроса модулей крейта (килогерцы) и запись потока значений в файл. Для этого в OPC сервере есть встроенный механизм записи данных получаемых с крейта (прямо в файл). У OPC сервера есть пара служебных тегов для получения команд от клиента, чтобы установить частоту записи, начать опрос, закончить запись.
Ну с точки зрения программирования LTR11 скорее похож на несколько упрощенный LTR114.
Спасибо, начну с него.
Если там используются стандартные библиотеки ltrapi, то в принципе работа с модулями достаточна похожа.
Да для работы с LTR используется стандартные ltrapi библиотеки.
А что на выходе выдает OPC-сервер? Используете для встраивания в какую-то SCADA-систему?
OPC сервер выдает тэги типа u1_m1_c1. Также имеется встроенная запсиь данных в файл (для скоростного опроса).
На всякий случай скажу, что Л Кард в качестве заказной работы может адаптировать под задачи клиентов свой OPC-сервер.
Решается ли как-то в этом случае проблема скоростной записи? Я так понимаю, что сам OPC сервер работающий с крейтами должен это поддерживать, так как две разные программы не могут работать с крейтом одновременно?
Извиняюсь если вопрос некорректный.
Мне пришлось взять и вести не свой софт (исходники VC++ есть) для работы с LTR11, LTR114 и LTR212. Всё выполнено в виде OPC сервера (OPC серверы мне знакомы). Работа каждого из модулей выполнена в виде отдельного С++/*.h файла. В программе есть casы типа
case 0x1b1b: //27
case 0x7272: //114
case 0xd4d4: //212
Теперь стоит задача малой кровью добавить в крейт LTR11. Какой из трех модулей наиболее близок по программированию к LTR11 (вопрос - на основе какого модуля мне будет легче сделать добавку LTR11?) Также по аналогии я добавлю
case 0x0b0b: //11
Думаю должно получиться. Раньше с LTR дело не имел, возможно я сам разберусь после прочтения мануалов, но хотелось бы услышать совет.
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4
Многоканальный телефон: +7 (495) 785-95-25
Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Мы работаем с юридическими и физическими лицами, пожалуйста, прикладывайте реквизиты при оформлении заказа
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск