Основы Step7 Microwin

Инженерное программное обеспечение
m-n-tihiy
Дилетант
Сообщения: 16
Зарегистрирован: 24 дек 2012, 09:24

Основы Step7 Microwin

Сообщение m-n-tihiy »

Читая ваши ответы , понимаю , что попал на нужный форум к отличному специалисту =)
Спасибо!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК

Сообщение Михайло »

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

m-n-tihiy
Дилетант
Сообщения: 16
Зарегистрирован: 24 дек 2012, 09:24

Re: Обучаем новичка программированию ПЛК

Сообщение m-n-tihiy »

Добрый день!
Очередной вопрос.
Изначально осваивал s7-200 на языке FBD ,(был до этого опыт написания программ на этом языке), теперь же приходится усваивать Ladder , так как порой встречаются листинги именно на этом языке.
Вопрос вот о чем , на языке LAD есть такие команды как установка и сброс тех или иных последовательностей битов , они (команды) имеет обозначения в круглых скобках с буквой "S" или "R" .
Не до конца могу понять как они работают ?
Можно ли сравнить эти установки битов с тригером ?
Есть ли у них приоритет ?
и как будет работать программа с ними если:
a) сначала идет network c установкой битов, а следом сброс тех же битов
б) и обратная ситуация

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК

Сообщение Михайло »

Ваши подозрения верны! Это форма RS-триггера с раздельной установкой и сбросом бита.

1. Если активна катушка ------(S), то выполняется установка бита, иначе значение бита не меняется.
2. Если активна катушка ------(R), то выполняется сброс бита, иначе значение бита не меняется.
3. Преимущество имеет та команда, которая идет последняя по циклу программы.
4. При необходимости возможно использование в программе только одной команды из этих двух. Например, сброс может осуществляться другим способом, например, снятием питания с ЦПУ контроллера.
5. Допустимо одновременное использование более чем по одной катушке ---(S) и ---(R) в программе. В этом случае приоритет также сохраняется за последней командой в программе, а набор этих команд эквивалентен единому RS-триггеру, у которого все условия установки объединены элементом ИЛИ (параллельное соединение цепочек в LD) и также условия сброса объединены элементом ИЛИ. (В общем это выводится путем логического размышления из п.1 и п.2.)

При программировании S7-200 эти команды используются очень часто, однако в стандарте МЭК 61131-3 они отсутствуют... Это означает, что не в любой среде разработки такие команды имеются.

Аватара пользователя
san
Специалист
Сообщения: 117
Зарегистрирован: 13 окт 2012, 17:17
Откуда: Киев
Контактная информация:

Re: Обучаем новичка программированию ПЛК

Сообщение san »

Михайло писал(а):1. Если активна катушка ------(S), то выполняется установка бита, иначе значение бита не меняется.
2. Если активна катушка ------(R), то выполняется сброс бита, иначе значение бита не меняется...
При программировании S7-200 эти команды используются очень часто, однако в стандарте МЭК 61131-3 они отсутствуют... Это означает, что не в любой среде разработки такие команды имеются.
:shock:
61131-3  IEC:2003(E) page 42 table 62 - Coils писал(а):SET (latch) coil
The associated Boolean variable is set to the ON state when the left link is in the ON state, and remains set until reset by a RESET coil.
RESET (unlatch) coil
The associated Boolean variable is reset to the OFF state when the left link is in the ON state, and remains reset until set by a SET coil.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК

Сообщение Михайло »

О, да! Забираю свои слова обратно:
Михайло писал(а):При программировании S7-200 эти команды используются очень часто, однако в стандарте МЭК 61131-3 они отсутствуют... Это означает, что не в любой среде разработки такие команды имеются.

m-n-tihiy
Дилетант
Сообщения: 16
Зарегистрирован: 24 дек 2012, 09:24

Re: Обучаем новичка программированию ПЛК

Сообщение m-n-tihiy »

