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

Тема: Многоканальный ввод в L1250

Вы не вошли.

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

Андрей
26.11.2001 10:38:41
#1

Гость

Многоканальный ввод в L1250

Возникла проблема при вводе данных в АЦП в многоканальном режиме с синхронизацией от таймера.
Ввожу 5 каналов с частотой 10 кГц в 3 массива по 32000 значений, т.е 19200 значений на канал.
После этого преобразую полученные значения и записываю по-канально в отдельные файлы.
В данных файлах время от времени наблюдается такая картина: на каком-то произвольном кадре
происходит сдвиг отсчетов по каналам, т.е сигнал 1-го канала оказывается во 2-ом,
2-го - в 3-ем,..., 5-го - в 1-ом. Может происходить несколько таких сдвигов...
При начале следующего массива - данные такие как надо (с нужных каналов на нужных местах), но
может опять же произойти сдвиг.
Данный сдвиг может и не происходить...

Текст данного куска программы:

    int k = 32000;
    int NPoint = k/5, NCh = 5, Rate = 100;
    unsigned short Data1[32000], Data2[32000], Data3[32000];
    signed short Data1_[32000], Data2_[32000], Data3_[32000];
    float Data11[32000], Data22[32000], Data33[32000];
    unsigned short Chan[16] = {0,1,2,3,4};

//  Ввод данных с АЦП
    SOFT(Data1, NPoint, Chan, NCh, Rate);
    SOFT(Data2, NPoint, Chan, NCh, Rate);
    SOFT(Data3, NPoint, Chan, NCh, Rate);

//  Преобразование в формат (-5,12...+5,12)В
    for(int n = 0; n < k; n++)
    {
      if(Data1[n]>32678)
        Data1_[n] = Data1[n]-65536;
      else Data1_[n] = Data1[n];
      Data11[n] = Data1_[n]*5.12/2048;
      if(Data2[n]>32678)
        Data2_[n] = Data2[n]-65536;
      else Data2_[n] = Data2[n];
      Data22[n] = Data2_[n]*5.12/2048;
      if(Data3[n]>32678)
        Data3_[n] = Data3[n]-65536;
      else Data3_[n] = Data3[n];
      Data33[n] = Data3_[n]*5.12/2048;
    }

    FILE *stream;
    stream = fopen("Data1.___", "a");
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data11[5*n];
      fprintf(stream, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data22[5*n];
      fprintf(stream, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data33[5*n];
      fprintf(stream, "//n%s", Str.c_str());
    }
    fclose(stream);

    FILE *stream2;
    stream2 = fopen("Data2.___", "a");
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data11[5*n+1];
      fprintf(stream2, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data22[5*n+1];
      fprintf(stream2, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data33[5*n+1];
      fprintf(stream2, "//n%s", Str.c_str());
    }
    fclose(stream2);

    FILE *stream3;
    stream3 = fopen("Data3.___", "a");
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data11[5*n+2];
      fprintf(stream3, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data22[5*n+2];
      fprintf(stream3, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data33[5*n+2];
      fprintf(stream3, "//n%s", Str.c_str());
    }
    fclose(stream3);

    FILE *stream4;
    stream4 = fopen("Data4.___", "a");
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data11[5*n+3];
      fprintf(stream4, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data22[5*n+3];
      fprintf(stream4, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data33[5*n+3];
      fprintf(stream4, "//n%s", Str.c_str());
    }
    fclose(stream4);

    FILE *stream5;
    stream5 = fopen("Data5.___", "a");
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data11[5*n+4];
      fprintf(stream5, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data22[5*n+4];
      fprintf(stream5, "//n%s", Str.c_str());
    }
    for(int n = 0; n < k/5; n++)
    {
      AnsiString Str = Data33[5*n+4];
      fprintf(stream5, "//n%s", Str.c_str());
    }
    fclose(stream5);

Влад
26.11.2001 12:14:15
#2

Гость

Re: Многоканальный ввод в L1250

Попробуйте увеличить межканальную задержку (вызвать SET_INTER_DELAY(10)).

Контакты

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

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

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

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