воскресенье, 25 декабря 2016 г.

Программируемое реле против ПЛК на примере Siemens LOGO vs S7-200

Недавно был у меня спор с одним товарищем (монтажником) по поводу программируемых реле, их отличий от ПЛК и т.п. В общем-то закончилось всё предсказуемо, во-первых, тем, что нет строго определения "программируемого реле", поскольку понятие "контроллер" слишком широкое и включает в себя и программируемые реле тоже. Во-вторых, надо выбирать оборудование в зависимости от решаемой задачи. Нет смысла переплачивать тысячи долларов за какой-нибудь дорогой ПЛК, если можно купить дешевле, долларов за 500, равно как и нет смысла покупать программируемое реле за 10 000 рублей то, что не позволит быстро и эффективно решить задачу, которую можно решить с помощью ПЛК за 20 000 рублей.

В этой статье я хочу рассказать о некоторых нюансах при программировании наноконтроллера (программируемого реле) Siemens LOGO! Сравнивать его я буду с микроконтроллером Siemens S7-200, который стоит вдвое дороже, но при этом имеет гораздо больше функций. Контроллер S7-200 был снят с производства в Германии в конце 2012 года и формально заменён на линейку S7-1200. Однако, сравнивать LOGO! с S7-1200 не имеет смысла, поэтому сравним всё же с S7-200, к тому же в Китае их по прежнему производят, и своей актуальности они не потеряли. Я здесь не буду описывать что-то невероятное для LOGO!, например, сложные математические операции, которые запросто можно осуществить на S7-200. Остановимся на булевой алгебре, т.е. на том, что можно осуществить на языках LAD и FBD, представленных в обоих рассматриваемых контроллерах. Я не использую язык FBD с некоторых пор, поэтому примеры будут только на LAD и, дополнительно, на STL (STL или обобщённое название IL - Instruction List - аналог языка Ассемблера, только для ПЛК), который есть в S7-200.

Адреса я буду писать в формате для S7-200, а в фигурных скобках после них - те же адреса для программы для LOGO!.

Многократное присвоение

Главная проблема LOGO! - невозможность многократного присвоения значения одному и тому же элементу в разных частях программы.

Например, у нас имеется три дискретных входа: I0.1 {I1}, I0.2 {I2}, I0.3 {I3}, по которым срабатывает авария. И есть вход I0.7 {I7} для подтверждения аварии. Бит аварии храним в V0.1 {SF001}.

Напишем программу на Step-7/MicroWIN на языке STL (IL) для S7-200:

 Переведём эту программу на LAD для того же S7-200:

А теперь попытаемся изобразить нечто подобное на LOGO!


На первый взгляд проблем нет. Но мы видим явные отличия от программы для S7-200. Заключаются они в том, что у нас нет возможности создать несколько блоков с названием SF001 и для каждого из них производить операции присвоения (S) и сброса (R). Вот для S7-200 мы как раз могли сделать их все вместе, получив программу вида:

LD I0.1
O  I0.2
O  I0.3
S  V0.1, 1
LD I0.7
R  V0.1, 1

Она работала бы как мой пример для LOGO!, но нам этого как раз не нужно, нам, наоборот, нужно присваивать значения одному и тому же элементу в разных частях программы. На LOGO! мы этого сделать так просто не можем (т.е. теоретически можем, но такую программу будет невозможно нормально просматривать и редактировать), поэтому придётся изворачиваться. Для начала создадим переменные, которые будут отвечать установку бит SF001. Для I1, I2 и I3 это будут биты SF002, SF003 и SF004 соответственно.


Теперь, по идее, нужно по битам SF002, SF003 и SF004 установить бит SF001. Но и тут есть нюанс, а заключается он в том, что поскольку установленный бит SF001 сбрасывает любой из битов его устанавливающих, то LOGO! не даст вам создать такую программу.


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


Задействовав промежуточный бит M1, мы решили задачу.

Чтобы понять, насколько больше стало бы кода, напишим программу в таком виде на STL для S7-200:

Знаете, что такое "китайский код"? Это вот он самый.

Таймеры

Казалось бы, уж таймеры в программируемом реле должны быть коронной фишкой. Ну, например, есть не самый удобный способ установки бита и его сброса по таймеру в ПЛК S7-200:

