Меню Закрыть

Siemens s7 200 подключение

Содержание

Недавно я обнаружил, что китайские ПЛК Siemens S7-200CN, продаваемые на Aliexpress, больше не требуют обязательного переключения пользовательского интерфейса Step-7Micro/Win на китайский язык для программирования, что было главным неудобством их использования. В связи с этим возник вопрос, а нужно ли вообще использовать другие китайские ПЛК, сделанные по подобию S7-200, но не являющиеся оригинальным Siemens?

За несколько лет я приобрёл несколько таких контроллеров (бренды Gipeng, Amsamotion и Lollette).
По цене сложно называть точные цифры, всё зависит от бренда, модели и продавца — слишком много факторов, в общем и целом цена может быть как примерно равна стоимости Siemens S7-200CN, так и отличаться в несколько раз, например, стоимость CPU224XP DC/DC/DC китайской поделки от Shenjuye (именуемой на Aliexpress "Lollette") LES7 214-2AD23-0XB8 в 4 раза ниже стоимости S7-200CN.

Цена имеет значение, поскольку сразу возникает вопрос экономической целесообразности приобретать на Aliexpress S7-200CN, если можно просто у дилера Siemens купить S7-1200 (без предварительной обналички и компенсируя НДС).

Тут важны такие факторы, которые говорят в пользу S7-200 в сравнении с S7-1200:

1. К S7-200 можно напрямую подключать Smart-панели Siemens (дополнительный коммутатор для S7-1200 стоит почти половину цены ПЛК). См. также статью об этих коммутаторах.

2. S7-200 имеет штатный интерфейс RS-485 (плата или модуль для S7-1200 тоже стоят денег), это на тот случай, если RS485 вообще нужен.

3. S7-200 хоть немецкий, хоть китайский, но это — один и тот же контроллер, там не меняется прошивка, не меняется ПО (старым Step-7 Microwin можно спокойно запрограммировать и новый ПЛК, все контроллеры взаимозаменяемые, отличий нет), всё это характеризует контроллеры S7-200 как стабильные. Это в отличие от S7-1200, которые штампуют всё новых моделей, для которых выпускают несовместимые прошивки, вносят изменения, меняющие размер памяти программ и алгоритмов работы (например, скоростных счётчиков) и для которых несовместимо ПО TIA Portal разных версий. Выход из строя ПЛК S7-1200 не гарантирует, что производимый Siemens на тот момент времени такой же S7-1200, но новой версии, будет совместим с вышедшим из строя на 100%. Например, смотри статью о совместимости панелей оператора с S7-1200. Старые версии ПЛК S7-1200 некоторое время остаются в продаже на том же Aliexpress, но, как оказалось, не надолго, т.е. в Китае производимую на их заводах линейку Siemens S7-1200 обновляют синхронно с Германией.

Естественно, что существует много причин считать, что S7-1200 лучше S7-200, я не буду их перечислять, это не является предметом статьи.

Теперь касательно того, что лучше в китайских поделках по сравнению с Siemens S7-200CN.

Ну, во-первых, не все они определяются как "CN", т.е. когда надо было переключать интерфейс пользователя в Step-7/Microwin на китайский и обратно — это имело значение, например, Gipeng и Amsamotion определяются как S7-200, а Lollete (Shenjuye) — как S7-200CN.

Что касается плюсов у поделок — у них существуют различные вариации моделей, которых не существовало у оригинального Siemens. Например, под брендом Lollette продаются контроллеры "DC/DC/RLY", т.е. ПЛК с релейными дискретными выходами и штатным подключением 24V (неисправности встроенных блоков питания — основная причина выхода из строя контроллеров S7-200 AC/DC/RLY). А что делает фирма Gipeng — можете посмотреть в этой статье, там у них S7-200 и с Ethernet, и с RS232, и т.д.

Теперь главный вопрос — вопрос качества китайских поделок.

К сожалению, поделки — есть поделки. Вот что я могу сказать по их поводу:

1. На ПЛК Gipeng и Amsamotion был обнаружен глюк с работой оператора JMP. Подробнее смотри в этой статье. На ПЛК Lollette (Shenjuye) такого косяка нет.

2. На ПЛК Gipeng (и, скорее всего, на Amsamotion тоже) был обнаружен глюк с работой оператора FOR. Подробнее смотри в этой статье. На ПЛК Lollette (Shenjuye) такого косяка нет.

