8

S7-1500, Группа Pointers, References

Появилось желание потыкать более подробно ПЛК 1500 серии от Siemens. И немного разобрать что там интересного есть, как с этим работать и понять для чего это надо. И первыми под небольшой обзор попала такая группа данных как pointer(указатель), которых в s7-1500 аж 4 вида. Сейчас хочу быстро пробежимся по каждому и немного поработать с References

Типы данных в ПЛК.
Начнем с теории. Типы данных - определяют свойства данных, например, размер в памяти или их представление. У Siemens есть:
Элементарные типы данных(bool, int, real, char)
Сложные типы данных (DT, String, Array, Struct)
UDT - типы определяемые пользователем
УКАЗАТЕЛЬ
Тип параметров
Системные типы данных
Типы данных оборудования
Ну и если с верхней частью списка все более менее понятно, исходя из начальных уроков по программированию. То где-то с указателей начинается магия. Однако все не так просто.
Немного об оптимизированном доступе

У контроллеров S7-1200/1500 имеется возможность оптимизированного
хранения данных. В оптимизированных блоках, все теги автоматически
сортируются по их типу данных. Данный метод позволяет минимизировать
промежутки между тегами, таким образом такие теги оптимизированы по
времени доступа для процессора.
(c)Базовое системное руководство  11/2015Руководство по программированию
S7-1200/S7-1500
И теперь если просто, то в оптимизированном блоке нет доступа по адресу. Там происходит магия, данные сортируются так как надо, теперь тебе не надо играть в тетрис, когда у тебя все бинарные значения должны быть в конце. Но от этого мы получаем новые виды указателей.

УКАЗАТЕЛИ
В данную группу входят следующие ребята:
- References
- VARIANT
- POINTER
- ANY
Для наглядности где какие указатели могут быть использованы вне 1500 контроллеров ловите табличку.

References
References - это тэг, который указывает на область памяти. вы указываете тип данных, на который он ссылается, является безопасным по типу. Гарантируется, что либо она принадлежит к конкретному типу данных, либо ей присваивается NULL.
References у нас указывают только на конкретный тип и могут быть прочитаны или записаны через разыменовывание. ТОЛЬКО ДЛЯ ОПТИМИЗИРОВАННЫХ БЛОКОВ,
VARIANT
Это тэг, который указывает на различные типы данных, но не может указывать на экземпляры. Операнд типа данных VARIANT не занимает места в блоке данных экземпляра или в рабочей памяти. Однако он будет занимать место в памяти ЦП.

Тег типа VARIANT - это не объект, а ссылка на другой объект. Отдельные элементы типа VARIANT могут быть объявлены только для формальных параметров в блочном интерфейсе функции в разделах VAR_IN, VAR_IN_OUT и VAR_TEMP. По этой причине его нельзя объявить в блоке данных или в статическом разделе интерфейса блока функционального блока, например, потому что его размер неизвестен. Размер объектов, на которые имеются ссылки, может измениться.
(с) Перевод гуглом справки от Сименса
Ну и много других вещей. Вот тут уже можно себе выстрелить немножко в ножку, но радует, что мы не можем просто читать и записывать Variant.
POINTER
Еще указатель. Занимает 6 байтов. Может хранить данные о тэге.
1)Номер DB
2)Память в ЦПУ
3)Адрес тэга
Работает лишь со стандартным доступом, не работает с оптимизированным. Ну и еще область определения. В функциях - это InOut, а в функциональных блоках - это везде за исключением TEMP, а UDT - только InOut
ANY
Указывает на начало области данных и содержит ее длину. Занимает 10 байт памяти.
Может содержать:
1)Тип данных элементов
2)Количество элементов
3)Номер БД
4)Область памяти ЦП, в которой хранятся элементы
5)Начальный адрес данных в формате «байт.бит»

ПРАКТИКА
Начнем с референсов)) Объявить данный тип мы можем в FC,FB,OB, но в разных частях интерфейса
- FC: Input, Output, Temp, Return
- FB: Temp
- OB: Temp
Объявление происходит конструкцией REF_TO, присваивание значений командой REF();

А дальше мы пойдем немного усложнять задачи. И чуток поработаем в связке VARIAN и REF. Придумаем себе несуществующую задачу, которая гласит, что у нас есть функция, на вход которой могут подаваться различные UDT.
В нашем случае следующего вида:

И нам надо записать туда значения. в случае udt_2pointж 5.0, а в случае udt_3point -4.

Из всего что написано выше, что стоит понять функция TypeOf - возвращает тип тэга Variant.
Конструкция ?= пытается присвоить REF тэг Variant. Так как это слегка удобнее. Если присвоение провалилось, то тэг REF будет NULL.

Теперь на вход подаем udt_2point.

Тут должен быть примерно какой-то вывод, но в целом даже подобную конструкцию можно использовать для создания какого-нибудь максимально универсального блока с проверкой типов данных и относительной безопасностью.

Лига КИПиА

47 постов549 подписчиков

Правила сообщества

Правила - в соответствии с общими правилами Пикабу.

0
Автор поста оценил этот комментарий