Пришлось написать 8 строк кода и задействовать два таймера для простейшей, казалось бы вещи: по одному и тому же биту I0.1 устанавливать с задержкой в 1 секунду бит M0.1, по нему же с такой же задержкой сбрасывать тот же бит.

Попробуем воспользоваться стандартной функцией On-/Off-Delay...




 ...и получаем совсем не то, что хотели. Т.е. первоначально бит устанавливается с задержкой 1 секунда. Но впоследствии, если сигнал I1 пропадает (меньше, чем установленная на выключение 1 секунда), а затем снова появляется, то T001 всё равно сбросится в 0 на некоторое время, которое будет проходить между тем, как таймер на выключение досчитает, а таймер на включение ещё нет. Зачем нужен такой элемент как On-/Off-Delay - мне не понятно.

Попробуем другой способ, задействуем On-Delay (T002) и Off-Delay (T001):


Опять ничего не вышло. Дело в том, что T002 и T001 не должны быть одновременно включены, согласно нашей логике, а именно так оно и получается, поскольку Off-Delay не включается при выключении входа (с паузой), как нам надо, а просто включается вместе с включение входа, а при его выключении с паузой выключается.

Такой способ тоже ничего не даст:

 
В итоге, прекращаем заниматься ерундой и реализуем по аналогии с S7-200:
 

Короче говоря, никаких преимуществ перед S7-200 мы не увидели, а нашли лишь пару ненужных функций.

Итог: если вам надо реализовать управление контроллера безопасности (Safety Controller), управление системой загазованности или простейшей насосной станцией, то программируемое реле вполне можно использовать. Но достаточно, казалось бы, небольшого усложнения задачи, и потребуется уже нормальный ПЛК. Я бы не рекомендовал рисковать. Лучше купить китайский S7-200, чем долго и упорно мучиться с LOGO! (которые, кстати, уже несколько лет в Германии тоже не делают, а делают всё в том же Китае).

суббота, 24 декабря 2016 г.

Как запрограммировать Siemens LOGO! 8

Тут столкнулся с такой проблемой: в LOGO! версии 8 есть порт Ethernet, но нет старого-доброго порта для подключения фирменного кабеля LOGO!. На месте порта, куда раньше он втыкался, расположен порт для разъёма подключения флеш-карты Micro SD.

Попытка запрограммировать порт через интерфейс Ethernet привела к ошибке. Причём, само устройство в сети определяется.


Но дальше дело не идёт, вылазит ошибка следующего содержания:

Some network environment changes are detected. Restart LOGO!Soft Comfort to apply changes


В сети интернет были найдены предположения, что всё дело в настройках сетевой карты, мол, надо их сбросить через коммандную строку, а кто-то говорит, что всё дело в кракозябрах, которые могут находиться в строке с названием выбираемой сетевой карты. Следуя этим советам, я и переустанавливал драйвера, чтоб название сетевухи отображалось в Logo SoftComfort без кракозябр, и сбрасывал настройки неоднократно, - ничего не помогло.

Закончилось всё тем, что я просто выбрал в выпадающем меню "Interface"->"Connect throught" не Ethernet, а Dinamic DNS, ввёл туда вручную 192.168.0.1 (этот IP мне выдал поиск, когда я выбирал интерфейс "Ethernet"), и было мне счастье.
Поствил версию SoftComfort 8.2.0 вместо 8.0.0 - та же история, также только через Dynamik DNS получилось залить программу.

По умолчанию требуется пароль. Пароль: LOGO
Если пароль не подходит (программа ругается, что пароль неправильный), то возможно, что нужно обновить версию LOGO! SoftComfort. Например, такое наблюдалось с версией 8.0, пароль "LOGO" не подходил, а при установке версии 8.2 пароль подошёл. Из явных отличий версии 8.2 от 8.0 - наличие пункта меню Factory Reset (заводской сброс), что актуально для контроллеров LOGO, не имеющих собственного дисплея.

Обновления LOGO! SoftComfort по ссылке. Обновления не являются полноценными программами и устанавливается поверх предыдущей версии SoftComfort.

P. S.> Есть интересный момент: в интерфейсе для подключения можно выбирать не только Ethernet, но и кабель LOGO!, тот самый, через которые подключаются предыдущие модели. Вот только по факту такого разъёма на LOGO! 8 физически нет. Замечательная история ))