3. На нескольких Gipeng и Shenjuye моделей 224XP выходит из строя Port 1 интерфейса при использовании в качестве свободно программируемого порта (для Modbus RTU, например). На Gipeng выходит из строя окончательно и бесповоротно. У Shenjuye порт полностью перестаёт работать как интерфейс RS485 для Modbus, но определяется в режиме STOP (когда порт переходит в обычный режим PPI). В режиме RUN программатор порт не видит, а панель оператора, работающая по PPI, — видит (конечно, если из программы PLC предварительно удалены команды использования порта для Modbus). Кроме того, оба порта режиме Modbus на Shenjuye работают нестабильно (см. следующий пункт).

4. На контроллера Lollette (Shenjuye) странно работает порт RS485 для Modbus RTU (Master) — время от времени передача данных прекращается с ошибкой 6 (порт занят другим процессом), притом, что никакого другого процесса в этот момент нет и быть не может (на всех других подобных ПЛК тот же алгоритм работает прекрасно). После этого ПЛК будто бы подвисает: алгоритмы вроде бы выполняются, но значения некоторых битов через Status Chart отображаются некорректно, а попытка их изменения там ни к чему не приводит. Stop-Run ПЛК (как и Power-Up Reset) эффекта не имеет, только выключение питания и повторное включение возвращает его к нормальной работе. Несколько раз перезалил программу — и порт 1 отвалился, из двух портов CPU224XP остался только порт 0 (в порт 1 можно подключать только панель оператора — см. пред. пункт). Кнопки TERM на контроллерах Shenjuye нет как таковой (только RUN и STOP), поэтому осуществить заводской сброс ПЛК через программу wipeout.exe также не удастся (см. дальше).

5. У контроллеров Shenjuye (Lollette) нет на тумблере положения TERM, а есть только RUN и STOP. Сименовская программа wipeout.exe, сбрасывающая ПЛК S7-200 к заводским настройкам, не будет работать без положения TERM, поскольку на завершающем этапе работы программы требуется переключить рычаг из STOP в TERM. По большому счету это означает, что если вы, например, забыли пароль к собственному ПЛК, то сбросить этот пароль вы уже не сможете и никакую новую программу залить в него тоже.

6. На Gipeng Modbus slave работает косячно. Пришлось раз в минуту поставить реинициализацию (вызов MBUS_INIT, который по идее надо делать только в первом цикле), потому что через определенное время работы (иногда 10 минут, иногда сутки) происходит какой-то сбой и данные перестают передаваться.

7. На контроллерах Gipeng был замечен глюк с установкой даты и времени ПЛК, т.е. при попытке это сделать программными методами происходил сбой, приводящий к полному обнулению Data Block. Глюк непосредственно связан с текущим временем, примерно так, что до 12 часов включительно дата и время вроде бы устанавливается нормально, начиная с 13 часов начинаются косяки. Кстати, похожий косяк есть на контроллерах S7-200SMART.

8. Контроллеры Gipeng не работают с модулями Profibus-DP (6ES7 277-0AA22-0XA0). Т.е. модуль показывает, что работает, а по факту ничего контроллер через него не передаёт.

9. Некоторые ПЛК Amsamotion отказываются нормально работать с панелями Siemens, по крайней мере это замечалось на панеле Smart 700IE v3 (интерфейс PPI). Т.е., например, контроллер может нормально соединяться с панелью оператора на скорости 9.6 кбит/с и 187.5 кбит/с, но отказываться соединяться на скорости 19.2 кбит/с, при этом соединение с компьютером через интерфейсный кабель на этой скорости будет работать нормально. Очень странный глюк на самом деле, я даже сначала думал, что дело в панеле оператора, но соединение любых других ПЛК с этой панелью происходило нормально, я проверил это на оригинальном Siemens S7-200, а также на Gipeng и Lollette — все подключились к панеле без проблем на скорости 19.2 бит/с, а Amsamotion отказался. Что интересно, я решил проэкспериментировать это на другой панеле той же модели. Так вот: к другой панели Amsamotion подключился на скорости 19.2 кбит/с нормально, но отказался работать с ней а скорости 9.6 кбит/с. Несколько раз всё было перепроверено. Очень странная ситуация.

10. На контроллерах Lollette (Shenjuye) замечен такой глюк: при осуществлении Download только одного Program Block сбиваются в нули все данные в Data Block. Т.е. приходилось при каждом изменении алгоритма перезаливать и Data Block тоже (предварительно внося в него изменения касающиеся текущих значений настраиваемых величин, что было неудобно)

11. На китайских поделках не функционирует отсек для батарейки для долговременного хранения данных в памяти процессоров (6ES7 291-8BA20-0XA0), т.е. в корпусе просто установлена заглушка, под которой нет никакого разъёма

