Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > ПЛК и микроконтроллеры
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

WAGO 750-841 и OPC

 Ответить Ответить Страница  <12345 6>
Автор
Сообщение
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: WAGO 750-841 и OPC
    Опубликовано: 06 Сентябрь 2011 12:08
Тут не принципиально модбас или ОРС. Тут ведь есть ещё алгоритм работы. То есть мне нужен доступ к модулям ввода вывода через PLC, а сверху (модбас или OPC) должны быть всё равно другие переменные. Вопрос в том, что когда я обновляю переменную модуля ввода вывода через указатель, контроллер об этом не знает и не обновляет аппаратные выходы так как "переменная не используется"!

Сейчас через массив пробую...
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 12:17
Переменные обновятся полюбому. Имя переменной - есть только ссылка на ячейку памяти, если вы ячейку изменяете - значение переменной изменить полюбому.
кстати, объявленные переменные привязанные к модулям ввода-вывода будут видны и в ОРС.
и от стальной его груди отскакивают стрелы.
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 12:19
короче говоря, сверху НЕ должны быть другие переменные при использовании CoDeSys OPC.
только если вы будете использовать ВАГО-сервер который платный. тогда надо продублировать переменные в модбас.
и от стальной его груди отскакивают стрелы.
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 13:01
В том то и фокус, что я меняю %QW1, а напряжение на аналоговом выходе не меняется! Так что ничего не полюбому. И CoDeSys предупреждает о неиспользуемых переменных...
Придётся на массивы переходить с указателей, ну это не страшно...
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 14:16
Первоначально опубликовано Petrov

Первоначально опубликовано min

По умолчанию модули ввода вывода ведь отображаются в режиме fieldbus, а мне нужно PLC.
я не понял. как это?
По умолчанию приоритет по записи вообще всегда был PLC. Я даже не поленился это проверить. Так оно и есть. Если поставите любой fildbus то из программы не запишите.
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 14:26
Первоначально опубликовано min

В том то и фокус, что я меняю %QW1, а напряжение на аналоговом выходе не меняется! Так что ничего не полюбому. И CoDeSys предупреждает о неиспользуемых переменных...
Придётся на массивы переходить с указателей, ну это не страшно...
Использование прямых адресов в листинге негативно сказывается на общем психическом состоянии эксплуатации. ИМХО все прямые адреса надо объявлять в глобальных модулях и рабоать с именованными переменными в листингах. Иначе потом оч трудно отслеживать ошибки при изменении карты процесса.
Если городить какой то хитроумный код заточенный на переменный имидж процесса, то от конфигуратора прийдется отказаться. Насколько мне известно у компилятора 3S нет никаких команд позволяющих перепривязывать адреса на лету. Все переменные объявляются жестко в коде. Так что ничего хорошего не выйдет. От OPC обмена тоже прийдется отказаться, так как симаольный файл привязан к конкретному имиджу.
Единственный выход это кейс и избыточное объявление. Но работать с таким кодом будет нервно.
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 14:32
Я для решения проблем масштабирования поступил следующим образом:
Все внешние переменные объявлены в голобальном модуле.
Написан функциональный блок для обработки входного сигнала для каждого типа используемого модуля
Написана на FBD программа опроса где выстроены экземпляры функциональных блоков
Пременные имиджа привязаны по именам к каналам в конфигураторе.
====================
В результате процесс маштабирования превратился в простую операцию больше напоминающую конфигурирование чем процесс програмирования.
Добавляем модуль в контроллер и в имидж
Бросаем функциональный блок нужной платы в FBD программу опроса привязываем входы выходы и загружем. Это выглядит просто и понятно. Все счастливы. никакого избыточного кода.
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 14:55
Я не силён в терминологии, поэтому рассказываю ещё раз.
1.Я отказался от переменного имиджа процесса. Но хотелось бы менять например только константы для учёта разного количества модулей.
2.Каждый выход определённого типа обрабатывается одинаково. Например, каждый дискретный выход управляется двумя битами: 00-выключен, 01-включен, 10-моргает с одной частотой, 11- моргает с другой частотой.
3. Я хочу иметь возможность подключения как с OPC так и c modbus. Как при этом избежать прямых адресов в листинге мне не понятно.
4. В результате есть массивы по каждому типу переменных (AO,AI,DO,DI) которые я обхожу в цикле c выполнением алгоритма. Все массивы лежат или на прямых адресах ввода-вывода или на модбасе. Остальные переменные (переменные цикла и т.д.) локальные. На OPC отображаются имена массивов отображённых на модбас. Всего имён 4 по числу массивов, но OPC их разбивает на отдельные элементы.
5. В XP это чудесно работает и по модбасу и по OPC, а в Win7 модбас работает нормально, а OPC как то через раз, хотя с другими OPC серверами проблем нет.

6.Не очень нравится, что CoDeGen ругается на "множественную запись выхода " у меня в программе и в _global_init, это как бы на что то намекает, но на работу не влияет.

7.А ещё я так и не понял, если работать с вводом выводом через массив, то всё работает, а если через указатель, то из-за "неиспользуемых переменных" на выход ничего не попадает, а соответствующей галочки в настройке проекта не наблюдается.

8.Разбиение на модули (глобальный и FBD) мне пока кажется несколько надуманным, поскольку программа занимает 60 строчек и объявление переменных -30.

Ещё такой вопрос, а нельзя ли параметризовать прямые адреса? Что-то вроде:
VAR CONSTANT
    OFFSET:INT:=4;
END_VAR
   VAR AT %IW(OFFSET*2):INT;
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 17:22
Первоначально опубликовано min

В том то и фокус, что я меняю %QW1, а напряжение на аналоговом выходе не меняется!
и сколько там вольт?
и от стальной его груди отскакивают стрелы.
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Сентябрь 2011 17:23
ах, ссори! не дочитал.
и от стальной его груди отскакивают стрелы.
Наверх
 Ответить Ответить Страница  <12345 6>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz