WAGO 750-841 и OPC |
Ответить | Страница <12345 6> |
Автор | ||
Новичок Присоединился: 03 Сентябрь 2011 Online Status: Offline Публикации: 22 |
Опубликовано: 06 Сентябрь 2011 12:08 |
|
Тут не принципиально модбас или ОРС. Тут ведь есть ещё алгоритм работы.
То есть мне нужен доступ к модулям ввода вывода через PLC, а сверху
(модбас или OPC) должны быть всё равно другие переменные. Вопрос в том,
что когда я обновляю переменную модуля ввода вывода через указатель,
контроллер об этом не знает и не обновляет аппаратные выходы так как "переменная не используется"!
Сейчас через массив пробую... |
||
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
||
Переменные обновятся полюбому. Имя переменной - есть только ссылка на ячейку памяти, если вы ячейку изменяете - значение переменной изменить полюбому.
кстати, объявленные переменные привязанные к модулям ввода-вывода будут видны и в ОРС.
|
||
и от стальной его груди отскакивают стрелы.
|
||
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
||
короче говоря, сверху НЕ должны быть другие переменные при использовании CoDeSys OPC.
только если вы будете использовать ВАГО-сервер который платный. тогда надо продублировать переменные в модбас.
|
||
и от стальной его груди отскакивают стрелы.
|
||
Новичок Присоединился: 03 Сентябрь 2011 Online Status: Offline Публикации: 22 |
||
В том то и фокус, что я меняю %QW1, а напряжение на аналоговом выходе не меняется! Так что ничего не полюбому. И CoDeSys предупреждает о неиспользуемых переменных...
Придётся на массивы переходить с указателей, ну это не страшно... |
||
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
||
|
||
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
||
Если городить какой то хитроумный код заточенный на переменный имидж процесса, то от конфигуратора прийдется отказаться. Насколько мне известно у компилятора 3S нет никаких команд позволяющих перепривязывать адреса на лету. Все переменные объявляются жестко в коде. Так что ничего хорошего не выйдет. От OPC обмена тоже прийдется отказаться, так как симаольный файл привязан к конкретному имиджу.
Единственный выход это кейс и избыточное объявление. Но работать с таким кодом будет нервно.
|
||
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
||
Я для решения проблем масштабирования поступил следующим образом:
Все внешние переменные объявлены в голобальном модуле.
Написан функциональный блок для обработки входного сигнала для каждого типа используемого модуля
Написана на FBD программа опроса где выстроены экземпляры функциональных блоков
Пременные имиджа привязаны по именам к каналам в конфигураторе.
====================
В результате процесс маштабирования превратился в простую операцию больше напоминающую конфигурирование чем процесс програмирования.
Добавляем модуль в контроллер и в имидж
Бросаем функциональный блок нужной платы в FBD программу опроса привязываем входы выходы и загружем. Это выглядит просто и понятно. Все счастливы. никакого избыточного кода.
|
||
Новичок Присоединился: 03 Сентябрь 2011 Online Status: Offline Публикации: 22 |
||
Я не силён в терминологии, поэтому рассказываю ещё раз.
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; |
||
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
||
|
||
и от стальной его груди отскакивают стрелы.
|
||
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
||
ах, ссори! не дочитал.
|
||
и от стальной его груди отскакивают стрелы.
|
||
Ответить | Страница <12345 6> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |