SIEMENS, DF&PD

Предыдущее посещение: Вт июн 28, 2016 15:14 Текущее время: Вт июн 28, 2016 15:14

Часовой пояс: UTC + 3 часа




 [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Циклический триггер
СообщениеДобавлено: Вт мар 27, 2012 22:17 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Прошу совета, как поступить.

Сначала лечим симптомы:
К примеру типичная ситуация, на странице @PCS7Typicals. На одно из полей навешивается не прямая связь с тегом, а скрипт, который увязывает поле tagname (в котором хранится имя переменной) с окончанием сигнала.
В общем навесили скрипт. А обновлять?

Имя-то будущей переменной мы не знаем и остаётся 2 выхода. Либо циклический триггер, либо переменная, инвертируемая раз в нужный такт в глобальном скрипте.
В 1-м случае живем спокойной (относительно, ибо опрос раз в секунду может нагрузить систему, а раз в 2 с запаздывает отображение) жизнью, но на каждой странице, где имеется экземпляр подобного объекта со страницы @PCS7Typicals, при сохранении начнет выдавать предупреждение о циклических триггерах, как отключить не знаете ли?
В случае 2-м получается изврат одним словом.

Симптомы, как лечить, понятно, а болезнь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 28, 2012 7:11 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Вс фев 26, 2006 21:44
Сообщения: 1688
Откуда: Липецк, ОАО "НЛМК"
Ипользовать прямую связь с тэгом, если надо - с префиксами. Не?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 28, 2012 15:08 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Данная проблема появилась из-за того, что внешние теги, получаемые по OPC, передаются в недостаточном объеме и такие параметры как комментарий, размерность, формат выводимых данных, лимиты и т.д. заведены во внутренних тегах. В виде:
<Имя внешнего тега>_Internal.<Имя параметра>

Экземпляры объектов, представленных на странице @PCS7Typicals заводятся как раз для внутренних тегов, т.е. ко всякому параметру, Который я забиваю в шаблоне будет добавляться приставка _Internal, которой у внешнего сигнала, конечно же нет.

Сейчас в голову пришла мысль использовать косвенную адресацию, у меня для каждого объекта заведены резервные внутренние переменные, которые можно привязать в прямую на выходные параметры, получаемые из внешнего источника. В этих внутренних тегах в качестве значения будут указаны имена внешних параметров.

Единственное, что плохо, сколько внешних тегов заводится в систему, стольким же количеством внутренних тегов их надо дублировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический триггер
СообщениеДобавлено: Ср мар 28, 2012 15:38 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7508
Откуда: Украина
Piterskiy писал(а):
Симптомы, как лечить, понятно, а болезнь?

Вы не задумывались, почему не надо "лечить" библиотечные иконки блоков, а Ваши самодельные - надо?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 28, 2012 15:58 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Будь у меня все сигналы в проекте контроллерные вопросов бы не было. Назначалась бы прямая адресация на контроллерный тег.
Я писал, что проблема проявляется из-за OPC тегов, которых в проекте 3/4 (остальные контроллерные), это накладывает свою специфику, для них приходится создавать внутренние переменные. И конечно же владея PCS7 и визардами хочется ощутить блага цивилизации и создавать по образу и подобию контроллерных блоков, блоки OPC.
И эти блоки я бы не стал называть самодельными, они частично адаптированы под текущий проект.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 28, 2012 16:31 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7508
Откуда: Украина
Piterskiy писал(а):
И эти блоки я бы не стал называть самодельными, они частично адаптированы под текущий проект.

Выходит, плохо адаптированы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 28, 2012 19:35 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Eugene1974
Моя система работает, но мне не нравится как, я спрашиваю совета как сделать лучше, зачем засорять тему.

В итоге решил делать через косвенную адресацию, как описано в сообщении выше. Если будут идеи, как сделать лучше буду благодарен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 29, 2012 12:16 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7508
Откуда: Украина
Экран @PCS7Typicals содержит различные варианты иконок блоков, которые автоматически вставляются (и привязываются к блокам программы PLC) на соответствующие экраны визуализации при операции "Create/update block icons". Иконки, вставляемые на экраны вручную, берутся с экрана @Template, но они снова-таки связываются с блоками программы PLC при помощи специальной панели инструментов. Каким образом теги, которые поступают в WinCC от OPC-сервера, можно увязать с иконками, которые заточены под другое? Вот это меня и удивило.

Цитата:
И конечно же владея PCS7 и визардами хочется ощутить блага цивилизации и создавать по образу и подобию контроллерных блоков, блоки OPC.

Недостающие теги создаются для того, чтобы добиться единообразия с блоками PCS7. Это понятно. Кстати, зачем добавляется суффикс "_Internal"? В случае штатного использования для каждого визуализируемого блока автоматически создаются структурные теги. С OPC-тегами структуры не получится - не понятно как задавать адреса и смещения. Вручную тег с точкой внутри создать не получается. Короче говоря, одни засады подводные камни.
Стоит ли игра свеч? Как оно всё работает - тоже непонятно.

P.S. Чтобы тема засорялась по минимуму и на вопросы появлялись ответы, формулируйте свои вопросы конкретно и подробно. Вы же даже версию PCS7 не указали...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 29, 2012 19:56 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Eugene1974 писал(а):
Иконки, вставляемые на экраны вручную, берутся с экрана @Template, но они снова-таки связываются с блоками программы PLC при помощи специальной панели инструментов.

Что ещё за панель инструментов, Вы имеете ввиду интерфейс блоков?

По аналогии с PCS7 блоками, я создал блок OPC, увязал только необходимые параметры (точнее, их окончания), создав структуру из внутренних тегов. Блок разместил на странице @PCS7Typicals, даже не на @Template, хотя можно было и там. Здесь всё понятно.

Перекинул экземпляр этого блока в прямую на мнемосхему, там к окончаниям параметров дописал тег-префикс (внутренний ККС сигнала с добавкой _Internal). Размножил блок через linking tags.

Т.к. внешних параметров в моей системе не так много (из ~400 OPC-тегов) 95% имеют 2 параметра, 5% - 4 параметра на каждый блок, один из которых битовый регистр, при разбиении которого все равно без скрипта не обойтись; то внешние теги изначально были загнаны в класс меньшинства, и к ним динамически с циклом 1-2 секунды, в зависимости от важности параметра циклическим триггером (вот как раз на эту тему был изначально вопрос) будет прицепляться к имени ККС (без _Internal) окончание сигнала.

И всё прекрасно работает, во время разработки системы Step7+WinCC, я намучился с добавлением и размножением динамики. Прошёл путь от создания групп, к Customized Object (далее по тексту CO) и далее прямой дорогой к faceplate-type (единственное, не считая VBA решение, позволяющее хотя бы централизованно добавлять поля, чёрт там с тем, что свойства кидаются в одну вкладку и их нельзя никак группировать, чёрт там с динамикой, которую приходится навешивать вручную на каждый объект после добавления полей, но это по-крайней мере лучше, чем изменять CO, накладывать динамику, удалять все однотипные объекты, растаскивать этот CO и далее через linking tag.... у меня в проекте было 8000 тегов и не было PCS7, вот где я познал всю объектно-ориентированность Сименса *скобка закрывается*) , тут у Сименса наверное фантазия закончилась и потому у меня долгое время наблюдался когнитивный диссонанс, когда слышал про разработку панелей управления - faceplate, а думал про faceplate-type.

Eugene1974 писал(а):
Недостающие теги создаются для того, чтобы добиться единообразия с блоками PCS7. Это понятно. Кстати, зачем добавляется суффикс "_Internal"? В случае штатного использования для каждого визуализируемого блока автоматически создаются структурные теги. С OPC-тегами структуры не получится - не понятно как задавать адреса и смещения. Вручную тег с точкой внутри создать не получается. Короче говоря, одни засады подводные камни.

Про штатное использование я вообще молчу, будь тут чисто PCS7, повторюсь во 2-й/3-й раз система вообще идеальная, можно за короткие сроки сделать вполне вменяемый проект и потом изображать кипучую деятельность. Но, тут не оБ том.
_Internal, я создаю только ПОТОМУ, что Siemens не даёт возможности создавать блоки с одинаковым тег префиксом, если есть уже экземпляр структурного тега с таким именем. Только поэтому _Internal. Если есть другие способы, извольте поделиться.

Eugene1974 писал(а):
Стоит ли игра свеч? Как оно всё работает - тоже непонятно.

Как работает, я Вам постарался объяснить.
Игра стоит свеч хотя бы потому, что можно навешивать динамику только лишь на странице @PCS7Typicals, вызывать визард и она заводится на всех мнемосхемах.
Есть подводные камни их два.
1. Это циклические триггеры в скрипте где склеивается имя внешнего тега мы не можем в явном виде указать имя тега по которому вызывать данный скрипт.
Но в случае, когда на экране до 20 OPC-блоков, ежесекундный циклический вызов не является смертельным, хотя слово циклический вызывает несварение.
*С другой стороны, тот же Upon change точно также опрашивает раз в секунду и ничего живём как-то.
2.Ежесекундная склейка имени внешнего тега. Тут, кажется, можно что-то придумать. К примеру, по открытии мнемосхемы инвертировать бит, который будет являться единственным триггером, на срабатывание в определённом поле блока однократного скрипта, который через Linkinfo привязывает на выходное значение этого блока внешнюю переменную. Как Вам такая идея?
*Правда, при попытке привязать поле Analog Extended (точно не помню название), то поле которое есть только в PCS7 версии WinCC, так вот при его привязывании через LinkInfo, стиль Analog Extended (fill pattern, заливка) становился заштрихованным, как при обрыве связи с источником внешнего сигнала.

Версия PCS7 v.7.1 SP3.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 01, 2012 21:29 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Прошло 2 месяца.
Теперь я не питаю надежд и иллюзий насчёт визарда, который был создан для апдейта контроллерных тегов, я хотел накрутить к нему собственно ручно созданные блоки, которые бы обновлялись для не контроллерных тегов (а именно ОРС-тегов). В общем эта затея провалилась. А почему, да всё из-за структурных тегов, которые как костыль живут в 7й версии (не знаю, чего уж с ними там в версии 8й).

Тем, кому интересна данная тема небольшой ликбез.
Чем хороши структурные теги, задаёшь структуру, хочешь переименовать какой-нибудь её элемент или изменить тип поля, запускаешь надстройку Excel и меняешь сплошняком для всех экземпляров структурного тега, то что пожелаешь, удобно? - Да. Без экселя этого сделать не получится, пока существует хотя бы один экземпляр структуры, WinCC не позволяет вносить изменения в саму структуру.

А теперь о грустном. Структурный тип жёстко прописывается, т.е. создав структуру, добавить в неё новый элемент не получится, даже из Excel. Т.е. сделали структурный тип:
XQ01 аналоговый сигнал
#comment комментарий
XM26 регистр состояния
VHRANGE - верхний диапазон измерения
VLRANGE - нижний диапазон измерения

Создали экземпляры структуры с именами, к примеру:
20VHG01DF001
01GHD05FS010

Получили теги
20VHG01DF001.XQ01
20VHG01DF001.#comment
20VHG01DF001.XM26
20VHG01DF001.VHRANGE
20VHG01DF001.VLRANGE
То же для 01GHD05FS010

Так вот, если захотите добавить новый элемент структуры, Вам этого сделать не удастся. Если, кто из старожил знает, напишите, будет интересно. Хотя к ним "структурам" я больше не вернусь.

Для чего нужны структуры, конкретно для PCS.
На странице @PCS7Typicals. Для всех контроллерных тегов параметры блоков прописываются следующим образом, на поле Output Value (Dynamics) вешается к примеру ".XQ01".
Видите точку, это вообще отдельная песня. Если её не будет "XQ01", значит при запуске Визарда "Update picture object" (как-то так называется), не будет производиться привязка префикса тега (к примеру 20VHG01DF001) к полям объекта, т.е. будет "XQ01", а должно бы быть "20VHG01DF001XQ01", если точка стоит, то всё ок, будет "20VHG01DF001.XQ01".
Т.е. нужна точка, отсюда и вылезают структурные теги. С точкой в имени WinCC тег создать не даст, а без него не работает визард, который бы хотелось, чтобы работал, для чего?
Ну хотя бы для того, чтобы привить минимальную ООП в Сименс, который в этом смысле безнадёжно отстал от мировых тенденций десятилетней давности.

В итоге как сделал я. Использовал Faceplate type (появляется начиная с WinCC v.7.0), теги без точки (т.е. 20VHG01DF001XQ01) и глобальные скрипты на параметры в объектах.

Это был не лёгкий путь, надеюсь мне удастся сэкономить пару месяцев исканий начинающим разработчикам.

Вообще форуму не хватает добротного FAQ'а, есть только вопрос-ответ, а этого зачастую недостаточно.

я закончил


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2012 9:11 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7508
Откуда: Украина
Так ли часто требуется менять имя элемента структуры или добавлять/удалять элементы из неё? Неудобство возникает только тогда, когда структурные теги создаются непосредственно в WinCC. Если это блоки данных программы PLC, переменные которых затем в виде структурных тегов передаются в WinCC (так устроен в частности PCS7) - никакой проблемы нет.
И не понятно, чем точка не угодила? Префикс тега - всего лишь строка, которая добавляется спереди для получения полного имени. И будет ли префикс заканчиваться точкой или имя тега начинаться с неё- какая разница, результат то будет один и тот же?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2012 20:47 
Не в сети
Известный Писатель

Зарегистрирован: Вт апр 19, 2011 11:50
Сообщения: 207
Цитата:
Так ли часто требуется менять имя элемента структуры или добавлять/удалять элементы из неё?


Пока на моей памяти в начале разработки проекта, пока нет толкового ТЗ, такое случается с высокой периодичностью.

Цитата:
Неудобство возникает только тогда, когда структурные теги создаются непосредственно в WinCC. Если это блоки данных программы PLC, переменные которых затем в виде структурных тегов передаются в WinCC (так устроен в частности PCS7) - никакой проблемы нет.

Речь именно о тегах, создаваемых в WinCC. То, что создаётся на нижнем уровне не вызывает нареканий.

Цитата:
И не понятно, чем точка не угодила? Префикс тега - всего лишь строка, которая добавляется спереди для получения полного имени. И будет ли префикс заканчиваться точкой или имя тега начинаться с неё- какая разница, результат то будет один и тот же?

Я не спорю - системный визард спорит. Там и так пришлось извратиться, чтобы заставить весь этот костыль работать. В защиту Сименса можно сказать, что я не видел, чтобы Сименс в явном виде упоминал эту функцию для обновления НЕ контроллерных переменных.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group