S7-200 создание hmi интерфейса

S7-200 создание HMI интерфейса

Рассмотрим создание HMI интерфейса. Как я уже писал ранее HMI интерфейс может быть реализован на базе панели оператора и на базе компьютера.

Для примера возьмем панель TD200 (она есть в симуляторе и работа с панелями другого типа концептуально одинакова).

В WicroWin запускаем мастер TD200 из вкладки Wizard.

Нажимаем Next и выбираем тип панели на следующем окне.

В окне Localize Display оставляем все без изменений и нажимаем Next.

В окне Standart Menus and Password можно объявить отображать ли время, установить пароль и разрешить ли прямое управление входами выходами (force режим). Отметим везде No и нажмем Next.

На этом окне необходимо задать область меркерной памяти где будут храниться меркеры нажатых кнопок (по дефолту M0 пусть так и останется). Также необходимо выбрать, будет ли нажатие кнопок приводить к установке меркеров или к прямому опросу кнопок из программы. Эта функция поддерживается в панелях с прошивкой новее 2.1. Мы выбираем установку меркеров. И выбираем как быстро опрашивать панель.

На этом окне выбираем сколько символов будет отображаться в сообщении 20 или 40. В случае 20 можно отображать по два сообщения на экране. Отметим, что будем отображать по 20 символов и всего сообщений у нас например 2. Нажимаем Next.

На этой странице будут определяться адреса в которых будут храниться настройки панели и размещения сообщений. Оставляем все по дефолту. Нажимаем Next.

Здесь заполняем первое сообщение. В отмеченном поле показано каким битом будет вызываться это сообщение. В нашем случае V14.7. Нажимаем Next Message для заполнения второго сообщения.

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

В всплывшем окне необходимо указать какой тип данных будет отображаться, положение запятой, будет ли требоваться подтверждение от оператора. Также будет указана ячейка памяти куда класть нужное значение (в нашем случае VW53). Нажимаем OK.

Теперь видим что место зарезервировано (заполнено темно серым цветом). Вызов этого сообщения осуществляется битом V14.6. Нажимаем Next и в следующем окне финиш.

Отлично мы сформировали блок данных под именем TD_DATA_0. Можно его открыть и посмотреть что куда пишется и откуда считывается.

Напишем программу которая по включению входа i0.0 на экран выводится сообщение 1 «message 1», а нажатие кнопки F4 на экране идет подсчет нажатий и отображается значение переменной на экране в строке «count».

Экспортируем программу в awl файл. Теперь необходимо открыть data block под именем TD_DATA_0 и еще раз нажать export. Программа предложит экспортировать Data block в файл типа txt. Соглашаемся и даем имя. Теперь открываем симулятор. Меняем тип процессора на CPU226, нажимаем load program и отмечаем что грузим не только программу но и блоки данных

Нажимаем accept и поочередно подставляем файл awl и вместо файла db подставляем наша txt файл. Нажимаем кнопку включения панели TD200. Произойдет инициализация панели и появится надпись SIMATIC TD 200.

Запускаем контроллер в RUN и включаем вход i0.0. На экране отобразиться наше сообщение message 1.

Нажимая на экране F4 выводим сообщение count с числом подсчитанных нажатий.

Естественно на место переменной VW53 можно подставить любые данные из программы вплоть до величины аналоговых входов.

Теперь рассмотрим создание HMI интерфейса на базе PC с помощью программы Protool. Для начала необходимо установить программы S7-200 PC Access (для создания ОРС сервера) и программы Protool CS и Protool RT.

Программа S7-200 PC Access создает сервер который читает данные из ПЛК и раздает всем потребителям. Он дает возможность подключения к одной SCADA системе нескольких GKR/ Имеет возможность работы через интерфейсы PPI, Ethernet, modem.

Это позволяет использовать в качестве HMI системы не только программы от Siemens (Protool или WinCC) но и даже Exel.

Создадим в программе MicroWin следующую программу.

Если меркер M0.0 равен 1 то и выход Q0.0 тоже равен 1.

Считываем состояние байта IB1 и передаем его в переменную VW0.

Присвоим символьные имена (для чего будет показано дальше).