12. Gipeng не хранит значения Retentive Ranges. Не буду утверждать за все модели, но на некоторых косяк этот проявился. Т.е., благодаря внутреннему конденсатору, значения должны сохраняться примерно в течение недели, а по факту не хранятся нисколько и сбрасываются в значения по умолчанию, указанные в Data Block.

13. Gipeng’овские модули для подключения термопар оказались бракованными — диапазон измерения напряжения (в милливольтах) оказался гораздо ниже требуемого, из-за чего термопарой типа J удалось померять температуру только до 100 с копейками градусов Цельсия. Проверено на двух таких модулях. На алиэкспресс модули Gipeng часто продают как безымянные, лишь указывая, что они совместимы с Siemens S7-200, следует быть внимательным и уточнять у продавца, кто является производителем такого модуля.

Читайте также:  Как выйти из спящего режима на ноутбуке

14. У Gipeng памяти меньше заявленной. Т. е. попытка использовать в программе адреса VB10000 и больше привела к тому, что контроллер просто перестал переводится в RUN. На оригинальном Siemens и на Amsamotion такой проблемы не возникло.

15. Китайские поделки не совместимы по запчастям ни с Siemens, ни друг с другом, т.е. платы внутри корпуса хоть и схожи, но у каждого производителя свои. Контроллеры элементарно весят по-разному. Даже блоки питания для контроллеров с питанием 230 В несовместимы, не говоря уже обо всём остальном.

16. У Gipeng низкое качество сборки. Паяют похабно и флюс не вытирают с плат. Разница чувствуется даже в сравнении с тоже паянными вручную платами от Lollette и Amsamotion.

17. Существуют контроллеры Co-Trust, которые также пародируют S7-200 и совместимы с его модулями (только своя среда разработки MagicWorks PLC — полный клон Step-7 Microwin). Мне такие ПЛК не встречались на практике, но зато как-то встретились термоконтроллеры от Co-Trust (выполненные тоже в корпусе S7-200), так вот за два года из восьми термоконтроллеров накрылись два. Такое вот качество. Из всех имевшихся в моем распоряжении китайских поделок, кстати, пока не сломался ни один.

18. Ну, и по-мелочи.
— у Amsamotion: несоответствие метки "CN" модели, зашитой в ПЛК, и модели на корпусе (написано CPU224CN, определяется как CPU224)

Китайские поделки имеют внешний вид, отличающий их от оригинала Siemens:
— иной цвет корпусов (и Siemens тёмно-серый с "болотным" оттенком, у поделок — серый)
— другие цвета разъёмов PPI (у Siemens — чёрный, у Amsamotion — белый)
— другой вид тумблера Stop/Run (у Siemens — три положения, у Lollette — два и другой вид самого тумблера, который можно переключить только при помощи отвёртки).

В свете всего вышесказанного, я бы подумал на ваше месте, что лучше купить — поделку, или же китайский, но оригинальный Siemens S7-200CN. Если же вопрос цены принципиален, то я бы предпочёл выбрать контроллеры Amsamotion как менее глючные из всех поделок.

Недавно я обнаружил, что китайские ПЛК Siemens S7-200CN, продаваемые на Aliexpress, больше не требуют обязательного переключения пользовательского интерфейса Step-7Micro/Win на китайский язык для программирования, что было главным неудобством их использования. В связи с этим возник вопрос, а нужно ли вообще использовать другие китайские ПЛК, сделанные по подобию S7-200, но не являющиеся оригинальным Siemens?

За несколько лет я приобрёл несколько таких контроллеров (бренды Gipeng, Amsamotion и Lollette).
По цене сложно называть точные цифры, всё зависит от бренда, модели и продавца — слишком много факторов, в общем и целом цена может быть как примерно равна стоимости Siemens S7-200CN, так и отличаться в несколько раз, например, стоимость CPU224XP DC/DC/DC китайской поделки от Shenjuye (именуемой на Aliexpress "Lollette") LES7 214-2AD23-0XB8 в 4 раза ниже стоимости S7-200CN.

Цена имеет значение, поскольку сразу возникает вопрос экономической целесообразности приобретать на Aliexpress S7-200CN, если можно просто у дилера Siemens купить S7-1200 (без предварительной обналички и компенсируя НДС).

Тут важны такие факторы, которые говорят в пользу S7-200 в сравнении с S7-1200:

1. К S7-200 можно напрямую подключать Smart-панели Siemens (дополнительный коммутатор для S7-1200 стоит почти половину цены ПЛК). См. также статью об этих коммутаторах.

2. S7-200 имеет штатный интерфейс RS-485 (плата или модуль для S7-1200 тоже стоят денег), это на тот случай, если RS485 вообще нужен.