P. S. 2> Касательно заливки программы через флешку microSD. На флешку записывается откомпилированный файл проекта с расширением .bin. В Logo SoftComfort странным образом реализовано создание этого *.bin-файла. Компиляция вызывается через обычное сохранение файла (File->Save As), где надо поменять тип сохраняемого файла на бинарный - bin. Возможность сохранять в такой тип файла появляется только для программ, написанных на языке FBD, поэтому если пишите на LAD, то перед компиляция в бинарный файл нужно конвертировать проект в FBD:
Интересно, что первая попытка прошить бездисплейный Logo! таким способом не увенчалась успехом - оказалось, что при сохранении bin-файла нельзя менять стандартное имя этого файл LOGO_U_P.bin, иначе Logo! его игнорирует при включении питания и программу с него не забирает.

Как стереть абсолютно всё с ПЛК S7-200 Smart

Есть слот Micro SD в контроллерах S7-200 Smart. На эти флеш карты можно записывать  команды, например, сброса контроллера (почему его не реализовать в MicroWin Smart - непонятно).

Но сброс, действительно, нужен, например, если контроллер запоролен под завязку, т.е. запрещает вообще всё, что можно. Для сброса контроллера в таком случае нужно взять Micro SD флешку, создать на ней текстовый файл S7_JOB.S7S с текстом внутри: RESET_TO_FACTORY.

Чтобы произвести сброс, надо выключить ПЛК, вставить в него флешку, включить ПЛК, через пару секунд он начнёт моргать - значит, всё готово, можно выключать, флешку вынимать, контроллер к использованию готов.

четверг, 8 декабря 2016 г.

Заказные номера и размеры панелей Siemens Smart Line

Заказные номера

Smart 700   v1: 6AV6 648-0AC11-3AX0

Smart 700IE v2: 6AV6 648-0BC11-3AX0

Smart 700IE v3: 6AV6 648-0CC11-3AX0

 

Smart 1000   v1: 6AV6 648-0AE11-3AX0

Smart 1000IE v2: 6AV6 648-0BE11-3AX0

Smart 1000IE v3: 6AV6 648-0CE11-3AX0

 

Габаритные размеры

Размеры панелей v3 (из инструкции): 

Размеры панелей v1 и v2 (мои измерения):

7":

габариты: 213 х 158.5

задняя часть: 197 х 136.8

в т.ч. верхняя выступающая часть: 197 х 109.8

дисплей: 155.5 х 88

10":

габариты: ??? х 221.6

задняя часть: 257.8 х 199.7

в т.ч. верхняя выступающая часть: 257.8 х 178.1

дисплей: 223 х 133.2

Характеристики панелей Smart v3 


среда, 7 декабря 2016 г.

Частные случаи ПИД-регулирования

В процессе применения ПИД-регуляторов выявляются некоторые его недостатки. В этой статье я рассмотрю 2 случая, которые не удавалось реализовать посредством обычного цифрового ПИД-регулятора.



1. Регулировка при высокой инерционности

Задача: осуществлять ПИД-регулирование температуры жидкости внутри ёмкости путём подачи теплоносителя в рубашку данной ёмкости. 



Регулирующий механизм – клапан на трубопроводе теплоносителя, расположенный в относительном отдалении от ёмкости. Регулируемый параметр – температура в ёмкости.

Температура теплоносителя в рубашке ёмкости неизвестна. Температура теплоносителя не регулируется.


Основной проблемой являлась инерция. Она изначально присутствует в системе, причём, в таком виде, что её даже теоретически нельзя преодолеть настройкой регулятора (температура внутри ёмкости всегда будет значительно превосходить уставку).



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

Решение: по мере приближения текущего значения к заданной температуре принудительно уменьшать уставку. На новую уставку должны влиять одновременно и старая (оригинальная) уставка, и температура теплоносителя.

Формула:




Коэффициент K2 рассчитывается через K3 – коэффициент, задаваемый в процентах, который устанавливает конечное значение уставки. Это такое значение, которому будет равна рассчитанная уставка в момент, когда она будет достигнута (т.е. когда будет выполняться условие Tтек = Tзд.н).




2. Управление редуцирующим клапаном, установленным перед главным регулирующим клапаном

Задача: осуществить ПИД-регулирование давления газа после редуцирующего клапана, после которого утсновлен регулирующий клапан (перед ёмкостью, в которой измеряется давление)

.

Регулировка давления клапаном перед ёмкостью отдельно не рассматривается, но известно текущее и заданное давление после этого клапана, известен также процент его открытия. 