Сохраняем и компилируем и заливаем проект в ПЛК. Переводим ПЛК в RUN

Запускаем программу S7-200 PC Access.

Встаем на PC/PPI cable и нажимаем File -> Import Symbol и выбираем наш проект MicroWin.

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

Теперь необходимо обязательно сохранить проект ОРС сервера нажав кнопку Save (это необходимо делать всегда при изменении передаваемых параметров в ОРС сервере иначе SCADA система их не увидит несмотря на то, что в Tast Client ОРС сервера они будут отображаться корректно).

 Для проверки связи с ПЛК (или при необходимости узнать состояние передаваемых значений из ПЛК в SCADA систему необходимо встать на необходимый параметр (или на группу параметров) и нажать сначала Add Current Items to Test client. При этом выбранные параметры переместятся в Test Client расположенный внизу.

Состояние bad в колонке Quality свидетельствует об отсутствии связи с ПЛК или об остановленной службе Test Client. Для запуска службы необходимо нажать Test Client Status. Если связь с ПЛК есть и ПЛК находиться в режиме RUN то состояние bad измениться на Good и проявиться бегающий голубой прогресс бар.

Теперь если изменить состояние входов I1 то в переменной VB0 отобразиться его значение.

Теперь когда ОРС сервер настроен и работает можно приступить к созданию SCADA системы.

Можно выключить Test Client Status повторным нажатием на соответствующую кнопку и закрыть S7-200 PC Access. Созданный сервер работает автоматически без загрузки самой программы.

Запускаем Protool CS. Нажимаем File -> New. Откроется окно.

Тут предлагается выбор для чего будет использован текущий проект Protool-а. Видно, что Protool поддерживает огромное количество панелей. Мы выберем просто РС. Нажимаем далее.

В этом окне мы должны задать название нашего рабочего ПЛК и выбрать протокол обмена. Просмотрев список видим что Protool поддерживает ПЛК всех типов и может работать через все доступные коммуникации. Мы выбираем ОРС V6.

0, что означает что мы работаем с ПЛК через ОРС сервер. Нажимаем далее и готово. Открывается окно нашего проекта с экранной клавиатурой (дань возможности использовать тач панели со встроенной Windows CE).

Клавиатуру можно закрыть убрав галочку View -> Keyboard.

Обмен SACADA с ПЛК идет через так называемые тэги “Tag”. Теги могут быть внутренние и внешние. Все динамические элементы HMI интерфейса имеют различные привязки к тегам. С них и начнем. Кликаем два раза по картинке Tags. Откроется окно.

Меняем имя “Name“ на любое удобоваримое. Выбираем тип тега “PLC:” привязанные к ПЛК (выбираем PLC_1) или внутренний (выбираем no Controller). Тип данных int, real bool и т.д. И нажимаем brouse.

В открывшемся окне выбираем обрабатываемый адрес ПЛК из нашего ОРС сервера. Нажимаем “apply items” и OK в следующем окне. Создадим тег типа bool с именем button_1. С его помощью будем менять состояние меркера M0.0. Видим, что появился тег button_1.

 Таким же образом создаем тег port_I1 типа “byte” с привязкой port1_status.

И тег out_Q00 типа bool с привязкой out_1.

Наши теги созданы и можно приступать к созданию экранов визуализации.

Кликаем два раза по иконке “screen”.

 Открывается окно с виртуальным экраном. Снизу есть виртуальные кнопки F1 – F12 и они же с шифтом. На них можно назначить любые действия.

Рисуем на экране кружок

Кликаем два раза по кружку и открываем окно его свойств. Сделаем так, что бы цвет этого кружка менялся в соответствии с состоянием тега out_Q00. Он будет сигнализировать о включении выхода Q0.0 ПЛК.

Для этого переходим на вкладку Attributes и нажимаем кнопку multiplexing. В открывшемся окне из выпадающего тега выбираем тег out_Q00 и нажимаем OK. Выбираем цвет кружка «background» для значения 0 (поле Value) и нажимаем Add.

Видим что у нас появилась запись для состояния 0. Для состояния 1 выбираем цвет “green” и тоже нажимаем Add.

Таким образом мы привязали цвет нашего кружка к состоянию выхода Q0.0 ПЛК.

Создадим текстовое поле в котором будем отображать состояние входом порта I1 ПЛК. В выпадающем поле тегов выбираем port_I1. Тут же выбираем выравнивание в поле и размер шрифта. Нажимаем OK.

Добавим кнопку которая будет менять состояние мекрера M0.0 который управляет выходом Q0.0. Выбираем кнопку. Рисуем ее на эране. В открывшемся окне даем название кнопки «On / Off». Переходим на вкладку Function и из выпадающего списка выбираем OnClick

Из списка доступных действий выбираем EditBit -> InvertBit и нажимаем Add.

И в следующем окне выбираем тэг «button_1» нажимаем ОК.

Отлично. Теперь сохраняем проект и можно запускать на исполнение. Если есть реальный ПЛК или симулятор типа S7200SIM от SUNLiGHT software который может взаимодействовать с WicroWin так и с ОРС сервером.

В этом случае нажимаем кнопку Start ProTool RT.

Запустится Protool RT и после сообщения об установлении связи с ОРС сервером откроется окно нашего проекта в котором будет отображаться состояние входа I1 и будет возможность зажигать светодиод нажатием кнопки.

Вот как это выглядит при соединении с симулятором S7200SIM

Если нет ПЛК и нет симулятора то можно просимулировать только ProTool. Для этого воспользоваться кнопкой Sart Protool Simulator.

Откроется окно где можно будет изменять состояние тэгов и смотреть их состояние.

Ну вот пожалуй и все. На этом цикл статей про ПЛК S7-200 от SIEMENS закончен.

Файлы курса лекций по MicroWin и ProTool:

Прикрепленные файлы:

Источник: http://cxem.gq/promelectr/promelectr14.php

Как соединить S7-1200 с панелью SMART. Часть 2

Панели оператора Smart – это специальная производственная линейка панелей операторов Siemens, предназначенная для использования на азиатском рынке вместе с контроллерами той же линейки S7-200 Smart, а также устаревших и снятых с производства в Германии контроллеров S7-200.

Панели сами по себе очень достойные, всего доступны 6 моделей: 7-дюймовые Smart 700, Smart 700IE V2, Smart 700IE V3 и 10-дюймовые Smart 1000, Smart 1000IE V2 и Smart 1000IE V3.

Модели с постфиксом IE полноцветные (16 бит цветов), работают через интерфейсы RS485 (PPI, Modicon Modbus RTU) и Ethernet, имеют ограничение в 800 тэгов, могут содержать до 200 дискретных аварий. Максимальное количество экранов – 100. У моделей без постфикса IE возможности поскромнее. У моделей IE V3 также есть USB-порт для создания/загрузки backup'ов.

Программируются панели через WinCC Flexible CHINA SP4 или WinCC Flexible Smart V3. Обратите внимание, что выходные файлы этих программ имеют разный формат, формально WinCC Flexible Smart V3 умеет преобразовывать файлы *.hmi от WinCC Flexible CHINA в свой формат, но на практике это не всегда работает.

WinCC Flexible CHINA 2008 SP4 + Update 2 – качаем тут.
WinCC Flexible Smart V3 – качаемтут (поддерживаются только панели Smart)
Инструкцию к WinCC Flexible – качаем тут.
How to connect S7-1200 to Smart line panel?
Как соединить S7-1200, используя дополнительный контроллер S7-200 Smart, вы можете из первой части статьи.Итак, пока я писал коммуникационную программу для S7-200 Smart, оказалось, что всё это “мартышкин труд”, а китайцы уже всё давно придумали. Благодаря китайским поисковикам я отыскал такие устройства (называются они мультифункциональные коммутаторыmultifunctional switches) на их рынке и разослал предложения об их продаже на Aliexpress. Сегодня уже несколько продавцов на этой площадке торгуют такими устройствами, например, Starhead Production, у которых я сей девайс и приобрёл.

Представляет собой данное устройство коммутатор TP Link совмещенное с коммуникационным устройством (виртуальным S7-200) в одном корпусе.

Всего у коммутатора 5 портов, но к пятому порту ничего подключить нельзя (залит клеем) ибо на нём висит то самое коммуникационное устройство (еще одна плата припаянная проводами к пятому порту) . Метод настройки устройства – через веб-интерфейс (т.е.

по сути перед нами подобие управляемого коммутатора). Устройство лишь меняет сообщение запроса от панели к контроллеру, т.е. коммуникационного S7-200 как такого нет, об этом свидетельствует тот факт, что, в случае отсутствия S7-1200, на панели отображаются решётки.

При наличии коммуникационного S7-200 панель бы всё равно принимала какие-то значения, поскольку ячейки памяти коммуникационного процессора были бы ей доступны.

Итак, коммуникационное устройство позволяет одновременно подключать три контроллера S7-1200/S7-1500/S7-300/S7-400 к трём Smart-панелям. Поскольку коммутатор TP Link самый обычный, то его можно расширить за счёт подключения дополнительных коммутаторов. Все контроллеры работают через коммуникационные порты со своими IP-адресами – по одному адресу для каждого подключаемого контроллера. По умолчанию это адреса 192.168.1.10, …11, и …12, через которые можно обращаться к контроллерам с адресами 192.168.1.20, …21, и …22 соответственно.
К областям памяти I, Q и M обращение происходит обычным методом. Под областью памяти V понимается расшаренный в настройках для этих целей дата-блок (от 1 до 7).

Настройка производится посредством веб-интерфейса по адресу 192.168.1.222

Как видим, мы можем изменить MAC-адрес нашего виртуального контроллера S7-200 и его начальный IP 192.168.1.10, остальные два IP будут заданы относительно него. В отличие от IP-адресов виртуального контроллера S7-200, IP-адреса реальных контроллеров не обязательно должны быть взаимосвязаны и задаются каждый отдельно.

В настройках имеется один “косяк”, который продавцы мне обещались исправить в будущих версиях прошивки) – расшаренный блок данных задаётся числами от 0 до 6 (на приведённом выше скриншоте – от 0 до 5, видимо, модели немного различаются).