3. S7-200 хоть немецкий, хоть китайский, но это — один и тот же контроллер, там не меняется прошивка, не меняется ПО (старым Step-7 Microwin можно спокойно запрограммировать и новый ПЛК, все контроллеры взаимозаменяемые, отличий нет), всё это характеризует контроллеры S7-200 как стабильные. Это в отличие от S7-1200, которые штампуют всё новых моделей, для которых выпускают несовместимые прошивки, вносят изменения, меняющие размер памяти программ и алгоритмов работы (например, скоростных счётчиков) и для которых несовместимо ПО TIA Portal разных версий. Выход из строя ПЛК S7-1200 не гарантирует, что производимый Siemens на тот момент времени такой же S7-1200, но новой версии, будет совместим с вышедшим из строя на 100%. Например, смотри статью о совместимости панелей оператора с S7-1200. Старые версии ПЛК S7-1200 некоторое время остаются в продаже на том же Aliexpress, но, как оказалось, не надолго, т.е. в Китае производимую на их заводах линейку Siemens S7-1200 обновляют синхронно с Германией.

Естественно, что существует много причин считать, что S7-1200 лучше S7-200, я не буду их перечислять, это не является предметом статьи.

Теперь касательно того, что лучше в китайских поделках по сравнению с Siemens S7-200CN.

Ну, во-первых, не все они определяются как "CN", т.е. когда надо было переключать интерфейс пользователя в Step-7/Microwin на китайский и обратно — это имело значение, например, Gipeng и Amsamotion определяются как S7-200, а Lollete (Shenjuye) — как S7-200CN.

Что касается плюсов у поделок — у них существуют различные вариации моделей, которых не существовало у оригинального Siemens. Например, под брендом Lollette продаются контроллеры "DC/DC/RLY", т.е. ПЛК с релейными дискретными выходами и штатным подключением 24V (неисправности встроенных блоков питания — основная причина выхода из строя контроллеров S7-200 AC/DC/RLY). А что делает фирма Gipeng — можете посмотреть в этой статье, там у них S7-200 и с Ethernet, и с RS232, и т.д.

Теперь главный вопрос — вопрос качества китайских поделок.

К сожалению, поделки — есть поделки. Вот что я могу сказать по их поводу:

1. На ПЛК Gipeng и Amsamotion был обнаружен глюк с работой оператора JMP. Подробнее смотри в этой статье. На ПЛК Lollette (Shenjuye) такого косяка нет.

2. На ПЛК Gipeng (и, скорее всего, на Amsamotion тоже) был обнаружен глюк с работой оператора FOR. Подробнее смотри в этой статье. На ПЛК Lollette (Shenjuye) такого косяка нет.

3. На нескольких Gipeng и Shenjuye моделей 224XP выходит из строя Port 1 интерфейса при использовании в качестве свободно программируемого порта (для Modbus RTU, например). На Gipeng выходит из строя окончательно и бесповоротно. У Shenjuye порт полностью перестаёт работать как интерфейс RS485 для Modbus, но определяется в режиме STOP (когда порт переходит в обычный режим PPI). В режиме RUN программатор порт не видит, а панель оператора, работающая по PPI, — видит (конечно, если из программы PLC предварительно удалены команды использования порта для Modbus). Кроме того, оба порта режиме Modbus на Shenjuye работают нестабильно (см. следующий пункт).

4. На контроллера Lollette (Shenjuye) странно работает порт RS485 для Modbus RTU (Master) — время от времени передача данных прекращается с ошибкой 6 (порт занят другим процессом), притом, что никакого другого процесса в этот момент нет и быть не может (на всех других подобных ПЛК тот же алгоритм работает прекрасно). После этого ПЛК будто бы подвисает: алгоритмы вроде бы выполняются, но значения некоторых битов через Status Chart отображаются некорректно, а попытка их изменения там ни к чему не приводит. Stop-Run ПЛК (как и Power-Up Reset) эффекта не имеет, только выключение питания и повторное включение возвращает его к нормальной работе. Несколько раз перезалил программу — и порт 1 отвалился, из двух портов CPU224XP остался только порт 0 (в порт 1 можно подключать только панель оператора — см. пред. пункт). Кнопки TERM на контроллерах Shenjuye нет как таковой (только RUN и STOP), поэтому осуществить заводской сброс ПЛК через программу wipeout.exe также не удастся (см. дальше).

5. У контроллеров Shenjuye (Lollette) нет на тумблере положения TERM, а есть только RUN и STOP. Сименовская программа wipeout.exe, сбрасывающая ПЛК S7-200 к заводским настройкам, не будет работать без положения TERM, поскольку на завершающем этапе работы программы требуется переключить рычаг из STOP в TERM. По большому счету это означает, что если вы, например, забыли пароль к собственному ПЛК, то сбросить этот пароль вы уже не сможете и никакую новую программу залить в него тоже.

