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

Тема: E14-140-M, АЦП или помогите разобраться с инструкцией, не могу =(

Вы не вошли.

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

08.11.2019 11:59:26
#1

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

E14-140-M, АЦП или помогите разобраться с инструкцией, не могу =(

Доброго времени суток. Столкнулся с такой проблемой на модуле E14-140-M, непосредственно с реализацией функций АЦП. Разрабатываем программу, чтобы записывать измеренные напряжения и токи на сварочных аппаратах, работаем с напряжением до 10 вольт, при попытках повторить реализацию по примерам - не получается получить результаты с АЦП. ADC_SAMPLE() - не работает у нас. Загвоздка следующая: как получать кодовые значения напряжения со входов? Работаем с первыми 3-мя каналами, общая земля, однополярное напряжение. Согласно таблице 5 в руководстве программиста, коды логических каналов получились следующие: 0x20, 0x21, 0x22. В двоичном коде: 00100000 для первого канала, 00100001 для второго канала и 00100010 - для третьего.
Программу пишем в среде MSVS на языке C++.
Параметры взяли из примера.
Возможно, допускаю, наша ошибка в установке параметров работы АЦП

ADC_PARS_E140 ap;

ap.ClkSource = INT_ADC_CLOCK_E140;
ap.EnableClkOutput = ADC_CLOCK_TRANS_DISABLED_E140;
ap.InputMode = NO_SYNC_E140;
ap.ChannelsQuantity = CHANNELS_QUANTITY; - объявили 3, #define CAHNNELS_QUANTITY (0x3)
// формируем управляющую таблицу
for (int count = 0x0; count < ap.ChannelsQuantity; count++)
{
    ap.ControlTable[count] = (WORD)count;
}
AdcRate = 100.0;
InterKadrDelay = 0.0;
if (!pModule->SET_ADC_PARS(&ap)) MessageBox::Show("SET_ADC_PARS() --> Bad");

Процедуру опроса реализовали следующим образом:
pModule->ADC_SAMPLE(&AdcSample, (WORD)(0x21));
int amperka = 0;
amperka = prinftf("%D", AdcSample); // для передачи данных форматированных в переменную (в примере консольном работает, у нас - нет  roll  cry )
label1 = amperka.toString(); //для передачи в метку на форме для отображения

Помогите разобраться, как правильно реализовать, чтобы сработало. Понимаю, что хожу очень близко к решению, но не получается.

08.11.2019 12:40:59
#2

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

Re: E14-140-M, АЦП или помогите разобраться с инструкцией, не могу =(

Добрый день.
Функция printf выводит строку в заданном формате на стандартный вывод (а не в переменную). Для консольной программы стандартный вывод выводится в консоль, а для графической он не отображается. При этом функция printf возвращает количество выведенных символов, не уверен, что Вы именно это хотели получить в переменной amperka.

Поэтому в вашем графическом приложении printf вообще не нужен. Я так понимаю Вы используете WindowsForms на C++/CLI (C++ для NetFramefork) судя по коду, Вам соответственно и лучше воспользоваться сразу средствами NetFramefork для перевода AdcSample в строку, например тем же toString, который идет дальше. Т.е. сразу сделать label1 = AdcSample.toString() (или label1 = ((int)AdcSample).toString(), если для типа AdcSample нет варианта toString).

12.11.2019 08:44:14
#3

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

Re: E14-140-M, АЦП или помогите разобраться с инструкцией, не могу =(

Спасибо, помогло.

Контакты

Адрес: 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 в проектах