Но в S7-1200 нельзя создать блок данных DB0, поскольку их нумерация начинается не с 0, а с 1. Так вот оказалось, что заданный в настройках коммутатора DB0 – это на самом деле DB1, а заданный DB1 – это на самом деле DB2 и т.д. Т.е.

номер смещён на 1.

Преимущества такого подключения перед использованием дополнительно контроллера очевидны даже несмотря на высокую стоимость коммутатора (12 тыс. руб по состоянию на конец 2015 года). К сожалению, дороговизна оборудования делает общую цену на использование Smart-панелей вместе с S7-1200 неконкурентноспособным для бюджетных объектов, где дешевле будет установить панели Weintek, для которых к тому же нет необходимости все отображаемые на панели данные запихивать в один дата-блок.
Но если выбор заключается в использовании Smart-панелей и панелей Siemens других моделей, то применение мультифункционального свитча экономически полностью оправдано.

По первому ощущению устройство работает нормально, глюков пока выявлено не было. Проверено на объекте с одним S7-1200 и двумя панелями Smart, опрос производился почти по 700 тегам. Пока единственным недостатком показалась его цена и реализация устройства в корпусе бытового коммутатора TP Link, более логичным было бы поместить устройство в корпус для крепления на DIN-рейке (опять-таки, учитывая цену этого устройства, сравнимую с ценой промышленного коммутатора).