Добрый день !
Очередной вопрос.
s7-200
В основной программе используется подпрограмма , несколько раз.
Вопрос в следующем, на выходах подпрограммы постоянно остаются висеть сигналы!
В подпрограмме используются локальные переменные, которые назначены на входа и выходы этой подпрограммы.
На мой взгляд дело именно в них (локальных переменных).
Т.к. в инструкции по simatic написано, что локальные переменные после формирования остаются висеть.
И почему- то советуется в том же руководстве не использовать одни и те же локальные переменные для разных подпрограмм?
Рассудите)

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Основы Step7 Microwin

Сообщение Михайло »

m-n-tihiy писал(а):В основной программе используется подпрограмма , несколько раз.
Вопрос в следующем, на выходах подпрограммы постоянно остаются висеть сигналы!
В подпрограмме используются локальные переменные, которые назначены на входа и выходы этой подпрограммы.
На мой взгляд дело именно в них (локальных переменных).
Т.к. в инструкции по simatic написано, что локальные переменные после формирования остаются висеть.
Объяснение этому парадоксу простое. Я предупреждал Вас ранее в этой же теме.
Михайло писал(а):Ну и важное примечание: при окончании выполнения основной программы или подпрограммы маркеры M, выходы Q не отключаются, так как они хранятся в памяти, а память нужна, что помнить (такая вот банальность :) ). Чтобы их обнулить, нужно сбросить их командой сброса или другим способом.
m-n-tihiy писал(а):И почему- то советуется в том же руководстве не использовать одни и те же локальные переменные для разных подпрограмм?
Что Вы понимаете под локальными переменными? Маркеры M или переменные типа Temporary? Первые нет смысла запрещать использовать разными подпрограммами, а вторые по определению не получится, так как они действительно локальные.
Возможно в мануале предупреждали о другом: нельзя переменные типа Temp использовать даже в одной подпрограмме, но в разных циклах программы.... Найдите ту рекомендацию и процитируйте ее здесь.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Основы Step7 Microwin

Сообщение Михайло »

Наилучшего понимания работы CPU можно достичь освоением языка IL и разбором понятия "цикл программы" (program scan).

Попробуйте прочитать это.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Основы Step7 Microwin

Сообщение Михайло »

Про программный цикл я нашел упоминание в файле на русском языке "Программируемый контроллер S7-200. Системное руководство", раздел 4 "Основы ПЛК", глава "Выполнение логики управления с помощью S7–200", параграф "S7–200 выполняет все задачи в цикле".

Один программный цикл включает в себя:
- Чтение входов: S7–200 копирует состояние физических входов в регистр входов образа процесса.
- Выполнение логики управления в программе: S7–200 выполняет команды программы и сохраняет значения в различных областях памяти.
- Обработка запросов на обмен данными: S7–200 выполняет все задачи, необходимые для обмена данными.
- Самодиагностика CPU: S7–200 проверяет, чтобы встроенное программное обеспечение, программная память и все модули расширения работали надлежащим образом.
- Запись в выходы: Значения, хранящиеся в регистре выходов образа процесса, записываются в физические выходы.
Этот программный цикл протекает за доли секунд (десятки миллисекунд для S7-200) и повторяется циклически. Так как цикл достаточно быстрый, то создается впечатление, что CPU работает непрерывно, а не циклически.
Время цикла зависит от длины и сложности программы, когда исполняется задача "выполнение логики управления в программе" процессор последовательно выполняет каждую команду программы. Некоторые команды выполняются за единицы микросекунд, другие команды (более комплексные) - за сотни микросекунд.

Тут же упоминается об образе процесса. В процессе исполнения команд программы процессор не включает сразу физические выходы, а пишет в промежуточную память - образ процесса, запись в физические выходы делается чуть позже - в конце программного цикла. Это позволяет избежать перещелкивания (включения-выключения) выхода в пределах одного программного цикла. То же самое и про входные сигналы: один раз считали значение входа в образ и потом используем в программе, в пределах программного цикла вход не меняет свои значения, хотя реально (физически) на входе за это время значение может поменяться раз десять.
Кстати, у S7-200 есть специальные команды для чтения напрямую с физических входов и записи напрямую в физические выходы. Такие команды используются очень редко.

m-n-tihiy
Дилетант
Сообщения: 16
Зарегистрирован: 24 дек 2012, 09:24

