Форум: Техническая поддержка

Тема: LTR-43 функция LTR43_WriteArray(), С#

Вы не вошли.

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

21.07.2022 07:29:23
#1

Участник
Здесь с 12.01.2022
Сообщений: 5

LTR-43 функция LTR43_WriteArray(), С#

Добрый день!
- Крейт 8 мест: LTR-11, LTR-22, LTR-34, LTR-43, подключен USB;
- LTR-43;
- LTR43_WriteArray();
- C#.
---------------------------------
Вопрос:
- массив размером до 7 элементов - выводит отлично, от 7 и более ошибка.

Как починить? Очень нужно.
Спасибо за информацию.

Тест, немного псевдо. Отправит только 6 элементов.

Init();
uint[] test_cw = new uint[256];
for (int count = 0; count < 256; count++)
    {
       test_cw[count] = 0b1000_0000_0000_0000_0000_0001;
    }
    ltrModulesNet._LTRNative.LTRERROR ltr43_err;
   for (byte count = 1; count <= 255; count++)
   {
       Console.WriteLine("Count = " + count);
       ltr43_err = LTR_43.WriteArray(test_cw, count);
       if (ltr43_err != ltrModulesNet._LTRNative.LTRERROR.OK)
              {
                Console.WriteLine(" ----------- Error -----------" + count);
              }
                else    Console.WriteLine("-- OK  Count = " + count);

       Thread.Sleep(5000); //пусть так
       //Проверка ожил, нет? отправим 1 элемент
        ltr43_err = LTR_43.WriteArray(test_cw, 1);
            if (ltr43_err != ltrModulesNet._LTRNative.LTRERROR.OK)
             {
                Console.WriteLine(" --------- Error 1 -----------");
                    }
                    Thread.Sleep(10);
                }
    }

22.07.2022 15:51:47
#2

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

Re: LTR-43 функция LTR43_WriteArray(), С#

Добрый день.
А какую именно задачу решаете с использованием LTR43_WriteArray(), и почему не можете использовать последовательные вызовы LTR42_WritePort().
LTR43 - модуль асинхронного вызова и предназначен в первую очередь для вывода одиночных слов, он в любом случае при выводе массива не обеспечит определенных и одинаковых времен между выводимыми словами.

22.07.2022 16:04:27
#3

Участник
Здесь с 12.01.2022
Сообщений: 5

Re: LTR-43 функция LTR43_WriteArray(), С#

Алексей, добрый день!
На порту LTR-43 висят триггеры, необходимо быстро дернуть CP (CLK), протолкнуть данные.
Синхронность не нужна, нужен короткий импульс, не более 2 ms. WritePort одиночный >15 ms.
WritePort(0)WritePort(1)WritePort(0), долго. Дергать необходимо быстро потому, что на этот сигнал завязана
другая логика.

22.07.2022 20:09:15
#4

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

Re: LTR-43 функция LTR43_WriteArray(), С#

WritePort(0)WritePort(1)WritePort(0) это вроде всего 3 слова, на которое WriteArray работает. Или у Вас время и между импульсами должно быть не больше заданного? Какая вообще длина вывода где требуются небольшие задержки?

25.07.2022 09:38:38
#5

Участник
Здесь с 12.01.2022
Сообщений: 5

Re: LTR-43 функция LTR43_WriteArray(), С#

Алексей, здравствуйте!
Прошу прощения, за молчание. Не было доступа к оборудованию.
В первом посте пример, тест проводился без подключенного к LTR-43 оборудования, анализ по сообщениям об ошибках выводимым в консоль.
Хотя бы 3 (или 2) слова передать. Пусть не 85 us, больше.
----------------

В продолжение, описание ситуации:
- произвели модернизацию подключаемого к L-Card  оборудования,  с использование функции
WriteArray  -> не работает, оборудование сбоит;
- анализ ПО + железячники проверили схемотехнику, монтаж;
- оборудование в работе (в производстве), забрать для тестов проблема;