Его называет производитель "программируемым реле" но по факту это простенький ПЛК. Для чего угодно, без наворотов и цена от производителя такая, что можно позволить его даже себе домой в качестве управлялки всякими штуками типа насосов и котлов. Станки с циклограммами типа гильотин или прессов - да пожалуйста. Короче, штука в своем сегменте очень заходит асушникам. У меня лично таких два всего, но смотрел на ютубе каналы, там они на этих ПР автоматические котельные делают и с наворотами типа вайфая и управлением с планшета. Никто не говорит, что они лучше сименса, но - цена и простота работы. А на сименс перейти больно после такого.


И ладно цена. На Али есть куча китайских клонов сименса, например от фирмы amsamotion, собрал себе опытный стенд вот прям на кухне для испытания всяких программ, ладно, мой главный ЦПУ в сборке это типа 224XP s7-200, он обошелся мне в 6 тыр рублей без доп. модулей. Модуль езернет к нему - еще 5 тыр. Модуль расширения портов - около 4 тыров.

А рядом лежит китайский клон от того же мицубиши FX. Езернета нет, но портов вдвое больше, дружелюбная среда разработки и стоит 3,5 тыра. Да, он не расширяемый. Но есть там и расширяемые. И сборка стенда на FX мне выйдет в 2-3 раза дешевле, чем на сименсе. Но у меня на работе сименс, вот поэтому я и купил клон.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Даже есть два 485, что радует. Пожалуй стоит обратить внимание
0
DELETED
Автор поста оценил этот комментарий
У меня есть пара вопросов.
1.С чего стоит начать изучение программирования ПЛК. Имеется 1500 контроллер, очень хочется научиться работать с ним.
2. Знания по программированию Сименса будут как-то полезны при работе с другими производителями или там все по новой нужно учить.
3. Есть ли вообще что-то общее в программировании ПЛК и допустим написанию сайтов или баз данных. Не разбираюсь в этом направлении.
4. По возможности конечно если есть какая-то литература то вообще огонь
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

1)Я буду рассматривать ситуацию с минимумом финансовых завтрат. Это для начала стоит прочитать гайдлайн для работы с TIA Portal и найти курс от Сименса. Этого вполне хватит программировать ПЛК.

2)Фундаментальные знания будут полезны. Но версии языков плюс функции зависят от среды разработки и производителя. Не все ПЛК поддерживают все языки МЭК.

3)Ничего общего. Хотя в последнее время есть тенденции на вливание чистого IT в сферу промышленного программирования.

4)Есть. Можешь написать на почту info@engcore.ru я тебе скину.


P.S. Это все исключительно субъективное мнение на основе собственного опыта.

показать ответы
0
Автор поста оценил этот комментарий

Мне ПР102 вообще очень нравятся. В любой шкаф стараюсь их закладывать, как резерв хотя бы.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Надо будет обратить на них внимание)

2
Автор поста оценил этот комментарий

Не совсем в тему plc, но из песни слов не выкинешь, как говорится. Доводилось работать с LOGO? Более всратой web-визуализации я не видел нигде. Ближайший «одноклассник» это ПР102 от Овна, и он уделывает LOGO по всем статьям - больше портов, легче интеграция.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

С программируемыми реле пока не сталкивался.

показать ответы
0
Автор поста оценил этот комментарий

Нет, не оставим, извините. S5 у меня на производстве много где стоит, работает практически круглосуточно. Модернизация - а зачем? Тут даже вопрос не в цене новых контроллеров, а во времени простоя оборудования. Сутки простоя - до 5 млн убытка (несданный план). Эт на одной линии. А их десятки штук. Тиа портал штука нужная, но в старые ПЛК не умеет. Или умеет?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Все на том же сумасшедшем предприятии из рассказов? Ну с модернизацией понимаю полностью. С другой стороны когда-нибудь все это накроется и уже нечем заменить если в зипах пустота. А что касается в TIA то он в старые не умеет. 300/400/1200/1500

показать ответы
1
Автор поста оценил этот комментарий

На самом деле, никто не ругает особо Сименс. У них хорошее оборудование, качественное и надёжное. Просто некоторые их решения сделаны откровенно через жопу.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да у всех есть и плюсы и минусы. Кому что привычней. Но если есть примеры с удовольствием почитаю)

показать ответы
0
Автор поста оценил этот комментарий

Ну....Step5 под DOS еще запустите корректно. А если получилось - ну ка попробуйте в нем что-то сложнее логики автоматов сделать. Можно. Но пиздец какой неочевидный инструмент. Я это даже не к срачу, какой ПЛК лучше, ну просто сименс это такой

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Давай мы возьмем тогда для обсуждения TIA Portal c 15 по 17. А вот весь архаизм, который был до моего рождения мы оставим там где он и должен быть - в музее.

показать ответы
3
Автор поста оценил этот комментарий

Наверное, потому что может. Серию S5 знаете? Ну так вот это пиздец в плане "быстрого входа" и вообще программирования. Хотя на аппаратном уровне там почти все чинится. А есть мицубиши FX и другие, они довольно просты в изучении, и тоже сильно наворочены. У Сименса порог вхождения выше, наверное это связано с тем, что сименс не только оборудование продает но и платные семинары и все такое. Хуже сименса в этом плане (проприетарность) наверное только шнайдер, но это не точно.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это сказка из серии "Каждая лягушка хвалит свое болото". S5 стало S7, Step и WinCC слились в TIA Portal. А срачи на тему какой ПЛК лучше я читаю каждую неделю в чатике. Так что это больше кто к чему привык.

показать ответы
0
Автор поста оценил этот комментарий

Ох, любит Сименс всё усложнять.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Почему?
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества