This is topic Проблемы с модулями ввода-вывода 7000 серии in forum Микро Мониторы Реального Времени / Micro Real Time Monitors at Форум TRACE MODE: техническая поддержка.
Формат команды аналогового вывода для I-7021: #AAxx.xxx для I-7021: #AAxx.xxx для I-7022: #AANxx.xxx для I-7024: #AANyxx.xxx где АА - адрес модуля, N - номер канала, у - знак, х - цифра. Как вы реализовали это? К чему вопрос - У нас не работает модуль I-7022, начали выяснять, контроллер для опроса модуля выдает команду #AANyxx.xxx вместо #AANxx.xxx соответственно модуль его игнорирует. Подозреваю что и с I-7021 возникнет та же проблема. Какие модули аналогового вывода поддерживает Trace Mode? Как сделать так чтобы заработали модули 7021 и 7022.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Модули I-7022 появились несколько позже остальных и с отличиями в протоколе. В релизе 5.11 эти отличия учтены. Я пошлю Вам на адрес Вашей организации измененную библиотеку DCS.DLL для рабочих станций. Соответствующие изменения в микроМРВ ЛАГУНА БУДУТ ВНЕСЕНЫ С ВЫПУСКОМ РЕЛИЗА.
Posted by Novokam (Участник № / Member № 32) on :
Уважаемая AdAstra! У нас снова проблемы с модулями, на этот раз с модулем I7080. Формат команды чтения счетчика/частотомера таков: #AAN, где AA-байтовый адрес, N-номер читаемого канала. Мы испытывали счетчик в терминальном режиме с помощью этой команды - всё работает. В протоколе передачи данных TRACE MODE мы обнаружили, что посылаемая им команда для опроса модуля имеет формат #AAS/CN. К чему здесь символы S/C? Что нам делать?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я перепроверил описанную Вами ситуацию в МРВ релиза 5.10 в профессиональном и базовом форматах. Запрос формируется в точном соответствии с протоколом обмена: #AAN, где AA-байтовый адрес, N-номер читаемого канала. Если у Вас не обнаружатся какие-либо дополнительные обстоятельства, пришлите нам, пожалуйста, Ваш проект.
Posted by Novokam (Участник № / Member № 32) on :
Какой тип канала Вы берете для модуля I7080? Когда выбираем дополнение к подтипу канала Frq/Counter, получаем описанную нами выше ситуацию. При выборе дополнения к подтипу канала Ain со смещением 0x20, получаем команду #AAN, где N=P, где, очевидно, P - это представление числа 0x20. Без смещения получаем правильный опрос #AAN, где N - номер канала. Ответ получаем в формате HEX, который TM воспринимает как FLOAT. Соответственно,переменную формата HEX, где присутствуют буквы, при чтении её каналом формата FLOAT, TM не воспринимает. Работаем в TRACE MODE 5.10 Professional, подключили присланную Вами по почте динамическую библиотеку DCS.dll.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я еще раз именно в релизе 5.10 перепроверил реализацию этих запросов с посланной Вам библиотекой. В проекте был канал DCS/AIn/ADDR=02/CH=0020 (для опроса счетчиков в модулях дискретного ввода) и канал DCS/Frq/Counter/ADDR=01/CH=0001(для опроса счетчика в модуле I-7080). В протоколе профайлера (в отсутствие модулей) были следующие записи:
Все это говорит о том, что формируемые запросы соответствуют протоколам модулей. Видимо, дело либо в методах наблюдения, либо в реализации проекта.
Posted by Novokam (Участник № / Member № 32) on :
Мы наблюдаем программой "гипертерминал" из комплекта WIN NT 4.0. протокол передачи данных между контроллером и модулями ввода-вывода. Подключаемся к COM-порту модулей ввода-вывода через преобразователь интерфейса 7520 .
Эксперимент №1 Для 7080 используем канал DCS/Frq/Counter/ADDR=05/CH=0000 и канал DCS/Frq/Counter/ADDR=05/CH=0001 В протоколе видим: #05S/C0 //запрос #05S/C1 //запрос Тогда как должно быть: #050 //запрос >00000000 //ответ в формате НЕХ #051 //запрос >00000000 //ответ в формате НЕХ
Эксперимент №2 Для 7080 используем канал DCS/Ain/ADDR=05/CH=0000 и канал DCS/Ain/ADDR=05/CH=0001 В протоколе видим: #050 //запрос >000000A1 //ответ в формате НЕХ #051 //запрос >00000000 //ответ в формате НЕХ ТМ воспринимает ответ в формате НЕХ как значение FLOAT. Поэтому ответ >000000A1 в первом канале воспринимае как 1 (Буквы-то ТМ не видит при чтении аналоговых входов).
Эксперимент №3 Для 7080 используем канал DCS/Ain/ADDR=05/CH=0020 и канал DCS/Ain/ADDR=05/CH=0021 В протоколе видим: #05P //запрос #05Q //запрос
Короче, мысли по поводу правильного использования 7080 в качестве счетчика/частотомера при помощи ТМ у нас кончались.
Начинаем искать выход - берем модуль 7065
Эксперимент №1 Для 7065 используем канал DCS/Ain/ADDR=05/CH=0020 и канал DCS/Ain/ADDR=05/CH=0021 В протоколе видим: #05P //запрос #05Q //запрос
Эксперимент №2 Для 7065 используем канал DCS/Ain/ADDR=05/CH=0000 и канал DCS/Ain/ADDR=05/CH=0001 В протоколе видим: #050 //запрос !0500000 //ответ в формате DEC #051 //запрос !0500000 //ответ в формате DEC Легким движением руки, вычитая из значения канала число 500000, получаем реальное значение счетчика. Вроде бы все ничего.
Теперь пытаемся сбросить счетчик. Как описано в документации, используем канал DCS/ClearCounter/ADDR=05/CH=0020 и канал DCS/ClearCounter/ADDR=05/CH=0021 В протоколе видим: $056P //команда $056Q //команда
Убираем смещение. DCS/ClearCounter/ADDR=05/CH=0000 и канал DCS/ClearCounter/ADDR=05/CH=0001 В протоколе видим: $0560 //команда $0561 //команда Но для сброса нашего счетчика 7065 нужны команды: $05C0 $05C1
Вопрос: как нам реализовать подсчет частоты или числа импульсов(но чтобы можно было сбросить счетчик)?
Posted by Novokam (Участник № / Member № 32) on :
Слава Богу, у нас всё получилось! Оказывается, нужно было подключать модули ввода-вывода непосредственно к компьютеру, тогда как мы подключали к контроллеру. Контроллер Lagoon в данной версии микро МРВ со счетчиками не работает.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я очень рад. В релизе 5.11 ЛАГУНА будет поддерживать эти функции.