Рассматриваемый редуцирующий клапан служит для предварительного понижения давления в трубопроводе. Поскольку величина давления перед ним значительно превосходит заданную величину давления в ёмкости, он в большей мере влияет на конечное давление в ёмкости, чем клапан, установленный непосредственно перед ней. 


Осуществление отдельного регулирования каждым из клапанов приведёт к тому, что смысл использования И-составляющей при управлении клапаном перед ёмкостью потеряет всякий смысл, а Д-составляющую для этого клапана придётся значительно завышать на случай резкого повышения давления после редуцирующего клапана.

Решение: при расчёте ПИД-регулятора, управляющего редуцирующим клапаном, корректировать уставку давления газа после этого клапана таким образом, чтобы она зависела от текущего процента открытия регулирующего клапана перед ёмкостью, от изменения давления в ёмкости, а также от предыдущей рассчитанной уставки.

Формула (рекуррентная):
 



1. Расчёт выполняется при условии, что P1 – P1(пред) > 0, т.е. давление в ёмкости увеличивается. Если это условие не выполняется, то Pзд.н.1 = Pзд.1

2. Знак +/– определяется, исходя из:



3. Pзд.н.1 не должно быть меньше 0 и больше, чем Pзд.1


пятница, 14 октября 2016 г.

S7-1200 и скоростные счётчики (HSC)

Некоторое время назад возникла необходимость подключить энкодеры к S7-1200. В результате обнаружились некоторые нюансы в работе импульсных входов S7-1200 для подсчёта входных импульсов.

1. Выходные сигналы энкодера


Энкодеры генерируют 3 выходных сигнала. Использовать в программе можно от 1 до 3 сигналов в зависимости от задачи.

1 сигнал. Фаза А или Фаза B.

Использование 1 сигнала означает простой подсчёт импульсов, каждый фронт (переход с 0 на 1 входного дискретного сигнала будет означать появление нового импульса). Нет разницы какой сигнала использовать, фазу А или фазу B.

2 сигнала. Фаза А + Фаза B.

Два сигнала необходимы, чтобы не только определить количество импульсов, но и направление вращения. Т.е. второй сигнал смещён на 90 градусов относительно первого, если рассматривать возникновение импульсов как вращение. А на дискретных входах второй сигнал повторяет первый, но возникает на половину периода раньше или позже и заканчивается соответственно. Зная, какой сигнал (Фаза А или Фаза B) возникает раньше при повороте двигателя в ту или иную сторону, можно определить направление вращения.

3 сигнала. Фаза А + Фаза B + сигнал сброса Z

Третий импульс (референтная метка) служит для того, чтобы определить начальное положение. Поскольку оно является нулевой точкой, то этом положении счётчик импульсов сбрасывается. Поэтому он называется в S7-1200 просто сигналом сброса (reset input)

 

 2. Дискретные входы контроллера S7-1200


Контроллер может использовать максимум 18 дискретных входов для функций скоростных счётчиков, что включает в себя 14 дискретных входа на самом контроллере и 4 входа на плате 6ES7 221-3AD30-0XB0.
Максимальное количество счётчиков - 6 штук. Входы деляться на три группы:

1. 200 кГц, 4 DI (плата 6ES7 221-3AD30-0XB0)

2. 100 кГц, 6 DI (I0.0 - I0.5)

3. 30 кГц, 8 DI (I0.6 - I1.5)



Принцип следующий: чем больше входов используется для счётчиков, тем меньше остаётся возможностей использовать более скоростные счётчики, т.е., например, вы используется плату для подключения импульсных сигналов 200 кГц, но при этом собираетесь считать все три максимально возможных импульса (A, B, Z). Таким образом, у вас остается только один незадействованный канал на 200 кГц. Нь если считать импульс по одному каналу, то можно делать это отдельно для четырёх разных энкодеров.

3. Настройка входов в TIA Portal


Настройка довольно-таки проста, в Device Configuration дважды щёлкнуть по контроллеру, далее в разделе General ищем пункт High Speed Counters, тут настраиваем каждый счётчик (HSC1 .. HSC6).

Подпункт Function:  
Type of Counting задаёт, что мы будем считать (количество импульсов или их частоту). 



Operating phase устанавливает, сколько мы задействуем фаз (т.е. нужно ли нам знать направление вращения). 