Источник: http://montazhka.blogspot.com/2015/12/s7-1200-smart-2.html

Создание HMI который работает (Часть 1)

Новые передовые практики для разработки интерфейса оператора

Ввиду интереса к статье о High Performance HMI, сел за перевод, показавшейся мне интересной статьи. Сегодня публикую первую часть, остальное по мере готовности перевода.

Введение

В 6:20 вечера 20 января 1992 года Airbus A32 взлетел из Лиона, Франция, выполняя регулярный перелет в Страсбург. Полет шел гладко до момента, когда экипаж приготовился к снижению. Когда экипаж запрограммировал угол снижения «-3.

3» в блок управления полетом (БУП), они не обратили внимание на то что БУП был в режиме вертикальной скорости, а не в режиме угла полета. Для БУП в неправильном режиме, значение «-3.3» означает скорость спуска 3300 футов (1006 м) в минуту, вместо нужного значения в 800 футов (244 м) в минуту.

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

Среди прочих официально названных как причины трагедии, упоминается интерфейс оператора:  «достаточный в обычных ситуациях, но не обеспечивающий необходимые предупреждения экипажа, находящегося в ловушке ошибочной ментальной репрезентации… Дизайн увеличивает вероятность некоторых ошибок в использовании, особенно во время повышенной нагрузки»

