Всем привет.
Такой вопрос. Есть контроллер S7-300 CPU315
Написал тестовую програмку. Всё работает вроде как и нормально, только не совсем. Дело в том что контроллер в момент выключения, другими словами физического отключения напряжения питания пишет свое состояние. Это конечно же весьма забавно и в каких то случаях весьма удобно и необходимо.
Как сделать так чтоб не сохранял своего состояния на момент выключения или сохранял но не полностью, а только то что нужно?
Получается смешная ситуация после включения контроллера программа стартует не с начала, а с того места где пропало питание. Так как основное тело программы в графсете и сразу за первой секвенцией идет секвенция которая делает своеобразную инициализацию безопасно приводя например какой то механизм в исходное состояние и покуда не возникнет такое состояние то ничего дальше происходить не должно. И только потом главный цикл. А получается что стартует сразу в главном цикле там где пропало питание. Как сделать так чтоб контролер стартовал с начала программы всегда?
Вопрос о сохранении памяти состояния S7-300
Re: Вопрос о сохранении памяти состояния S7-300
Язык GRAPH?
Re: Вопрос о сохранении памяти состояния S7-300
Это не так. Вы путаете понятия, ваш "главный цикл" и главный цикл программы ПЛК немного разные вещи. Изучайте матчасть, например, назначение OB1, OB35 и OB100. Оттуда будет понятно, что вам при запуске контролера надо перевести ваш цикл (совершенно неважно на графе он написан или еще на каких языках от сименса) в стартовое состояние. И это ваша забота как программиста. Хотя бы Бергера полистали вместо "легкого чтения".
Re: Вопрос о сохранении памяти состояния S7-300
Не непутаю. Возможно и путаю.
Вся программа написана как отдельный FB со своим именем и блоком вставлена OB1
Весь FB написан в графе все секвенции написаны отдельными блоками FB и функциями.
Так как OB1 дефакто есть главный цикл MAIN то весь этот блок должен крутится с верху до низу с лева на право. Если вошел в цикл то крутится в цикле внутри себя.
Но после подачи питания все начинатся должно с первой секвенции, а не с того места где закончили.
На сколько я понимаю OB1 вообще не позволяет создавать что либо в графсете. Либо я не понял как это сделать.
На самом деле я знаю как решить эту проблему. Но хочется решить более красиво как на мой взгляд. Да и более детально разобраться в такой проблеме было бы не плохо.
Как там бергер написал - бойтесь бесконечных циклов без условий выхода.
Есть у меня Бергер. Я его распечатал и сшил. Хорошая книга.
Re: Вопрос о сохранении памяти состояния S7-300
Так графсет должен иметь управляющий блок, а в нем процедуру инициализации, а в контроллере есть OB100. В руководство по графсету загляните.
Re: Вопрос о сохранении памяти состояния S7-300
POV, при всём уважении, но то что я накарябал своими кривыми руками это всего лишь стандартный пример из пакета STEP7. Я всего лишь немного изменил цикл. Потому как грешным делом подумал что делать проход от первого шага и сверять инициализацию не самый большой смысл. Хотя смысл есть.
То что Вы приводите блоки всё вроде как бы так. Но пример который дает сименс выглядит по другому, не используются дополнительные блоки, к тому же если не изменяет память FB35 связан с прерываниями, а я их не использую. Примеры которые я имею дополнительно это программы с действующего оборудования, хотя там всё намного сложнее.
Просто хотелось сделать более просто.
То что Вы приводите блоки всё вроде как бы так. Но пример который дает сименс выглядит по другому, не используются дополнительные блоки, к тому же если не изменяет память FB35 связан с прерываниями, а я их не использую. Примеры которые я имею дополнительно это программы с действующего оборудования, хотя там всё намного сложнее.
Просто хотелось сделать более просто.
Re: Вопрос о сохранении памяти состояния S7-300
PS
POV Подскажите где руководство толковое по графсету взять на русском языке?
Очень нужно.
Искал, не нашел.
POV Подскажите где руководство толковое по графсету взять на русском языке?
Очень нужно.
Искал, не нашел.