На данный момент:
LTR-43 + логический анализатор;
В лучшем случае при передаче правильно установится последнее переданное слово (логично. вероятность установки выше, если перед этим было слово с …_0000_0000_..., с нулями).
Исходники посмотрели, пособирали. В чем разница между WritePort  и WriteArray, подряд и не ждем ACK?
Картинки и тестовый код.
----------------
Ситуация не хорошая, железо изготовлено, как 43-ий обхитрить?
Силовых цепей нет, кругом слаботочка. Потерь пакетов ПК->модуль нет. Пытались обхитрить, отыскать закономерность в посылаемых словах, чтобы получить гарантированный результат не получается, "скользит" регистр.
Вот такая информация для Вас.

25.07.2022 16:57:13
#6

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

Re: LTR-43 функция LTR43_WriteArray(), С#

Добрый день.

Правильно ли я понял, что:
1. При WriteArray с размером 7 и больше функция выдает ошибку (какой именно код ошибки??)
2. При WriteArray с меньшим размером функция не выдает ошибку, но при этом сигнал все равно не соответствует записанному?
3. При той же посылки одиночными вызовами WritePort диаграмма соответствует ожидаемому, но слишком медленная для Вашей задачи?

Какая версия прошивки модуля LTR43 у Вас (есть в информации о модуле)?

Не очень понял про "Картинки и тестовый код.", в посте вроде нету, если хотели приложить картинки, то можете выслать на почту тех. поддержки (тут их тоже можно размещать, но это несколько помучиться надо).

Правильно ли я понимаю, что если хотя бы на 3 слова WriteArray будет устанавливать действительные значения за время меньше 2 мс (т.е. заработает пункт 2), то это будет приемлемо?

Сама функция WriteArray отличается от WritePort только тем, что при WritePort после каждой посылки вывода слова ожидается ответ и только потом шлется новое слово вывода, а для WriteArray сразу шлются все слова и потом ожидается соответствующее кол-во ответов.
При этом в работе WriteArray могут быть две проблемы:
1. Слова могут прийти с большей скоростью, чем модуль может их обработать и вывести, из-за чего модуль вынужден будет их отбросить, т.к. сам вывод в LTR43 не быстрый, буфер в самом модуле небольшой только на несколько слов, а интерфейс между модулем и крейтом не реализует какого-то управления потоком и модуль не может сигнализировать, что не готов принимать данные. Скорее всего с этим связана первая проблема, когда WriteArray возвращает ошибку, т.к. модуль не все слова обрабатывает и не все ответы посылает.
2. Если функция отрабатывает  без ошибок, но на выводе все равно сигналы не соответствуют переданным данным, то возможно сам модуль при командах подряд слишком быстро выполняет операцию записи выходных значений, это нужно мне подробнее изучить в прошивке модуля.

Вообще модуль LTR43 предназначен для медленного одиночного вывода с помощью WritePort, функцию WriteArray я не помню чтобы в реальности кто-то использовал и судя по всему она не является отлаженной, я попробую на неделе выделить время и подробнее изучить вопрос, возможно ли добиться для нее стабильной работы и при каких условиях, возможно исправлением прошивки модуля....

25.07.2022 17:07:15
#7

Участник
Здесь с 12.01.2022
Сообщений: 5

Re: LTR-43 функция LTR43_WriteArray(), С#

Алексей, отвечу в почту (на support@lcard.ru, для Алексея L Card, LTR-43)

28.07.2022 22:48:29
#8

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

Re: LTR-43 функция LTR43_WriteArray(), С#

Ответил на почту

29.07.2022 09:43:48
#9

Участник
Здесь с 12.01.2022
Сообщений: 5

Re: LTR-43 функция LTR43_WriteArray(), С#

Алексей, день добрый!
Все работает отлично! Спасибо за поддержу!
Проблема решена! Приятно с Вами  L-Card работать!

Контакты

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

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

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

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

L-CARD в проектах