6. На Gipeng Modbus slave работает косячно. Пришлось раз в минуту поставить реинициализацию (вызов MBUS_INIT, который по идее надо делать только в первом цикле), потому что через определенное время работы (иногда 10 минут, иногда сутки) происходит какой-то сбой и данные перестают передаваться.

7. На контроллерах Gipeng был замечен глюк с установкой даты и времени ПЛК, т.е. при попытке это сделать программными методами происходил сбой, приводящий к полному обнулению Data Block. Глюк непосредственно связан с текущим временем, примерно так, что до 12 часов включительно дата и время вроде бы устанавливается нормально, начиная с 13 часов начинаются косяки. Кстати, похожий косяк есть на контроллерах S7-200SMART.

Читайте также:  Игровой ноутбук с видеокартой gtx 1080

8. Контроллеры Gipeng не работают с модулями Profibus-DP (6ES7 277-0AA22-0XA0). Т.е. модуль показывает, что работает, а по факту ничего контроллер через него не передаёт.

9. Некоторые ПЛК Amsamotion отказываются нормально работать с панелями Siemens, по крайней мере это замечалось на панеле Smart 700IE v3 (интерфейс PPI). Т.е., например, контроллер может нормально соединяться с панелью оператора на скорости 9.6 кбит/с и 187.5 кбит/с, но отказываться соединяться на скорости 19.2 кбит/с, при этом соединение с компьютером через интерфейсный кабель на этой скорости будет работать нормально. Очень странный глюк на самом деле, я даже сначала думал, что дело в панеле оператора, но соединение любых других ПЛК с этой панелью происходило нормально, я проверил это на оригинальном Siemens S7-200, а также на Gipeng и Lollette — все подключились к панеле без проблем на скорости 19.2 бит/с, а Amsamotion отказался. Что интересно, я решил проэкспериментировать это на другой панеле той же модели. Так вот: к другой панели Amsamotion подключился на скорости 19.2 кбит/с нормально, но отказался работать с ней а скорости 9.6 кбит/с. Несколько раз всё было перепроверено. Очень странная ситуация.

10. На контроллерах Lollette (Shenjuye) замечен такой глюк: при осуществлении Download только одного Program Block сбиваются в нули все данные в Data Block. Т.е. приходилось при каждом изменении алгоритма перезаливать и Data Block тоже (предварительно внося в него изменения касающиеся текущих значений настраиваемых величин, что было неудобно)

11. На китайских поделках не функционирует отсек для батарейки для долговременного хранения данных в памяти процессоров (6ES7 291-8BA20-0XA0), т.е. в корпусе просто установлена заглушка, под которой нет никакого разъёма

12. Gipeng не хранит значения Retentive Ranges. Не буду утверждать за все модели, но на некоторых косяк этот проявился. Т.е., благодаря внутреннему конденсатору, значения должны сохраняться примерно в течение недели, а по факту не хранятся нисколько и сбрасываются в значения по умолчанию, указанные в Data Block.

13. Gipeng’овские модули для подключения термопар оказались бракованными — диапазон измерения напряжения (в милливольтах) оказался гораздо ниже требуемого, из-за чего термопарой типа J удалось померять температуру только до 100 с копейками градусов Цельсия. Проверено на двух таких модулях. На алиэкспресс модули Gipeng часто продают как безымянные, лишь указывая, что они совместимы с Siemens S7-200, следует быть внимательным и уточнять у продавца, кто является производителем такого модуля.

14. У Gipeng памяти меньше заявленной. Т. е. попытка использовать в программе адреса VB10000 и больше привела к тому, что контроллер просто перестал переводится в RUN. На оригинальном Siemens и на Amsamotion такой проблемы не возникло.

15. Китайские поделки не совместимы по запчастям ни с Siemens, ни друг с другом, т.е. платы внутри корпуса хоть и схожи, но у каждого производителя свои. Контроллеры элементарно весят по-разному. Даже блоки питания для контроллеров с питанием 230 В несовместимы, не говоря уже обо всём остальном.

16. У Gipeng низкое качество сборки. Паяют похабно и флюс не вытирают с плат. Разница чувствуется даже в сравнении с тоже паянными вручную платами от Lollette и Amsamotion.

17. Существуют контроллеры Co-Trust, которые также пародируют S7-200 и совместимы с его модулями (только своя среда разработки MagicWorks PLC — полный клон Step-7 Microwin). Мне такие ПЛК не встречались на практике, но зато как-то встретились термоконтроллеры от Co-Trust (выполненные тоже в корпусе S7-200), так вот за два года из восьми термоконтроллеров накрылись два. Такое вот качество. Из всех имевшихся в моем распоряжении китайских поделок, кстати, пока не сломался ни один.