Установка "A/B counter" в пункте "Operating phase" деалет возможным учёт направления движение и, соответственно, производит подсчёт импульсов в плюс и в минус относительно текущего значения. Установка "Two phase" позволяет прибавлять к текущему значению счётчика при фронте на одной фазе и отнимать от текущего значения при фронте на другой фазе.
 
Подпункт Reset to initial value: опция Use external reset input устанавливает импульсный вход сброса (Z).

Чтобы вручную сбрасывать счётчик импульсов, необходимо использовать функциональный блок (FB) CTRL_HSC. Вызов производится через экземплярный DB:
"CTRL_HSC_DB"(HSC := "Local~HSC_1", CV := true, NEW_CV := "SP_New_CV");
где
CTRL_HSC_DB - экземплярный DB,
Local~HSC_1 - это "Local~" наименование скоростного счётчика
SP_New_CV - это значение, на которое сбрасывается счётчик

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

Для каждого выбранного DI автоматически указывается его разрешающая способность (Гц).

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




Подпункт I/O Addresses: вот тут и хранится то самое значение счётчика. Start address - это адрес в области памяти I. 

 
Забавно, что именно I память используется для этих целей. S7-1200 и так отличился, в отличие от S7-200 его аналоговые входы/выходы пронумерованы в одной области с дискретными (в S7-200 AIW0 и I0.0 не пересекались, например). А тут ещё и скоростные счётчики втиснусь. Я рекомендую использовать такое простое разграничение: 

I 0.0, I0.1, I0.2... - для DI, 
IW 500, IW502, IW504... - для аналоговых входов модулей контроллера
IW 900 и IW902 - для аналоговых входов самого ПЛК
ID 1000, ID 1004... - для скоростных счётчиков.

При использовании контроллера CPU1215C я бы рекомендовал также отделять адреса аналоговых выходов ПЛК (QW 900,..) от ан. выходов модулей (QW 500,..), поскольку это упрощает замену контроллера 1214C на 1215C и наоборот. 

Далее, если значение измерялось в частоте (frequency), то его необходимо перевести в понятные единицы в зависимости от энкодера (т.е. имп/сек разделить на имп/об, в результате имеем об/сек).

 

НЮАНСЫ.


Ну, вот всё вроде ясно и понятно... было бы, если бы не пара нюансов.

1. В интернете полно информации, которая может вас ввести в заблуждение. Это информация о старых моделях контроллеров S7-1200, у которых назначение каждого DI для скоростных счётчиков было строго расписано.


К современным моделям контроллеров (прошивка 4.х) это всё отношения не имеет. Подробнее для старых моделей можно почитать тут.

2.Следует иметь ввиду, что энкодеры выдают сигналы разного напряжения. Плата 200 кГц существует в двух вариантах: для 5 В и для 24 В. Но на самом контроллере входы 100 кГц предназначены только для напряжения 24 В.
У ПЛК CPU1217C последние 4 входа, рассчитанные на частоту до 1 МГц, рассчитаны на напряжение 1.5 В.

P. S. Некоторые иллюстрации и материалы взяты из этой статьи.

воскресенье, 3 апреля 2016 г.

Постоянное требование установщика в Windows 8 перезагрузить компьютер при установке TIA Portal

На Windows 8 недавно возник косяк при установке TIA Portal - несколько раз установщик просил перезагрузить компьютер, но после перезагрузки ничего не менялось - запрос на перезагрузку повторялся снова и снова. На сайте Microsoft описаны какие-то обновления с исправлениями, которые нужно установить, иные же сайты предлагают чего-то там менять в реестре в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager, предлагают отредактировать ключ PendingFileRenameOperations, короче говоря, дают кучу бесполезных советов никак на установку TIA Portal не влияющих. А нужно сделать всего одну простую вещь - удалить этот раздел Session Manager из реестра и всё. Если до этого уже была произведена перезагрузка, то после удаления раздела ещё раз перезагружаться не надо, можно смело продолжать установку.

Update 2022. Один комментатор написал, что достаточно удалить из раздела Session Manager только сам ключ PendingFileRenameOperations. Тогда, в далёком 2016 году, когда я устанавливал TIA Portal v13 на Windows 8, такой способ не проканал. Т.е. я этот параметр редактировал, потом удалил - ничего не помогало, пока не удалил весь раздел. Возможно, что с более новыми версиями портала ситуация иная.

суббота, 27 февраля 2016 г.

