Здравствуйте.
Сделал и отладил свою большезную программу в CodeSys с целью дальнейшего использования в контроллере Simenes S7-1200. Перевел эту программу в TIA-portal путем копирования.
Отлаживаю ее, а она не хочет работать нормально. А именно один из ее функциональных блоков, который находится третьим функциональным блоком по счету вызова блока из блока программы Main. То есть, идет такой вызов: Main > FB1 > FB2 > xFBx.
Если этот функциональный блок запустить в программе main, то работает нормально. Все переменные Static.
Эту неработоспособность я понимаю в том плане, что переменная после ее инициализации не записывается в память (или не успевает записаться) и при втором повторении цикла, программа "проскакивает" нужный элемент IF-кода.
Может где-то нужно поставить какую-то галочку в настройках функциональных блоков? Меня просто убивает то, что у TIA Portal отсутствует режим Ofline симуляции и функция Debug без которого я не могу определить как думает программа и где она запутывается. Программа стоит просто сумасшедших денег, а в функциональности наладки значительно уступает бесплатной CodeSys.
[?+]: Нелогическое выполнение программы S7 1200
-
- Posts: 39
- Joined: Wed Mar 27, 2013 2:37 pm
-
- Site Admin
- Posts: 127
- Joined: Mon Aug 15, 2011 2:27 pm
Re: Нелогическое выполнение программы S7 1200
Нелогичное описание проблемы - одни эмоции
PLCSIM v14 поддерживает симуляцию S7-1200 v4.*
и далее такой же сумбур вымысловMain > FB1 > FB2 > xFBx.......> zFBz
у твоего Портала имеется Online симуляция ?Меня просто убивает то, что у TIA Portal отсутствует режим Ofline симуляции
PLCSIM v14 поддерживает симуляцию S7-1200 v4.*
Васькин Портал для S7-1200 стоит сумасшедших 300 евро... хотя можно скачать условно-бесплатный Триал.Программа стоит просто сумасшедших денег, а в функциональности наладки значительно уступает бесплатной CodeSys.
-
- Posts: 39
- Joined: Wed Mar 27, 2013 2:37 pm
Re: Нелогическое выполнение программы S7 1200
Ну как-бы уже третий день отлаживаю маленький участок своей программы... поэтому и не удивительно, что переполняют эмоции.
Я отлаживаю свою программу на реальном ПЛК с подключенными к нему механизмами и дело не в симуляции а в необходимости остановки программы в определенном месте и последующего прохода программы построчно, аналогично другим средам программирования. Но это не касается сути вопроса.
Если коротко, то вопрос вот в чем:
Имеется функциональный блок (FBx), помещенный внутри FB2, который в свою очередь помещен внутри FB1. И FB1 помещено внутри программы main. Этот функциональный блок FBx sp@@m отказывается работать так как положено. Он работает но в определенном месте не видя изменения координаты переходит в другой режим. Программа построена таким образом, что каждый цикл программы важный и не записав значение в первом цикле, во втором - "поезду уйдет". Хотелось мне сделать эту программу по-проще и по-надежнее, но ничего умнее как-то не придумал.
Но вот главный вопрос, если я этот FBx помещаю в программу main, то все работает как надо. Почему??!
Повторюсь, начинал я писать программу в CodeSys и там все работало как часы.
Я отлаживаю свою программу на реальном ПЛК с подключенными к нему механизмами и дело не в симуляции а в необходимости остановки программы в определенном месте и последующего прохода программы построчно, аналогично другим средам программирования. Но это не касается сути вопроса.
Если коротко, то вопрос вот в чем:
Имеется функциональный блок (FBx), помещенный внутри FB2, который в свою очередь помещен внутри FB1. И FB1 помещено внутри программы main. Этот функциональный блок FBx sp@@m отказывается работать так как положено. Он работает но в определенном месте не видя изменения координаты переходит в другой режим. Программа построена таким образом, что каждый цикл программы важный и не записав значение в первом цикле, во втором - "поезду уйдет". Хотелось мне сделать эту программу по-проще и по-надежнее, но ничего умнее как-то не придумал.
Но вот главный вопрос, если я этот FBx помещаю в программу main, то все работает как надо. Почему??!
Повторюсь, начинал я писать программу в CodeSys и там все работало как часы.
-
- Site Admin
- Posts: 127
- Joined: Mon Aug 15, 2011 2:27 pm
Re: Нелогическое выполнение программы S7 1200
Как и в обычном Степе для контроля прохождения программы использую:
- вспомогательные триггеры, взводимые событием дохода до этой ветки - либо битом, либо фронтом по взводу или спаду бита
- счётчики - показывающие количество раз прохода до этой ветки
- команду MOVE для скидывания контрольного слова, в основное меркерное поле, сообщающее о прохождении данной ветки.
На какой версии Портала и на каком языке написана программа ?
В Портале 14 можно в одном блоке использовать написание веток на разных языках через изменение свойств блока.
Я написал программу для STM32... не понимаю почему она не загружается в S7-1200 ? ... Ведь в Дисковери она работает как надо !!!
- вспомогательные триггеры, взводимые событием дохода до этой ветки - либо битом, либо фронтом по взводу или спаду бита
- счётчики - показывающие количество раз прохода до этой ветки
- команду MOVE для скидывания контрольного слова, в основное меркерное поле, сообщающее о прохождении данной ветки.
У каждого контрллера могут быть свои особенности ограничения - в том числе и по вложенности вызовов блоков.
На какой версии Портала и на каком языке написана программа ?
В Портале 14 можно в одном блоке использовать написание веток на разных языках через изменение свойств блока.
Без анализа твоего творения невозможно дать ответ.Но вот главный вопрос, если я этот FBx помещаю в программу main, то все работает как надо. Почему??!
Повторюсь, начинал я писать программу в CodeSys и там все работало как часы.
Я написал программу для STM32... не понимаю почему она не загружается в S7-1200 ? ... Ведь в Дисковери она работает как надо !!!
-
- Posts: 39
- Joined: Wed Mar 27, 2013 2:37 pm
Re: Нелогическое выполнение программы S7 1200
Спасибо за ответ, DiVan. Удалось наладить свою программу. Нашел в чем была проблема. Проблема не зависела от вложенности блоков, но от внутренних переменных.
Использую Портал 14.
Использую Портал 14.