18. Ну, и по-мелочи.
— у Amsamotion: несоответствие метки "CN" модели, зашитой в ПЛК, и модели на корпусе (написано CPU224CN, определяется как CPU224)

Китайские поделки имеют внешний вид, отличающий их от оригинала Siemens:
— иной цвет корпусов (и Siemens тёмно-серый с "болотным" оттенком, у поделок — серый)
— другие цвета разъёмов PPI (у Siemens — чёрный, у Amsamotion — белый)
— другой вид тумблера Stop/Run (у Siemens — три положения, у Lollette — два и другой вид самого тумблера, который можно переключить только при помощи отвёртки).

В свете всего вышесказанного, я бы подумал на ваше месте, что лучше купить — поделку, или же китайский, но оригинальный Siemens S7-200CN. Если же вопрос цены принципиален, то я бы предпочёл выбрать контроллеры Amsamotion как менее глючные из всех поделок.

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

Коротко пробежим по основным операциям.

Логические операции. Доступны через вкладку Bit Logic

Что мы здесь видим. Нормально разомкнутый контакт -| |-. Мы его уже применяли. Он пропустит на свой выход сигнал если его состояние равно логической «1». Нормально замкнутый контакт -| |-. Он пропустит на выход сигнал если его состояние равно логическому «0». Сигнал инверсии –| NOT |- инвертирует входной сигнал. Сигнал выделения фронта -| P |- формирует на своем выходе импульс в течении одного цикла программы при обнаружении на своем входе положительного фронта. –( )- сигнал установки бита. Приравнивает бит или группу битов логическому состоянию на входе. –( S )- устанавливает бит или группу битов при появлении логической 1 на входе. –( R )- сбрасывает бит или группу битов при появлении на входе логической единицы. Всякие триггеры и так далее.

Создание ветвлений в программе осуществляется стрелками

На рисунке показано как реализовать комбинированную логическую схему. Входа I0.1и I0.2 объединены по ИЛИ и вместе они объединены по И с входом I0.0.

Операции сравнения – Compare. Используются понятное дело для сравнения различных аналоговых величин. На выходе формируют логический сигнал соответствующий результату сравнения. Например

Сделайте такую схему и экспортируйте ее в awl файл. Запустите симулятор S7-200 от canal. Два раза щелкните по полю с надпись 0. Откроется окно в котором выберем модуль EM 231

Теперь у нас есть аналоговый модуль с входами AIW0 AIW1 AIW2. Нажимаем Program -> load program и загружаем наш файл awl. Откроется окно

Нажимаем RUN. И теперь двигая ползунок аналогового входа AI0 видим что при превышении значения 10000 устанавливается выход Q0.0.

Еще одна тонкость – полезность. В симуляторе и при работе с реальным ПЛК доступен режим state program (состояние программы).

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

При результате логической операции равной 1 – сама операция подсвечивается синим цветом. Видно что аналоговое значение 32760 это больше 10000 следовательно результат операции сравнения = логической 1. Значение выхода Q0.0 тоже становиться равным 0.

Математические операции делятся на математику целочисленную Integer Math и математику с плавающей запятой Floating Point Math. Тут важно заметить что нельзя напрямую величины типа integer 16 бит и аналоговые входа с размерностью WORD 16 бит засовывать в математику типа REAL. Необходимо преобразовать сначала Integer в Double Integer а затем DI в REAL. Функции преобразования лежат во вкладке convert.

Для примера напишем программу которая считывает аналоговый вход и делит его на 2,5.

Вот как будет выглядеть программа

Вот опять используем системный меркер SM0.0 и используем аккумулятор АС0 для хранения промежуточных результатов.

Таймеры

Есть несколько видов таймеров. TON – с задержкой включения. Когда на его входе появляется логическая 1 то таймер начинает считать до заданного значения по достижении которого он выставляет бит своего состояния в логическую единицу.

TOF – таймер с задержкой выключения. Бит состояния выставляется в 1 сразу по появлению на входе логической 1 и сбрасывается по достижению таймером заданного значения.

Таймеры в S7-200 делятся по дискретности устанавливаемого времени. Так таймеры с номерами T32, T96 имеют дискретность 1 мс и максимальное время 32.767 с.

Таймеры с номерами T33-T36, T97-T100 имеют дискретность 10 мс и максимальное время 327.67 секунды.

Таймеры с номерами T37-T63, T101-T255 имеют дискретность 100 мс и максимальное время 3276.7 секунды.