Особенности коммуникации S7-1200 разных моделей с панелями оператора

Недавно я столкнулся с такой проблемой: на предприятии был установлен контроллер S7-1200 DC/DC/DC 214-1AG31-0XB0 и панель оператора KTP600 Basic Color PN. Контроллер вышел из строя. Но, поскольку периодически его можно было реанимировать (путём "разобрал-собрал"), мне удалось сделать Upload.

Сама программа была написана в TIA Portal V11 SP2, ею и была выгружена. Кстати, попытка выгрузить её через TIA Portal V12 (с помощью пустого проекта от TIA Portal V11, открытого в 12 версии без конвертации) успехов не принесла, несмотря на то, что данный метод везде описывается как универсальный.
TIA Portal V13 и вовсе не содержит никакого механизма для выгрузки программ, написанных в 11 версии. Ну, это в целом о подходе Siemens к вопросам совместимости оборудования и программного обеспечения.

Итак, неисправный контроллер 214-1AG31-0XB0 (снятый уже с производства) был заменён на 214-1AG40-0XB0, который, по идее, является его полноценной заменой, как утверждает Siemens. Каково было удивление, когда новый ПЛК, залитый через TIA Portal V13 SP1 (только эта версия на сегодняшний день поддерживает ПЛК 214-1AG40-0XB0 с версией прошивки 4.1), работать с панелью оператора отказался.

--------------------------------------------------------------------------------------------------------
Сначала экспериментальным путём было выяснено, что панель оператора KTP600 за время приобретения нового контроллера также вышла из строя. Для этого к ней был подключен имевшийся в наличии "дежурный" контроллер S7-1200 AC/DC/Relay 214-1BG31-0XB0 (ранее уже успешно подключавшийся к этой панели). Соединение с ним установить не удалось. Изменения параметров сетевого адаптера панели успехов не принесли. Что удивительно при этом, соединение между компьютером и KTP600 устанавливалось без проблем. Это позволило сделать BackUp (посредством Simatic ProSave). Связь с неисправным контроллером всё-таки можно было иногда установить, но где-то в одном случае из пяти, причём, чем больше времени проходило, тем меньше было таких случаев. Т.е. речь идёт о частичном и постепенном выходе из строя интегрированного сетевого адаптера панели оператора, который периодически работает с одними устройствами и совсем не работает с другими. Такие случаи описаны на форумах, где обсуждаются поломки сетевых карт. Поскольку печатная плата панели оператора многослойная, пробовать ремонтировать её не стали.
Однако, после замены панели оператора KTP600 и осуществления восстановления ПО из резервной копии на новую панель, проблема подключения контроллера 214-1AG40-0XB0 к панели осталась. При этом подключение "дежурного" контроллера старой модели 214-1BG31-0XB0 прошло успешно. Это означало, что поломка панели оператора была не единственной причиной того, что новые модели ПЛК не устанавливали с ней соединение.
--------------------------------------------------------------------------------------------------------

Попытка разобраться привела к беседе с техподдержкой Siemens +7 495 737-1737, где удалось получить ссылку вот на эту страницу.

В итоге выснилось, что существуют, во-первых, две разновидности драйвера для подключения S7-1200 к панелям оператора, а во-вторых, нюансы с работой со второй из них:

1. Драйверы, работающие через команды передачи и приёма данных PUT/GET. Этот вариант используется драйвером "SIMATIC S7 300/400" в WinCC Flexible и тем же драйвером в WinCC (в TIA Portal). При этом WinCC Flexible иного варианта подключения к S7-1200 и не знает, поэтому проеты WInCC Flexible являются таким образом универсальными. Вариант с использованием команд PUT/GET использует также мультифункциональный китайский коммутатор для подключения S7-1200 к панелям Smart. Этот же вариант использовал я, когда подключал S7-200 Smart к S7-1200.
Такой вариант 100% всегда работает, и проблем с ним нет. Единственное неудобство в том заключается, что для использования команд PUT и GET необходимо знать адреса ячеек памяти, а это значит, что блоки данных, с которыми происходит работа, должны быть неоптимизированны. Для использования этого варианта для моделей с версией пошивки 4.х нужно обязательно установить разрешение на осуществление команд PUT/GET (поставить галочку Permit access with PUT/GET communication from remote partner (PLC, HMI, OPC, ...). В предыдущих моделях контроллеров S7-1200 данной настройки не было, команды GET/PUT были разрешены всегда.


2. Специальный драйвер "SIMATIC S7 1200" в составе WinCC в TIA Portal. А здесь и начинаются проблемы.


Эта таблица показывает, что драйвера S7-1200, содержащиеся в разных версиях WinCC в TIA Portal, имеют разную совместимость с разными прошивками контроллера. Буква "B" в этой таблице означает, что для соединения можно использовать только драйвер S7-300/400. Буква "A" означает, что соединяться можно и через драйвер S7-1200, и через драйвер S7-300/400.



Как видим, если у нас панель KTP600 (это первая строка - Basic Panels 1st generation) была запрограммирована в TIA Portal V11, то её соединить с контроллером с прошивкой 4.х можно только через драйвер S7-300/400, работающий через команды PUT/GET.
Естественно, постфактум поменять драйвер, зашитый в панель, возможности нет (если у вас, конечно, случайно нет под рукой проекта для панели оператора). Т.е. если программисты использовали TIA Portal V11 с драйвером S7-1200 для панели, то подключить панель с таким ПО к новым моделям контроллера уже нельзя. В таком случае остаётся только один вариант - покупать контроллер старой модели, снятый с поизводства в Германии, но производимый на фабриках Китая (aliexpress...).

Но и это еще не всё! В исходном проекте для TIA Portal, который нам всё же в итоге передали (причём, этот проект был уже в формате TIA Portal V13, т.е. мы его даже не конвертировали из V11) стояла еще старая модель контроллера (214-1AG31-0XB0). Я, эксперимента ради, сначала залил в панель оператора программу из этого проекта, не меняя модель ПЛК. Соединение ПЛК с панелью и в этом случае по-прежнему установить не удалось. А вот когда я поменял версию ПЛК на 214-1AG40-0XB0, тогда всё и заработало.

Это означает, что TIA Portal V13 записывает разные версии коммуникационных драйверов S7-1200 в панель оператора в зависимости от выбранной прошивки контроллера S7-1200. Об этом же свидетельствует вот это сообщение при изменении модели ПЛК:


Раньше при изменении модели контроллера S7-1200 или его прошивки таких сообщений не появлялось.

Соответственно, учитывая тот факт, что модель 214-1AG40-0XB0 поддерживается только версией TIA Portal 13 (а с прошивкой 4.1 - только 13 SP1), то версия драйвера S7-1200 в TIA Portal V12 чисто теоретически никак не может устанавливать связь с такими ПЛК. Значит, в представленной выше таблице совместимости есть ошибка, а вообще эта таблица должна  начинаться подобным образом (с указанием модели ПЛК в проекте):


Остается только пара вопросов:

1. Почему версия прошивки 1.0 не совместима с драйвером S7-1200 в TIA Portal V12? Т.е. в V11 всё нормально работало, а в V12 уже нет? Это выглядит странно. У меня на данный момент в V11 не установлен WinCC, поэтому подтвердить совместимость TIA Portal V11 и прошивку 1.0 я не могу, а вот несовместимость TIA Portal V12 и TIA Portal V13 с этой прошивкой подтверждается.

2. Если в TIA Portal V13 для правильной работы панели оператора чрезвычайно важно, какая версия контроллера и его прошивки выбрана, то для проектов, использующих один ПЛК S7-1200 всё, вроде бы, понятно:


А как быть с проектами, где несколько ПЛК S7-1200, или если панель соединяется с S7-1200, которых в проекте нет? Даже если добавить в проект все контроллеры S7-1200, то HMI Device Wizard в любом позволяет осуществить подключение только к одному контроллеру, остальные контроллеры добавляются вручную. Поэтому как правильно действовать в таком случае, пока не понятно.


При этом вариант с использованием драйвера S7-300/400 для подключения S7-1200 всегда остаётся. Данный вариант, учитывая сложившуюся ситуацию, можно назвать предпочтительным, поскольку он позволяет менять модели контроллеров S7-1200 с разными прошивками и при этом не волноваться насчёт их совместимости с уже установленными на предприятиях панелями операторов.

При соединении через драйвер S7-300/400 следует правильно устанавливать значение Expansion slot. По умолчанию почему-то стоит значение 2, нужно ставить 0.


Также для использования драйвера S7-300/400 следует не забывать убирать галочку с аттрибута Optimized block access в используемых на панели оператора DB и в настройках FB (для доступа к экземплярным DB):