[?+]: Нелогическое выполнение программы S7 1200

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
AlekMalek
Posts: 29
Joined: Wed Mar 27, 2013 2:37 pm

[?+]: Нелогическое выполнение программы S7 1200

Post by AlekMalek » Thu Dec 07, 2017 9:22 am

Здравствуйте.

Сделал и отладил свою большезную программу в CodeSys с целью дальнейшего использования в контроллере Simenes S7-1200. Перевел эту программу в TIA-portal путем копирования.

Отлаживаю ее, а она не хочет работать нормально. А именно один из ее функциональных блоков, который находится третьим функциональным блоком по счету вызова блока из блока программы Main. То есть, идет такой вызов: Main > FB1 > FB2 > xFBx.
Если этот функциональный блок запустить в программе main, то работает нормально. Все переменные Static.

Эту неработоспособность я понимаю в том плане, что переменная после ее инициализации не записывается в память (или не успевает записаться) и при втором повторении цикла, программа "проскакивает" нужный элемент IF-кода.
Может где-то нужно поставить какую-то галочку в настройках функциональных блоков? Меня просто убивает то, что у TIA Portal отсутствует режим Ofline симуляции и функция Debug без которого я не могу определить как думает программа и где она запутывается. Программа стоит просто сумасшедших денег, а в функциональности наладки значительно уступает бесплатной CodeSys.

DiVan
Site Admin
Posts: 127
Joined: Mon Aug 15, 2011 2:27 pm

Re: Нелогическое выполнение программы S7 1200

Post by DiVan » Thu Dec 07, 2017 11:10 am

Нелогичное описание проблемы - одни эмоции (boom)
Main > FB1 > FB2 > xFBx.......> zFBz
и далее такой же сумбур вымыслов
Меня просто убивает то, что у TIA Portal отсутствует режим Ofline симуляции
у твоего Портала имеется Online симуляция ? :haha:
PLCSIM v14 поддерживает симуляцию S7-1200 v4.*
Программа стоит просто сумасшедших денег, а в функциональности наладки значительно уступает бесплатной CodeSys.
Васькин Портал для S7-1200 стоит сумасшедших 300 евро... хотя можно скачать условно-бесплатный Триал.

AlekMalek
Posts: 29
Joined: Wed Mar 27, 2013 2:37 pm

Re: Нелогическое выполнение программы S7 1200

Post by AlekMalek » Thu Dec 07, 2017 1:41 pm

Ну как-бы уже третий день отлаживаю маленький участок своей программы... поэтому и не удивительно, что переполняют эмоции. (h)
Я отлаживаю свою программу на реальном ПЛК с подключенными к нему механизмами и дело не в симуляции а в необходимости остановки программы в определенном месте и последующего прохода программы построчно, аналогично другим средам программирования. Но это не касается сути вопроса.

Если коротко, то вопрос вот в чем:
Имеется функциональный блок (FBx), помещенный внутри FB2, который в свою очередь помещен внутри FB1. И FB1 помещено внутри программы main. Этот функциональный блок FBx sp@@m отказывается работать так как положено. Он работает но в определенном месте не видя изменения координаты переходит в другой режим. Программа построена таким образом, что каждый цикл программы важный и не записав значение в первом цикле, во втором - "поезду уйдет". Хотелось мне сделать эту программу по-проще и по-надежнее, но ничего умнее как-то не придумал.

Но вот главный вопрос, если я этот FBx помещаю в программу main, то все работает как надо. Почему??!
Повторюсь, начинал я писать программу в CodeSys и там все работало как часы.

DiVan
Site Admin
Posts: 127
Joined: Mon Aug 15, 2011 2:27 pm

Re: Нелогическое выполнение программы S7 1200

Post by DiVan » Thu Dec 07, 2017 1:50 pm

Как и в обычном Степе для контроля прохождения программы использую:
- вспомогательные триггеры, взводимые событием дохода до этой ветки - либо битом, либо фронтом по взводу или спаду бита
- счётчики - показывающие количество раз прохода до этой ветки
- команду MOVE для скидывания контрольного слова, в основное меркерное поле, сообщающее о прохождении данной ветки.
Image

Image
У каждого контрллера могут быть свои особенности ограничения - в том числе и по вложенности вызовов блоков.
На какой версии Портала и на каком языке написана программа ?
В Портале 14 можно в одном блоке использовать написание веток на разных языках через изменение свойств блока.
Но вот главный вопрос, если я этот FBx помещаю в программу main, то все работает как надо. Почему??!
Повторюсь, начинал я писать программу в CodeSys и там все работало как часы.
Без анализа твоего творения невозможно дать ответ.
Я написал программу для STM32... не понимаю почему она не загружается в S7-1200 ? ... Ведь в Дисковери она работает как надо !!!

AlekMalek
Posts: 29
Joined: Wed Mar 27, 2013 2:37 pm

Re: Нелогическое выполнение программы S7 1200

Post by AlekMalek » Mon Dec 11, 2017 3:07 pm

Спасибо за ответ, DiVan. Удалось наладить свою программу. Нашел в чем была проблема. Проблема не зависела от вложенности блоков, но от внутренних переменных.
Использую Портал 14.

Post Reply