Вторая половина дня 23 марта 2005 года, Техас-Сити, НПЗ компании BP в Техасе был сотрясен серией взрывов, когда дистилляционная колонна для изомеризации углеводородов переполнилась и послала гейзер жидкости в воздух, произведенное облако легковоспламеняющихся паров было быстро воспламенено от стоящего на холостом ходу автомобиля. Пятнадцать рабочих погибли и 180 ранены. Выбиты окна в домах в радиусе 1,2 км.

Исследовательский совет по химической безопасности и рискам США (U.S. Chemical Safety and Hazard Investigation Board  — CSB) потратил почти два года на расследование несчастного случая.

Их заключительный доклад привел ряд причин, включая недостаточную подготовку, несоблюдение процедур безопасности запуска, неточный инструментарий, плохое обслуживание, и «плохо разработанная компьютеризированная система управления, препятствующая способности операционного персонала определить ситуацию переполнения колонны»

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

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

Человеческая ошибка?

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

Это просто человеческая ошибка со стороны операторов, или же отчасти виноваты операторские интерфейсы? Чаще неэффективные или вводящие в заблуждение Человеко-Машинные Интерфейсы (HMI) приводятся в качестве причин промышленных аварий.

Страсбургский Airbus и BP-Техас-Сити были стихийными бедствиями, которые стоили жизни. Если ваш завод или процессы не так опасны, почему вы должны заботиться о том, является ли ваш операторский интерфейс хорошим? Почему вы должны тратить деньги, чтобы изменить HMI, на который никто не жалуется и кажется, что он будет работать должным образом и возможно на протяжении многих лет?

Значение изменений

Консорциум управления нештатными ситуациями (Abnormal Situation Management Consortium – ASM), группа компаний и университетов, занимающихся обработкой нештатных ситуаций в индустрии управления процессами, отслеживает авиа-происшествия и другие несчастные случаи глобально, по мере их появления в средствах массовой информации. В 2012 г. они описали более чем 1000 инцидентов.

В то время как всего несколько случаев привели к взрывам и смертям, все из них являются дорогостоящими с точки зрения задержек, снижение качества или повреждения оборудования. Исходя их исследований, консорциум ASM оценил, что нештатные ситуации обходятся 3-8% от оборота каждый год. От трех до восьми процентов это значительные расходы для любого бизнеса.

Вот что можно сделать улучшением HMI:

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

Одно исследовательское тестирование ASM-утвержденного отображения против традиционного интерфейса на высококачественном симуляторе процессов обнаружило, что операторы, используя утвержденные отображения:

Источник: http://cleverhouse.club/software/dispatch/sozdanie-hmi-kotoryiy-rabotaet-chast-1.html

Как подключить панель Weintek к ПЛК Siemens S7-300/ET200S (Ethernet)

Руководство по соединению с ПЛК

Siemens S7-300/ET200S (Ethernet)

Поддерживаемые серии:: Siemens S7-300 Ethernet Series PLC, модуль Ethernet CP-

343-1, CPU315-2 PN/DP, CPU317-2 PN/DP, CPU319-3 PN/DP и ET200S.

Website: http://www.siemens.com/entry/cc/en/

Настройки панели (HMI):

ПараметрыРекомендуемые значенияВариантыПримечания
Тип ПЛК SIEMENS S7-300/ET200S (Ethernet)
Интерфейс Ethernet
Номер порта 102
Номер станции ПЛК 1 0-31

Адреса устройств:

Bit/WordТип 
устройстваФорматДиапазонОписание
B I DDDDo 0 ~ 40957 Input (I)
B Q DDDDo 0 ~ 40957 Output (O)
B M DDDDo 0 ~ 40957 Bit Memory
B DBnBit FFFFDDDDo 0 ~ 409699997
B DB0Bit-DB99Bit DDDDDo 0 ~ 655327 Data Register Bit
W IW DDDD 0 ~ 4095 Input (I)
W QW DDDD 0 ~ 4095 Output (O)
W MW DDDD 0 ~ 4095 Bit Memory
DW MD DDDD 0 ~ 4094 Bit Memory Double Word
W DBn FFFFDDDD 0 ~ 40969999 Data Register (должен 
быть четным)
DW DBDn FFFFDDDD 0 ~ 40969999 Data Register Double Word (должен быть 
кратным 4)
W DBn_String FFFFDDDD 0 ~ 40969999
DW DBDn_String FFFFDDDD 0 ~ 40969999
W DB0 ~ DB99 DDDDD 0 ~ 65532 Data Register (должен 
быть четным)
Byte MB DDDD 0 ~ 4095 Bit Memory Byte
Byte DBBn FFFFDDDD 0 ~ 40969999 Data Register Byte

– Двойные слова и значения с плавающей запятой должны использовать тип устройства – 
DBDn.

Как импортировать Тэги:

Программа «SIEMENS STEP 7» позволяет создавать файлы тэгов определяемых 
пользователем (*.dif и *.AWL) и импортировать эти файлы в: 
EasyBuilder8000/EasyBuilderPro -> System Parameter Settings
Далее описан порядок создания и импортафайлов этих двух типов:

1. Создание файла «*.dif»

a、 В “Symbols” создайте тэг определяемый пользователем (user-defined tag:

b、 Нажмите Export , чтобы экспортировать редактированный файл и нажмите Save.

2. Создание файла «*.AWF» 
a、 В Blocks создайте элементы (items), как показано ниже:

b、 Откройте: LAD/STL, FBD – Programming S7 Blocks, нажмите File -> Generate 
Source.

c、 Выберите Sources в качестве пути сохранения, укажите имя файла и нажмите OK.

d、 Выберите объекты для экспорта и нажмите OK.

e、 В Sources должны быть имена сохраняемых файлов. Выберите Export Source 
чтобы создать файл « *.AWL».

Созданные файлы « *.dif» и «.AWL» могут быть импортированы в 
EasyBuilder8000/EasyBuilderPro > System Parameter Settings, нажатием кнопки 
Import Tag.

Информация о Тэгах успешно импортирована:

Схемы соединений: 
Прямое соединение (перекрестный кабель – crossover):

HMI RJ45 папа Цвет провода ПЛК RJ45 папа
1 TX+ Белый / Оранжевый 3 RX+
2 TX- Оранжевый 6 RX-
3 RX+ Белый /Зеленый 1 TX+
4 BD4+ Голубой 4 BD4+
5 BD4- Белый/Голубой 5 BD4-
6 RX- Зеленый 2 TX-
7 BD3+ Белый/Коричневый 7 BD3+
8 BD3- Коричневый 8 BD3-

Соединение через коммутатор:

HMI RJ45 папа  Цвет провода ПЛК RJ45 папа
1 TX+ Белый / Оранжевый  1 TX+
2 TX- Оранжевый 2 TX-
3 RX+ Белый /Зеленый 3 RX+
4 BD4+ Голубой 4 BD4+
5 BD4- Белый/Голубой 5 BD4-
6 RX- Зеленый 6 RX-
7 BD3+ Белый/Коричневый 7 BD3+
8 BD3- Коричневый 8 BD3-

Версия драйвера:

ВерсияДатаОписание
V2.10 May/21/2011 Добавлены регистры: 
MB & DBBn

Источник: http://weintek.by/index.php/tekhnicheskaya-podderzhka/chasto-zadavaemye-voprosy/19-%D0%BA%D0%B0%D0%BA-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C-%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C-weintek-%D0%BA-%D0%BF%D0%BB%D0%BA-siemens-s7-300-et200s-ethernet.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}