tsap siemens что это
PLCforum.uz.ua
International PLC Forum
[?]: S7-коммуникации TSAP
[?]: S7-коммуникации TSAP
Post by pupena_san » Thu Jul 15, 2010 12:00 pm
Несколько раз в форумах задавался вопрос о S7 коммуникациях, но ссылки толковой я так и не нашел. Из скудной информации, которую выцепил из хелпа сложилась некоторая модель, хотелось бы услышать ответы от специалистов, в частности по TSAP.
1. В локальном TSAP вроде как указывается rack/slot коммуникационного модуля, с которого инициируется связь, а для партнера иногда указывается коммуникационный, а иногда процессорный (даже если канал не встроен в процессорный). Как правильно указывать?
2. Чем приницпиально отличается ресурсы PG от ресурсов OP? Это только серверные ресурсы? Как правильно указывать клиентские ресурсы (например PG тольо с PG, OP только с OP. )? Я так понимаю эти ресурсы имеют смысл только при соединении средств SCADA/HMI и программаторов типа Step7.
3. Возможна ли связь станции одной подсети со станцией в другой посредством S7 соедиений? Заранее спасибо за ответы.
На http://iadt.siemens.ru/forum/ ни одного ответа. Это какая то тайна?
Re: [?]: S7-коммуникации TSAP
Post by CHANt » Fri Jul 16, 2010 11:46 am
Ну и, с обычного ноутбука, используя как PG, можно на любом объекте обращаться к любому объекту из Step7. При чем не обязательно чтобы это был мультипроект, просто загружаешь новый и цепляешься к контроллеру, лишь бы IP ноутбука был в каждом проекте, через ядро СКС и выводит на нужный контроллер.
Программирование ПЛК Siemens на Simatic Step7
Добрый день, хабровчане! Полазив по Хабру, мною было обнаружено всего несколько топиков, в котором упоминалось бы словосочетание «Simatic Step 7». Хочу поделиться с Вами небольшой частью информации, накопленной мною за все время работы с программируемыми логическими контроллерами, и показать, что из себя представляют ПЛК, оболочка и что мне приходилось на них строить.
Данный пост содержит общую ознакомительную информацию о программировании ПЛК Siemens.
Введение
Устроилась я в эту фирму еще на 5м курсе института. К слову, образование мое к программированию относится весьма косвенно и было это больше увлечением. Познания мои на тот момент ограничивались курсом Delphi и весьма базовым Ассемблером. Компания занималась (да и занимается) проектированием, строительством и обслуживанием грузоподъемных машин, таких как погрузчики, портальные, козловые, мостовые и прочие краны. К ГП машинам мое образование имело еще меньше отношения. Поэтому я решила попробовать. 🙂
Программируемые логические контроллеры Siemens
ПЛК фирмы Siemens — это промышленные контроллеры и используются для автоматизации технологических процессов. У нас, в частности, использовались для автоматизации работы грузоподъемных машин.
Simatic включает в себя несколько линеек ПЛК — Simatic S5 и Simatic S7. В свою очередь линейка Simatic S7 содержит семейства S7-200, S7-300, S7-400 и S7-1200.
Чаще всего мы использовали ПЛК семейств S7-300 и S7-400, для которых компанией Siemens было разработано собственное программное обеспечение Simatic Step 7.
Кроме этого, к ПЛК через сеть Profibus подключалось большое количество ведомых устройств, таких как частотные преобразователи, приводы, абсолютные/инкрементные энкодеры и пр.
Вся работа ГП машины по максимуму автоматизировалась и крановщику нужно применять минимум усилий для управления оной.
Что из себя представляет Simatic Step 7?
Главной утилитой является Step 7 — Simatic Manager, которая позволяет производить конфигурацию ПЛК и сетей (утилиты HWConfig и NetPro).
В процессе конфигурации определяется состав оборудования, способы подключения, используемые сети, адреса, выбираются настройки для используемых модулей. Готовая конфигурация загружается в ПЛК, что так же является настройкой оборудования.
Утилиты конфигурации позволяют осуществлять диагностику оборудования, обнаруживать аппаратные ошибки или неправильный монтаж.
ПЛК выполняет команды в порядке, определяемом программой, сверху вниз, затем начинает сначала.
С помощью редактора STL всегда можно посмотреть или отредактировать программы, созданные на LAD или FBD, обратное не всегда возможно.
Я работала с самого начала в STL, пробовала LAD, мне показался слишком непонятным и многие вещи таки не удавалась так просто в нем сделать, как в STL. Плюс еще в том, что при загрузке программы в ПЛК, она компилируется в STL и, соответственно, при выкачке ее из ПЛК на программатор она так же представлена в STL.
Вместо заключения
Программирование ПЛК занятие увлекательное, особенно когда это не стенд, а реальное оборудование.
Моя работа заключалась в создании программы на ПЛК для управления всей ГП машины либо отдельных ее частей, а так же загрузке программного обеспечения непосредственно в оборудование и его отладке.
Случалось разное, но работать с железом было очень интересно, хоть и не легко иногда.
А строили мы вот такие ГП машины:
ПЛК Siemens SIMATIC
Поговорим сегодня про контроллеры, в частности про Siemens SIMATIC S7-1200, их особенности, аппаратные средства, добавление аппаратной конфигурации в Tia Portal.
Siemens SIMATIC S7-1200
Контроллер S7-1200 имеет модульную структуру, представляющую набор различных компонентов.
Центральный процессор CPU
Основой всей системы является процессорный модуль CPU (Central Processing Unit), который отвечает непосредственно за обработку, хранение данных, выполнение программы.
Данное семейство представлено 5 моделями центральных процессоров, различающихся производительностью, количеством входов-выходов, объемом памяти.
115/230 В, дискретными входами 24 В, дискретными выходами релейного типа.
Стоит отметить наличие у всех моделей процессоров встроенного Web-сервера, позволяющего просматривать различную информацию о подключенном контроллере с помощью ПК или смартфона, через обычный Web-браузер.
Можно задействовать ее в качестве внешней загрузочной памяти для процессорного модуля, для обновления встроенного программного обеспечения, для копирования программ во внутреннюю память устройства. Кстати, S7-1500 не имеют встроенной загрузочной памяти и без Memory Card не работают.
Сигнальные модули SM
Также есть сигнальные модули измерения температуры, специально для подключения термопар и термосопротивлений. В частности это модуль SM 1231 Thermocouple для термопар и SM 1231 RTD для термосопротивлений.
Кроме того, могут быть задействованы технологические модули SM 1278 4xIO-Link Master, работающие и как сигнальный модуль, и как коммуникационный. Каждый модуль позволяет подключить до 4 устройств IO Link.
Для работы с тензометрическими датчиками в системах взвешивания, измерения силы и прочих измерительных задачах применяются модули SIWAREX WP231. В отличии от всех предыдущих модулей, он имеет возможность работать как с CPU по стандартной внутренней шине, так и без него, например с HMI панелями, через Ethernet (Modbus TCP/IP) или RS 485 (Modbus RTU). У модуля SIWAREX имеется собственное ПО для настройки и обслуживания SIWATOOL V7, но при этом он может быть легко интегрирован в Tia Portal.
Коммуникационные модули CM
Линейка коммуникационных устройств включает в себя ряд модулей, обеспечивающих обмен данными по сетям:
Модули CM1242-5 (slave) и CM 1243-5 (master) позволяют использовать контроллеры в сетях PROFIBUS DP для построения систем распределенного ввода-вывода. Для S7-1200 возможно подключение до трех таких модулей. Каждый модуль, в свою очередь, способен обслуживать до 32 ведомых DP-устройств (в качестве ведомых DP могут выступать частотные преобразователи, распределительные станции ET-200, контроллеры S7, другие различные устройства).
Модули CM 1241 и платы CB 1241 обеспечивают обмен данными через PtP (Point-to-Point) соединение на основе интерфейсов RS-232 или RS-485 и с поддержкой протоколов Modbus RTU и ASCII, а также USS (Протокол обмена данными между контроллером и приводами серий MICROMASTER и SINAMICS).
Модули CM 1243-2 используются для подключения контроллеров S7-1200 к сетям AS-Interface (Actuator Sensor Interface) в качестве ведущего сетевого устройства. Позволяют подключить к контроллеру до 62 ведомых устройств в сети ASI.
Процессоры CP 1242 и 1243 позволяют интегрировать S7-1200 в системы телеуправления и поддерживают обмен данными через мобильные беспроводные сети GSM и LTE.
Подключение модулей контроллера
Добавление S7 1200 в проект Tia Portal
Если по каким-то причинам вы не можете точно идентифицировать свою модель, то можно выбрать в списке Unspecified CPU 1200 (Неопределенный CPU). Tia Portal сам должен определить вашу модель, главное чтобы контроллер был подключен к компьютеру.
В рабочей области открывшегося окна появится изображение выбранного нами CPU. Что мне например нравится, визуально сделано все реалистично.
Далее, если это необходимо, добавляем модули расширения. Делается это простым перетаскиванием модуля из каталога Hardware catalog на рабочую область.
Таким образом, мы добавили все необходимые модули контроллера в проект. Наша аппаратная конфигурация готова, можно переходить к программной части, но это уже отдельная история.
Односторонние S7-коммуникации в Simatic. Как организовать обмен ПЛК-ПЛК, программируя и загружая только один ПЛК?
S7-соединения, применяемые для обмена информацией между устройствами серии S7-300, 400, 1200, 1500, являются конфигурируемыми. Это означает, что необходимо явно указать устройствам, кто с кем общается. В общем случае эти соединения являются двунаправленными (двухсторонними или же bilaterally), т.е. добавление конфигурируемого соединения происходит для обоих ПЛК, что приводит к необходимости прогрузки обоих ПЛК. Это не вызывает особенных проблем, если оба ПЛК находятся в ведомстве службы АСУТП предприятия, и для обоих ПЛК есть на руках актуальное прикладное ПО. Но встречаются и частные случаи — необходимо наладить обмен между «старым» S7-300 и «новым» S7-1500, причем, исходники старой программы утрачены. Ну, или эксплуатация просто боится трогать ПЛК. Или эксплуатации просто нет, задача организации обмена «висит» на интеграторе «новой» системы, что приводит к предыдущему условию — трогать ППО неизвестной системы никому особо не хочется.
В таких случаях поможет имеющаяся возможность настроить одностороннее (unilaterally) соединение, сделать его активным (то есть, «наш» ПЛК будет инициировать соединение), добавить коммуникационные программные блоки PUG/GET (с другими блоками этот метод не работает, все другие блоки являются двухсторонними) и загрузить только один ПЛК. Будем считать, что информация по содержимому блоков данных у нас хоть как-то сохранилась — либо из документации на систему, либо из описания тэгов SCADA-системы.
Много интересного на тему пишет Герр Бергер:
Hans Berger «Automating with SIMATIC S7-1500», стр. 761
Самое важное: мы задаем S7-соединение только на одном CPU, соединение должно быть «активным» (active side), блоки PUT/GET так же вызываются только на «нашей стороне», connection resource партнерской стороны должен быть задан равным 03. Собственно говоря, ресурс за номером 03 уже мониториться средствами операционной системы контроллера, что и дает возможность применять односторонние S7-соединения.
В качестве «черного» ящика я применяю ET200S CPU, который фактически является контроллером серии S7-300 в корпусе на din-рейку. Про черный ящик мне известны только ip-адрес интерфейса и абсолютные адреса трех вещественных переменных, которые с него необходимо считать.
тэги: DB1.DBD0, DB1.DBD4, DB1.DBD8
В качестве «нашего» контроллера выступает S7-1516, к его прикладной программе и конфигурации мы имеем полный доступ.
В первую очередь добавляем в прикладную программу блок данных, куда мы разаместим результат чтения. Пусть это будет DB13. Не забываем, что при PUT/GET коммуникациях блок данных должен быть «стандартного» доступа.
Далее переходим в Devices & networks.
Нажимаем на кнопку Connections и из выпадающего списка справа от кнопки выбираем S7 connection
Кликаем правой кнопкой по CPU и в выпадающем меню нажимаем Add new connection
У центрального процессора S7-1516 несколько встроенных интерфейсов, поэтому необходимо выбрать тот, к которому подключен наш коммуникационный партнер. В нашем случае это интерфейс X1. Обращаю внимание на Local ID (0x100) — это идентификатор соединения, который потребуется при вызове блока GET.
Ждем Add, закрываем окно и переходим на подвкладку Connections
Задаем ip-адрес партнера
На вкладке Address details задаем rack/slot партнера, его Connection resource оставляем 03. Rack — это номер «стойки», slot — это номер «гнезда», вместе эти параметры «адресуют» CPU в системах Simatic. В нашем случае (как и в подавляющем числе других случаев «классических» ПЛК) эти значения равны 0/2.
Теперь открываем OB1 и добавляем в него функциональный блок GET для чтения данных с коммуникационного партнера.
Заполнять параметры вызова GET можно, как через Properties (организовано все весьма удобно), да и традицонно. Заполним традиционно.
Req — булевая переменная, по переднему фронту которой выполняется запрос данных.
ID — идентификатор соединения, в нашем случае равен 0x100
ADDR_1 — абсолютный адрес читаемой области данных удаленного контроллера, это указатель типа ANY
RD_1 — тут мы указываем, где локально будут складываться считанные даные, и лучше его задать тоже в виде указателя типа ANY. Чуть ниже я объясню, почему.
Для начала прочитаем одну вещественную переменную по удаленном адресу DB1.DBD0.
Немного про страшные символы в поле ADDR_1. Это — указатель типа ANY, позволяет адресовать любую область памяти Simatic. В нашем случае его значение P#DB1.DBX0.0 BYTE 4
DB1 — читаем блок данных с номером 1
DBX0.0 — смещение в блоке данных 0 байт (ну и 0 бит)
BYTE 4 — читаем байты в количестве 4 штук
Таким образом указатель P#DB1.DBX0.0 BYTE 4 соответствует абсолютному адресу DB1.DBD0. Напоминаю, что речь идет про адреса памяти удаленного коммуникационного партнера, о котором в нашем локальном проекте TIA Portal нет никаких данных.
Результат чтения положим в переменную R0 локального блока данных «xEchangeDB».R0 (что в виде указателя ANY выглядит, как P#DB13.DBX0.0 BYTE 4).
Запрос на чтение (тэг Tag_1) я взвожу самостоятельно, сбрасывается он автоматически при завершении коммуникаций. Напоминаю, что запрос выполняется только по положительному фронту на входе REQ функционального блока, поэтому в реальных проектах не забываем взводить/сбрасывать переменную для запроса.
Взведем переменную Tag_1 и посмотрим на результат чтения:
Итого, с удаленного ПЛК прочиталось значение вещественной переменной, равное 666. Именно такую величину я и дал переменной CPU S7-300 до того, как объявить его черным ящиком. Напомню, что пока я читаю только первые 4 байта из блока данных удаленного контроллера. По этой причине мы видим, что переменные R1 и R2 нулевые — они не читались.
Для чтения всех 3 переменных с коммуникационного партнера изменим указатели типа ANY и вызов приобретет следующий вид:
Посмотрим на результат чтения:
Все три переменные считались успешно. Вообще, полезно выставлять флаг успешности или неуспешности коммуникаций на основании выходных переменных вызова GET: NDR — получены новые данных, ERROR — возникла ошибка и STATUS — текущий статус, код ошибки. Не забываем, что эти переменные «живут» только один цикл сканирования программы, и их надо вылавливать и складывать в отдельные переменные, чтобы увидеть. В данном примере этот момент я опускаю.
Для обозначения локального адреса переменных я использую указатель типа ANY, а не символьное представление структуры. По непонятным для меня причинам символьное представление работает для вызова GET (чтение данных с удаленного контроллера), но делает полностью неработоспособным вызов PUT (запись данных на удаленный контроллер). Причем, PUT даже не сообщает об ошибке и никак не реагирует выходом STATUS. Пока не могу объяснить причину такого поведения.
GET предназначен для чтения данных. Для передачи информации (записи) удаленному контроллеру применяем вызов PUT. Предположим, что нам необходимо записать в другой контроллер одну переменную. Пусть это будет та же переменная R0 блока данных DB13. Добавим вызов PUT в программу контроллера.
Изменим значение локальной переменной
После чего выполним запись данных, задав значение переменной Tag_7 равным «1». Ну, а теперь, чтобы все было по-честному взглянем на значение этой переменной в «черном ящике».
Запись данных выполнена успешно. Таким образом, даже не имея на руках исходную программу контроллера, мы можем как считывать с него информацию, так и записывать. Объем данных ограничен и зависит от типа CPU. ЕМНИП, для «трёхсотой серии» посылка ограничена 160 байтами, подробнее можно узнать в документации. Отсутствие необходимости вносить изменения в ППО справедливо лишь для 300ой и 400ой серии, для «тысячников» требуется разрешить доступ к CPU по методу PUT/GET, поставив соответствующую галочку в системных настройках.
Libnodave. Библиотека для доступа к ПЛК Siemens серии S7
Для модераторов:
По мотивам https://www.cyberforum.ru/post2368464.html набивка мануал-факами. Тему или оставить тут или прикрепить или в отдельный раздел, по усмотрению.
Библиотека Libnodave является реализацией путем реверсинжениринга протоколов MPI, S7, ISO-TSAP и других, которые используются при взаимодействии с контроллерами фирмы Siemens. Библиотекой поддерживаются многие MPI и USB адаптеры, а также ProfiNet. Коммуникационные процессоры фирмы Siemens, на платформах отличных от Windows, библиотекой не поддерживаются. На данном этапе модулем обеспечена поддержка протокола ISO-TSAP (ProfiNet) посредством библиотеки Libnodave. Библиотека Libnodave полностью включена в данный модуль и не требует разрешения особых зависимостей как при сборке, так и при исполнении.
Исторически сложилось, что доступ к промышленным контроллерам фирмы Siemens серии S7 (S7-300, S7-400) в сети Profibus производился только посредством собственных коммуникационных процессоров (CP5412, CP5613 и т.д.) и собственного протокола S7. Указанные коммуникационные процессоры и API к протоколу S7 недешевы, кроме того исходные тексты к драйверам и сами API закрыты, и доступны только для платформы Intel+Windows.
Особенность:
• полностью открытая спецификация протокола обмена с коммуникационным процессором
• унифицированный драйвер для всех плат CIF
• наличие драйвера для многих распространённых операционных ОС
• открытость драйвера для ОС Linux (GPL)
В основу данного модуля положен драйвер версии 2.621 фирмы Hilsher, любезно предоставленный фирмой Hilsher в лице Devid Tsaava для ядер серии 2.6 ОС Linux. Все необходимые для сборки файлы включены в модуль и не требуется удовлетворения ни каких специальных зависимостей. Драйвер версии 2.621 для плат CIF можно загрузить здесь.