Парни, подскажите кто много программировал в Тиа сименсы ... Есть проект на cpu 1500 по автоматизации и там с частотников по профинету приходят данные в виде Переменных, тип данных которых создан юзером (UDT) в нем около 20 параметров, включает в себя типы Bool, byte,int(соответственно состояние, готовность, режим,частота и тд) Отправляет на ЧП тоже подобный тип данных, но уже с другими полями, которые нужно нам задать-передать на часотник. В самой логике программы используются локальные переменные FB, которые связываюися как то там с полями UDT. Впринципе стандартно. Так вот если я хочу упразднить эти UDT, по которым через профинет общается ПЛК с частотнтками и просто оставить вместо них (и 20 полей) обычные входа-выхода I и Q / AI и AQ , то что нужно оставить обязательно кроме частоты передаваемой?? Я так понимаю стоп / старт передается через CW контрольное слово?? И можно ли вообще это сделать, стоит ли браться или придется всю программу переписывать?

Комментарии: 43

  1. 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

                          разумеется, там разные конструкции. Но мы же не знаем, у человека откуда два слова то взялось. Что в них было? целое или уже реал

Не нашли ответ?

Вам также может быть интересно