Для настройки таймера необходимо выбрать его номер из группы с необходимой дискретностью и задать значение до которого считать (максимум 32767).

На рисунке приведен пример мигалки на двух таймерах

Логика работы такая. Так как логическое состояние таймера при первом старте равно 0 то результат опроса команды -| / |- Q0.0 равно 1. Оно приводит к тому, что стартует таймер Т35. Как только таймер Т35 досчитал до 1 секунды то выставляется выход Q0.0 в 1. Это приводит к тому что стартует таймер Т36. Когда он досчитывает до 1 секунды то в сбрасывается Q0.0 и стартует таймер Т35 и так по кругу. Загрузите этот пример в симулятор и нажав state program посмотрите как это работает в железе.

Читайте также:  Learn magic wizards com

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

На рисунке пример программы реализующей мигалку на одном таймере. Логика работы такая. Так как в первый момент состояние меркера m0.0 равно 0 то результат опроса команды -| / |- M0.0 равно 1. Оно приводит к тому, что стартует таймер Т35. Как только таймер Т35 досчитал до 1 секунды то выставляется выход Q0.0 в 1. Как только таймер досчитал до 2 секунд, то сбрасывается выход Q0.0 в 0 и устанавливается на один цикл меркер m0.0. Установка меркера (результат опроса команды -| / |- М0.0 становиться равен 0) приводит к рестарту таймера Т35 и цикл повторяется.

Высокоскоростные счетчики

На практике часто необходимо осуществлять подсчет импульсов (например при измерении оборотов). Для этого в ПЛК S7-200 предусмотрены высокоскоростные 32-х разрядные счетчики HSC (High Speed Counter). В линейке S7-200 есть ПЛК имеющие от 4 до 6 скоростных счетчиков с максимальной частотой счета 30кГц и CPU 224XP имеющий к четырем 30кГц счетчикам еще два с максимальной частотой 200кГц. Аппаратно входы счетчиков подключены на ноги порта I0 (нужно смотреть в документации). Для конфигурации счетчиков я рекомендую использовать мастер.

На примере рассмотрим как настроить счетчик на подсчет импульсов за определенное время (классическое измерение частоты). Запускаем мастер настройки счетчика.

Выбираем какой счетчик настраиваем и режим работы (я использую режим Mode 0 – простой счет без сброса и старта). Mode 12 например используется ля генерации PWM сигнала (подробнее можно найти в Help). Нажимаем Next.

Даем название процедуре настройки счетчика (например «настройка счетчика импульсов»). Выбираем начальное значение, значение до которого считать и направление счета. В нашем случае выбираем Preset = 0, Current = 0, Direct = UP. Нажимаем Next.

Здесь все оставляем без изменений так как мы считаем импульсы за период времени (если бы считали импульсы до определенного значения то в предыдущем окне установили бы Preset на необходимую величину и в текущем окне поставили бы галку «генерировать прерывание по достижению PV). Нажимаем Next и в следующем окне Finish.

В окне Program Block появились две новые процедуры

Настройка счетчика импульсов SBR0 и процедура прерывания INT_0. В коде блока OB1 вставляем нормально разомкнутый контакт sm0.1 (First Scan) и из списка Call Soubrutines выбираем «Настройка счетчика импульсов SBR0».

Теперь мы можем убедиться, что счетчик считает. Допишем в Network2 следующий код.

Делаем экспорт в awl. Открываем симулятор S7_200. Двойной щелчок по CPU и выбираем CPU 226. Загружаем наш awl файл и переводим ПЛК в RUN. Теперь если переключать тумблер I0.0 то счетчик будет считать и его значение будет отображаться на байте выходов Q0.

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

В настройках счетчика вставляем network и дописываем в него следующий код

Тут необходимо сделать следующие пояснения.

В системе есть специальный таймер тикающий с периодом равным 1мс*SMB34 и вызывающий так называемое событие №10. Функция ATCH из выпадающего списка Intertupt имеет следующие входа выхода. Вызываемое прерывание (в нашем случае INT_0) и вход номера события запускающее это прерывание (в нашем случае №10). Таким образом мы настроили вызов прерывания INT_0 каждые 250мс.

Теперь заходим в прерывание INT_0 и вставляем следующий код

Теперь в переменной VD0 мы имеем число импульсов измеренное за 250мс.

Работа с функциями

Часто целесообразно для выполнения типовых действий создать функцию. Делается это следующим образом. Правым щелчком мыши на поле Program block -> Insert -> Subroutine.

Появляется еще одна подпрограмма SBR1. Ее можно переименовать по клику правой кнопкой -> rename.

