Парни, подскажите кто много программировал в Тиа сименсы ... Есть проект на cpu 1500 по автоматизации и там с частотников по профинету приходят данные в виде Переменных, тип данных которых создан юзером (UDT) в нем около 20 параметров, включает в себя типы Bool, byte,int(соответственно состояние, готовность, режим,частота и тд) Отправляет на ЧП тоже подобный тип данных, но уже с другими полями, которые нужно нам задать-передать на часотник. В самой логике программы используются локальные переменные FB, которые связываюися как то там с полями UDT. Впринципе стандартно. Так вот если я хочу упразднить эти UDT, по которым через профинет общается ПЛК с частотнтками и просто оставить вместо них (и 20 полей) обычные входа-выхода I и Q / AI и AQ , то что нужно оставить обязательно кроме частоты передаваемой?? Я так понимаю стоп / старт передается через CW контрольное слово?? И можно ли вообще это сделать, стоит ли браться или придется всю программу переписывать?
Комментарии: 43
Aleksandr
Нужно оставить то, что используется в программе. Возможно вы не только записываете, но и читаете параметры, которые далее используются в программе.
Abc
Да, нужно оставить все как есть, просто боюсь что начну это делать, а потом выяснится что ,простой заменой тегов не обойдется и легче новый проект написать по аналогии Или среди программистов это ок-за неделю переписать какой то проект на 5-6 ПЛК и hmi?
Aleksandr
Ну либо при урезании параметров чтения/записи и переходе на аналог/дискрет, так же вырезать их контроль во всех участках программы. Проект может быть на сотню строк, а может быть на десяток тысяч.
Abc
А вот это уже сложнее, навигация в тиа по переменным странная какая то , через поиск или через cross-reference не всегда показывает все, просто одно упоминание какое-то в блоках дает и выяснить привязку , да даже расположение в DB, приходится только вручную ..
Aleksandr
Не показывает, если не ошибаюсь, только указание выхода FB напрямую, если к нему не привязана переменная. Во всех остальных случаях кросреференс работает прекрасно.
Abc
Ну да показывает локальную переменую на выходе из этого FB ,а к чему она там привязана в UDT уходящем например -не понятно....надо смотреть вручную, может есть какие то ещё инструменты навигации...
Aleksandr
Если к ФБ привязана структура(udt) целиком, то внутри ФБ все будет видно, что и куда в структуру записывается или читается. Скрины кидайте, проще будет объяснить
Abc
Спасибо! Да, скину мб завтра если упрусь лбом
Abc
Вот например в первом же FB, который перемещает данные из какого-то другого блока в область тегов. Нажимаю на сам тэг и его кроссреференс , чтобы выяснить откуда он приходит, но выдает только тот FB в котором я его и нашел. Тоже самое ввожу адресацию %DB в поиске-нет результата. Пробую через Go to перейти к point of use-пишет нету такой. Как в итоге по подобным адресам и переменным перемещаться, кроме как не в ручную
Aleksandr
Так он может нигде больше и не записываться в программе, а получать свои значения по сети. На что вероятно и указывает имя DB
Abc
Да, вы абсолютно правы насчёт %IB528 это очевидно в теги уходит и дальше, а %DB13.DBB28 его я не могу найти ни по переменной , по поиску....
Aleksandr
Так я как раз про dbb28 говорил
Abc
Хм,а где посмотреть какоезначение по сети он получает и получает ли,вы не помните? ото подобные переменные и адреса висят и что с ними делать и как менять непонятно
Yuriy
он может писаться внутри FB через UDT. Референс надо по UDT делать.
Aleksandr
Для примера. Переменная из DB тоже только читается на этом ПЛК и нигде не пишется, потому что я задаю ее значение на другом плк посредством PUT. Как вариант. Но судя по названию DB и по тому что это не optimized DB, думаю все таки прилетают по сети значения
Yuriy
запросто и по сети. по номеру DB. до тега тогда не добраться.
Abc
А как различить optimized db от простой?
Aleksandr
У простых вы видите адресацию переменных, включенных в нее. Ну или можете посмотреть в свойствах DB.
Yuriy
в вашем случае этот DB простой. да и в операциях PUT GET оптимизированные DB нельзя использовать.
Abc
Пардон, немного не понял. При создании db можно выбирать Global или же они создаются как instance db к FB, а как тогда создать самому optimazed db? И в свойствах тоже указано лишь global/или принадлежащий к fb
Yuriy
при создании глобального в свойствах ставится галочка оптимизирован или нет. Если не оптимизирован, то у него идет абсолютная адресация, у оптимизированного адресации нет. инстанс DB для FB сами создаются при объявлении FB у них так-же в свойствах можно галочку убрать или поставить. и да.. Сименс рекомендует использовать оптимизированные блоки, они меньше памяти ПЛК занимают и скорость доступа у них выше.
Abc
Он именно так и делает. Нашел я этот DB он прямо в шапке (то есть там глобальные переменные я так понял) и в нем UDT чисто....а как референс по UDT делать если даже не знаешь имя этого UDT, выходит в ручную надо искать ?....
Anonim
Требуются сотрудники для покраски деревьев. Все нюансы – в личные сообщения.
Abc
Нет ,все проще эта db13 она в шапке и содержит глобальные переменные типа UDT Деревья в смысле структура данных?
Aleksandr
Тогда да, ищите целиком структуру, а не отдельный ее элемент
Anonim
Набежали
Aleksandr
Ещё можете в поиск вбить P#db13 и посмотреть так, может где-то через GET данные забираются.
Abc
Да, действительно все так спасибо вам , но кросс референс нажав правой кнопкой не получается запустить в самом FB для этого UDT, иными словами нужно будет в имя заходить вырезать UDT Название после точки и по нему совершать поиск???? А кросс референс наверное никак ?.. Спасибо, это полезно будет! вот это я сейчас и сделаю
Yuriy
кросс надо из DB запускать, так работает нормально.
Abc
Ща чекну Реально есть
Yuriy
всетаки по сети..
Abc
То есть он с другого контроллера принимает данные UDT класса.заморожено будет искать
Yuriy
в данном случае этот ПЛК является инициатором отправки данных. раз в секунду. другой ПЛК с тем-же успехом может в этот что-либо слать.
Yuriy
имя UDT - это DB_name.Var_UDT.
Anonim
Ну да, ну да. А косвенную? А команда "open DB" в STL?
Aleksandr
Open db это что?
Jury
магия stl. Открыть конкретный DB как локальный, чтобы не писать вначале его номер и удобненько бегать по нему
Aleksandr
Спасибо. STL для дедов, не изучал
Jury
Тогда и преобразование не очень то нужно) не изучайте. Конкуренция меньше, зарплаты выше
Aleksandr
На счёт зарплат не уверен:)
Anonim
Да похрен. Не все деньгами мериется, у "стариков".
Anonim
Порядок Битов у dint и real разный. Можно открыть доки и убедиться.
Jury
разумеется, там разные конструкции. Но мы же не знаем, у человека откуда два слова то взялось. Что в них было? целое или уже реал