Скачал с вашего сайта пример настройки ROC 827 с примерами... Сделал как описано, настроил карту памяти, настроил сом-порты, файлы конфигурации. Связи с контроллером через проект нет. Только через конфигурационную программу. Связь по RS-485. На нашей машине используется 8 сом-порт. Я так понял в файле конфигурации: MDB_FLAG=2 - вместо 2 пишем 256 (2 в 8 степени) MDB_FLOATCNV=101 MDB_AFCNV02=4096 END_OF_CNF
в других строках ничего не меняем?!
И непонятно, влияет ли положение модуля с интерфейсом связи на карту памяти или на обмен?! В инструкции сказано, что модуль с портом установлен в первый слот, а у нас во второй. Модули AI, AO, DO. При запуске проекта достоверность каналов _T. Но как только меняем значение DO (W_SingleCoil(5)), достовреность переходит в F, причем и на AI. PortMon показывает timeout при ожидании ответа. В настройках каналов увеличивали таймаут до максимума - не помогло. Подскажите, что делать?!
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вы можете с контроллером подъехать к нам? Так будет проще.
Posted by Gvenihvivar (Участник № / Member № 5513) on :
Здравствуйте. У меня вопрос о ROC 809. В обучающем видео при подключении контроллера к SCADA все просто. Необходимо ввести номер регистра переменной в памяти контроллера. Где взять этот номер регистра? В нашей документации такого понятия как регистр входа или выхода нет.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Эти данные обязательно должны быть в документации на контроллер. Возможно, Вам поможет пример проекта "EMERSON/MODBUS. Примеры организации связи с контроллерами ROC 827 и FloBoss 107 по протоколам MODBUS RTU и MODBUS TCP. Демонстрируется мониторинг данных различных форматов и считывание архивных данных.", который выложен на сайте http://forum.adastra.ru/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=31;t=000650;p=0 Posted by Gvenihvivar (Участник № / Member № 5513) on :
Спасибо за ответ. Регистры нашлись в англоязычной документации. Есть еще один вопрос по чтению данных. С контроллера необходимо получить по modbus время. Формат времени в ROC "time". Среди переменных, которые можно создать в ТМ, такого формата нет. Как вариант, можно собрать время из секунд, минут и часов, но тогда увеличивается количество точек, а хотелось все таки одним значением.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Мы не знаем, как выглядит формат "time" в контроллере ROC. В общем случае придется, видимо, создавать необходимое количество точек ввода/вывода и каналов.
Posted by DimonVLZ (Участник № / Member № 3339) on :
Разбираем 09.12.2000 11:20:15: - 11:20:15 соответствует MM:DD:YY - 09.12.2000 соответствует HH.??.????, где 2000 - это значение по умолчанию для года, судя по Form Number A6127, Part Number D301180X012, ROC Plus Protocol Specifications Manual, раздел 3.4.47 Point Type 136: ROC Clock
Правильно - в ответе используются 2 Real поля: 1 поле - дата, в формате MMDDYY 2 поле - время, в формате HHMMSS
фактически получили: - для часовых архивов - время, в формате HHMM. - для суточных архивов - время, в формате HH.
Как привести к формату DATE_AND_TIME ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Скорее всего проблема в неправильной перестановке байтов Modbus. Проект создавался давно в старом релизе. С того времени перестановка байтов по умолчанию менялась. Необходимо для своего релиза ознакомиться со справкой и привести перестановку байтов в соответствие.
Posted by DimonVLZ (Участник № / Member № 3339) on :
PROGRAM VAR_INPUT D : USINT; END_VAR VAR_INPUT M : USINT; END_VAR VAR_INPUT Y : USINT; END_VAR VAR_INPUT H : USINT; END_VAR VAR_INPUT Mmin : USINT; END_VAR VAR_INPUT Ssec : USINT; END_VAR VAR_OUTPUT String_out : STRING; END_VAR
D := 30; M := 12; Y := 15; H := 3; Mmin := 26; Ssec := 59; VAR_string :=''; VAR_string := D + '-'+ M + '-'+ Y + ' '; VAR_string := VAR_string + H + ':' + Mmin ; String_out := VAR_string + ':' + Ssec; END_PROGRAM
VAR_string - описано как глобальный String на выходе получаем String_out = "30-12-15 3:6:59" если Mmin=0 то String_out = "30-12-15 3::59" - именно квадратик (не опечатка) Результаты получены в 6.06.03 и 6.07.07.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В цитируемом Вами топике приведен "Другой вариант." Полученные каким-либо способом атрибуты даты/времени передайте программно в соответствующие атрибуты канала класса TIME. Этот канал сам преобразует полученные данные в переменную формата Date&Time." Это действительно надежно и достаточно универсально. Если необходимо, можно привязать эту переменную к аргументу типа Date&Time CALL.SQL и передавать время в БД штатным образом.
Posted by DimonVLZ (Участник № / Member № 3339) on :
Возвращаясь к стабильности результатов на версии 6.10 Win 7 x64. тестируем 2 программы. PROGRAM "1" VAR_INPUT D : USINT; END_VAR VAR_INPUT M : USINT; END_VAR VAR_INPUT Y : USINT; END_VAR VAR_INPUT H : USINT; END_VAR VAR_INPUT Mmin : USINT; END_VAR VAR_INPUT Ssec : USINT; END_VAR VAR_INPUT String_out : STRING; END_VAR VAR VAR_string : STRING; END_VAR // Локальная переменная D := 30; M := 12; Y := 15; H := 0; Mmin := 26; Ssec := 0;
VAR_string := D + '-'+ M + '-'+ Y + ' '; VAR_string := VAR_string + H + ':' ; VAR_string := VAR_string + Mmin + ':'; String_out := VAR_string + Ssec; END_PROGRAM
PROGRAM "2" VAR_INPUT D : USINT; END_VAR VAR_INPUT M : USINT; END_VAR VAR_INPUT Y : USINT; END_VAR VAR_INPUT H : USINT; END_VAR VAR_INPUT Mmin : USINT; END_VAR VAR_INPUT Ssec : USINT; END_VAR VAR_INPUT String_out : STRING; END_VAR VAR VAR_string : STRING; END_VAR // Локальная переменная D := 30; M := 12; Y := 15; H := 0; Mmin := 26; Ssec := 0;
VAR_string := D + '-'+ M + '-'+ Y + ' '; VAR_string := VAR_string + H + ':' + Mmin ; String_out := VAR_string + ':' + Ssec; END_PROGRAM
Posted by DimonVLZ (Участник № / Member № 3339) on :
результатом работы "Программы 1" - является строка содержащая дату. результатом работы "Программы 2" - строка VAR_string := VAR_string + H + ':' + Mmin; является сбой Trace Mode IDE приводящей к закрытию среды разработки.