Имеем следующую проблему. Драйвер RWH читает значение аналогового сигнала. Когда на вход ничего не подано, драйвер должен возвращать 0 (плюс/минус 0.001). Но драйвер возвращает 0.05, т.е. ошибка нуля в 50 раз больше допустимой!!! Причем драйвер в нерезидентном исполнении (без микроМРВ) читает значение 0 без ошибок. Безошибочно читает значение и FBD-программа, которую мы написали для проверки. В чем проблема?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Посмотрите в канале, который от драйвера принимает значение нет никакой первичной обработки?
Posted by zotov (Участник № / Member № 1113) on :
Нет. Первичной обработки нет.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) В каком формате Вы выводите на экран это значение в драйвере, когда он нерезидент? 2) Что означает +/- 0.001, это шум АЦП? Код драйвера по части обработки AI можете привести?
Posted by zotov (Участник № / Member № 1113) on :
1. Нерезидентный драйвер выводит значение в формате %.3f через функцию fscanf. 2. Да, это шум АЦП. 3. Код драйвера привести, конечно, можно, но проблема в том, что уже из порта функция inportb считывает искаженное значение, т.е. драйвер даже не успевает его обработать. Причем читать значение приходится 2 раза подряд, т.к. результат первого чтения - вообще какой-то мусор. Мы думали, проблема с задержками. На старом процессоре Advantech PCM 3345 на 70 МГц ошибки чтения в драйвере не было. А на новом процессоре Advantech PCM 3350 на 300 МГц она появилась. В FBD-программе, однако, ее нет на любом процессоре. В нерезидентном драйвере также нет на любом процессоре. Мы пробовали всевозможные задержки и после старта АЦП, и после выбора входа мультиплексора, и перед входом в функцию опроса. Эффекта никакого. Возможно, проблема решится с переходом от mrt86.exe на mrt7.exe. Будем пробовать. Спасибо.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
От МикроМРВ это врядли будет зависеть, ведь резидентный драйвер он сам по себе (как отдельное приложение), это не часть МикроМРВ.