Re: Основы Step7 Microwin

Сообщение m-n-tihiy »

Добрый день, и вот в продолжении вопроса с подпрограммами)
Предыдущие ответы дали ясность в понимании , касаемо состояний катушек Q и M.
Но остался не понятный момент.
Почему же , если на выходе подпрограммы используется переменная V то она все равно остается висеть в последнем состояние , даже если подпрограмма завершила свое выполнение , и на ее выходе уже ничего нет ?
Ну и еще один вопрос.
Какой тип переменной выбрать и можно ли сделать так, чтобы имея переменную с целочисленным значением , задавать ее на уставки таймеров?
За ранее спасибо.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Основы Step7 Microwin

Сообщение Михайло »

m-n-tihiy писал(а):Почему же , если на выходе подпрограммы используется переменная V то она все равно остается висеть в последнем состояние , даже если подпрограмма завершила свое выполнение , и на ее выходе уже ничего нет ?
Ответ на вопрос "Почему?" я дам ниже, а на вопрос "Как?" у Вас правильный ответ. Переменные V, Q, M действительно не сбрасываются после окончания выполнения подпрограммы, и это все в соответствии с задумкой разработчиков контроллера.
Почему? Дело в том, чтобы установить или сбросить переменную, надо к ней обратиться с командой записи. Но в том-то и проблема, что после окончания выполнения подпрограммы такая команда не выполняется, в частности, не выполняется команда обнуления переменной. Именно поэтому ячейки V, Q, M "висят". Чтобы сбросить, нужно принудительно запустить специально заготовленную подпрограмму или еще что-то, чтобы обнулить все необходимые переменные.
Это наверное не надо понимать, это надо запомнить.
m-n-tihiy писал(а):Какой тип переменной выбрать и можно ли сделать так, чтобы имея переменную с целочисленным значением , задавать ее на уставки таймеров?
Попробуйте INT, WORD или даже BYTE... Я что-то не помню. Метод тыка должен помочь, либо просто посмотрите у таймера тип данных у входа PT.

Grim
Дилетант
Сообщения: 22
Зарегистрирован: 14 апр 2015, 12:33
Откуда: Новосибирск

Re: Основы Step7 Microwin

Сообщение Grim »

Подскажите пожалуйста стоит такая задача:
Есть 80 различных сигналов которые находятся в одной globalDB можно ли их при помощи какой то функции или блока обнулить их состояния? Это грубо говоря алармы которые нужно отключить одной кнопкой а прописывать 80 строк сами знаете что не хочется

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Основы Step7 Microwin

Сообщение Автоматизатор »

Grim писал(а):globalDB
Имеется ввиду битовый массив V-памяти контроллера Simatic S7-200 (среда программирования Step7 Microwin) ?

Там есть команда R - сброс бита. Вверху пишется начальный адрес бита, внизу - количество сбрасываемых бит.

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Основы Step7 Microwin

Сообщение Alexey »

Не могу понять, почему две одинаковых процедуры работают совершенно поразному????

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Основы Step7 Microwin

Сообщение Alexey »

Абсолютно две одинаковые процедуры (sbr0, sbr1) работают по разному, одна отрабатывает нормально а вторая зацикливается, хотел выложить проект, но расширение mwp запрещено

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Основы Step7 Microwin

Сообщение Михайло »

Что значит "зацикливается"? Нормально - это значит один раз запускается, а зацикливается - запускается много раз? Может процедуры по-разному запускаются? Как проверяете?

demalhome
Любитель
Сообщения: 27
Зарегистрирован: 27 фев 2013, 20:27

Re: Основы Step7 Microwin

Сообщение demalhome »

Одно слово зацикливаться по отношению к ПЛК звучит нелепо.
Основное отличие ПЛК от какой либо среды программирования на ПК в том, что в ПЛК цикл надо тормозить, а в ПК цикл надо формировать.
Простейший пример
При вызове функции в ПЛК a:=a+1 'a' будет увеличиваться до "бесконечности".
При вызове функции в ПК а:=a+1 'а' увеличится на единицу.

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Основы Step7 Microwin

Сообщение Alexey »

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

Ответить