Теперь для ее вызова необходимо в нужном месте программы (например в основном цикле при включение входа i0.0 должна вызываться наша подпрограмма func_1 (имена могут быть и на русском языке)) необходимо встать на линию после опроса входа -| |- i0.0 и два раза щелкнуть по имени нашей подпрограммы в списке call subroutine. Функция автоматически встанет на место.

Теперь наша функция вызывается. Что бы изменить начинку функции необходимо кликнуть ее два раза в списке Program block.

Откроется окно аналогичное основному блоку, где можно написать свою программу. Например как на рисунке.

Это пример функции ни чего не возвращающей и не имеющей входных параметров. Этот прием используется в основном для структурирования программы путем разбития ее на отдельные сегменты. Часто на практике требуются функции обрабатывающие входной сигнал и возвращающие результат. Это делается следующим образом. Заходим в нашу функцию и вверху видим поля для данной функции. In это входа Out выхода Temp внутренние переменные. В поле symbol пишем символьное имя входной переменной (например «вход 1»), в поле data type определяем какого типа будет эта переменная , если это аналоговый вход то тип word и так далее. Добавляем например «вход 2» типа word и выход «выход 1» типа BOOL.

Теперь пишем программу. Будем например сравнивать значение переменной вход 1 и вход 2 и если вход 1 больше то устанавливать выход в 1.

Вот как выглядит эта программа.

При заполнении символов в программе знак # писать не надо, он ставиться автоматически.

Теперь вызовем нашу функцию. В основном цикле после условия вызова (например sm0.0 вызывать всегда) выбираем нашу функцию func_1 из списка call subroutines.

Появляется наша подпрограмма в таком виде

Заполняем знаки вопроса необходимыми нам переменными. Например в первом нетворке сравнивается значение аналогового входа AIW0 с уставкой 10000 и если вход больше то устанавливается выход q0.0. Во втором нетворке сравнивается значение аналогового входа AIW2 с уставкой 20000 и если вход больше то устанавливается выход q0.1.

Как верно замети Сергей в симуляторе от Canals этот пример не работает. Зато он нормально работает в симуляторе S7_200_SIM, просто замените AIW0 на IB0 и AIW2 на IB1, а впроцедуре тип WORD входных переменных на BYTE. В сравнении естественно нужно сравнивать не INT а BYTE. Можно загрузить готовый проект подрограмма.mwp. Естественно на практике внутри функции выполняется как правило больше действий. Например я использую подобные функции чтобы получить значение давления в кгс с датчиков с токовым выходом 4-20мА. На вход передаю значение из аналогового модуля и величину давления соответствующего току 20мА для данного датчика. Внутри функции по формуле вычисляю давление соответствующее текущему току и возвращаю из функции.

Теперь о дополнительных тонкостях и хитростях.

Например необходимо узнать где у нас используется та или иная переменная. Для это служит средство cross reference.

В таблице видно, что мы использовали слово памяти VW0 один раз в основном цикле OB1.

Системный меркер sm0.0 Always_On мы использовали три раза. Два раза в основном цикле OB1 и один раз в подпрограмме func_1. Если в этой таблице два раза щелкнуть по имени переменной то автоматически произойдет переход в то место программы где произошло использование этой переменной.

Допишем в программе OB1 код

Нажимаем PLC -> compile All. Открываем опять cross reference.

Открываем вкладку Byte Usage

Здесь показано как у нас занята память. У нас занята память под VW0 и VW2, а так как они используют по два байта то отображаются буквами W, и занимают каждая по две клетки байтовой области. Меркер M0.0 занимает бит в байте MB0. Также мы используем специальный меркер sm0.0 Always_On из байта SMB0. Здесь удобно смотреть какие ячейки еще свободны что бы случайно не использовать уже занятый.

На вкладке Bit Usage уже показывается распределение занятых битов в байте.

Здесь видно, что в программе мы уже использовали два дискретных выхода Q0.0 и Q0.1 и один дискретный вход I0.0. Эту табличку я смотрю когда необходимо заиметь свободный меркер типа BOOL для какого либо флага в программе и при необходимости узнать какие еще входа выхода свободны в контроллере.

Отладка программы

Для просмотра значений переменных и состояния входов выходов используется инструмент Chart Status

В таблице вбиваем нужные нам переменные и смотрим их значения. Можно задать свои значения в поле New Value и нажать карандашик Write All и эти значения передадутся в программу.

Состояние выполнения программы можно увидеть нажав кнопку program status (как в симуляторе) и при включенном ПЛК будут отображаться состояния входов выходов и текущие значения переменных

В следующей статье рассмотрим создание HMI интерфейса с контроллером SIMATIC S7-200 на базе панели оператора TD и на базе PC с помощью программы ProTool.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.