- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Simatic инициализация блока данных в программе. Как?
-
- здесь недавно
- Сообщения: 93
- Зарегистрирован: 02 мар 2014, 21:02
- Имя: Роберт
- Страна: Казань
- город/регион: Республика Татарстан
- Благодарил (а): 9 раз
- Поблагодарили: 11 раз
Simatic инициализация блока данных в программе. Как?
Как инициализировать (привести к начальным значениям) блок данных (DB) в программе? Ручками лень, может функция есть какая нибудь? Ведь на создание и удаление есть, и на инициализацию наверно тоже должно быть. Сам искал, не нашёл.
Заранее спасибо.
Заранее спасибо.
-
- здесь недавно
- Сообщения: 93
- Зарегистрирован: 02 мар 2014, 21:02
- Имя: Роберт
- Страна: Казань
- город/регион: Республика Татарстан
- Благодарил (а): 9 раз
- Поблагодарили: 11 раз
Simatic инициализация блока данных в программе. Как?
313С-2DP ; Step 7Михайло писал(а):Какой контроллер и среда разработки?
-
- эксперт
- Сообщения: 2092
- Зарегистрирован: 15 авг 2011, 21:36
- Имя: Пупков Сергей Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 135 раз
- Поблагодарили: 174 раза
Simatic инициализация блока данных в программе. Как?
Нужно сделать чтобы текущие значения были равны значениям по-умолчанию?
Если это не ретентив значения, то они сами сбрасываются при отключении питания в SharedDB.
Если это не ретентив значения, то они сами сбрасываются при отключении питания в SharedDB.
-
- здесь недавно
- Сообщения: 93
- Зарегистрирован: 02 мар 2014, 21:02
- Имя: Роберт
- Страна: Казань
- город/регион: Республика Татарстан
- Благодарил (а): 9 раз
- Поблагодарили: 11 раз
Simatic инициализация блока данных в программе. Как?
Нет. Step 7 V5.4. Не думал, что версия ПО имеет значения, языки и функции одни для одного контроллера. Вроде.
Да. Если при объявлении в DB я переменную INT установил на число 5, то она должна в это значение уйти.
Нет. Так не пойдёт, каждый раз бегать к ПЛК и выдёргивать разетку мне не нравится Нужно чтоб я нажал одну кнопочку и он сбросился. Но при этом я не хочу в программе прописывать все переменные и по кнопке их в значения переводить. Может SFC/SFB какой нибудь есть? Потому что для создания и удаления DB есть.
-
- администратор
- Сообщения: 17596
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 826 раз
- Поблагодарили: 1655 раз
Simatic инициализация блока данных в программе. Как?
А дистанционно эту кнопочку не сделать? На выход того же PLC не повесить? :)
И вообще, если Вам нужно постоянно ресетить контроллер - тут что-то не в порядке не с контроллером, а с головой, которая такую программу для него написала. Предлагаю исправлять первопричину, а не симптомы.
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 93
- Зарегистрирован: 02 мар 2014, 21:02
- Имя: Роберт
- Страна: Казань
- город/регион: Республика Татарстан
- Благодарил (а): 9 раз
- Поблагодарили: 11 раз
Simatic инициализация блока данных в программе. Как?
Вы не поняли. Ресетить контроллер мне не нужно, мне нужно «ресетить» данные в одном DB. Хотелось это делать какой нибудь стандартной функцией (если она есть), и не прописывать все переменные в программе.
-
- администратор
- Сообщения: 17596
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 826 раз
- Поблагодарили: 1655 раз
Simatic инициализация блока данных в программе. Как?
Тогда надо выражаться яснее, ибо Вы говорите явно:
Можно системный бит дернуть и контроллер уйдет хоть в Cold Restart хоть в Warm, но это опасно т.к. можно получить зацикливание и вечный рестарт - поэтому надёжнее выходом дёрнуть питание. Но это всё неправильно конечно.
А объявить константы - не? По команде их можно скопировать в Ваши переменные и всё.
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 93
- Зарегистрирован: 02 мар 2014, 21:02
- Имя: Роберт
- Страна: Казань
- город/регион: Республика Татарстан
- Благодарил (а): 9 раз
- Поблагодарили: 11 раз
Simatic инициализация блока данных в программе. Как?
А если их пара сотен разных? Как быть? Вот и ищу функцию для таких вещей.TEB писал(а):А объявить константы - не? По команде их можно скопировать в Ваши переменные и всё.
-
- знаток Eplan
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 30 раз
- Поблагодарили: 165 раз
Simatic инициализация блока данных в программе. Как?
если вам лень это делать, то это не значит, что правильно будет этого не делать
инициализация блока Initial значениями (даже если у вас получится) будет непрозрачной и чреватой ошибками (зальет кто DB с другими начальными значениями и ваша программа обязана будет использовать их, без возможности оперативного исправления)
смотрите в сторону FILL или BLKMOV
пишите из Actual values другой DB в нужную DB
значение другой DB можно вывести на экран, чтобы понятно было какие значения сейчас будут записаны
-
- администратор
- Сообщения: 17596
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 826 раз
- Поблагодарили: 1655 раз
Simatic инициализация блока данных в программе. Как?
А это проблема?
Да.
По вопросам работы Форума можно обратиться по этим контактам.
-
- эксперт
- Сообщения: 2092
- Зарегистрирован: 15 авг 2011, 21:36
- Имя: Пупков Сергей Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 135 раз
- Поблагодарили: 174 раза
Simatic инициализация блока данных в программе. Как?
Начальные значения, они для того и начальные, что переписываются в актуальные при перезагрузке питания контроллера. Это как бы так задумано изначально.
Если вам нужен блок данных с двумя значениями - первое актуальное, второе архивное, которое переписывается по триггеру, то нужно развивать программу именно таким образом.
Если вам нужен блок данных с двумя значениями - первое актуальное, второе архивное, которое переписывается по триггеру, то нужно развивать программу именно таким образом.
-
- здесь недавно
- Сообщения: 27
- Зарегистрирован: 05 окт 2015, 11:40
- Имя: Копылов Сергей Анатольевич
- Благодарил (а): 6 раз
- Поблагодарили: 11 раз
Simatic инициализация блока данных в программе. Как?
Ох, какую старую тему я откопал :) Сам забыл как инициализировать блок данных, думал здесь есть ответ, но не нашёл. русскоязычный сайт Сименса не работает. В общем, вспомнил как надо инициализировать, напишу здесь, может ещё кому пригодится.
Для инициализации блока данных открываем этот DB в редакторе LAD/STL/FBD, идём в меню "View" и выбираем "Data View". После этого в меню "Edit" станет доступен пункт "Initialize Data Block". Нажимаем его, значения из Initial Value перепишутся в Actual Value. Теперь важный момент: после этого нужно обязательно прогрузить блок данных кнопкой "Download" (или в меню "PLC Download"). Если не нажать эту кнопку и одеть очки - то текущие значения из ПЛК подгрузятся в Actual Value блока данных и инициализации не произойдёт.
Для инициализации блока данных открываем этот DB в редакторе LAD/STL/FBD, идём в меню "View" и выбираем "Data View". После этого в меню "Edit" станет доступен пункт "Initialize Data Block". Нажимаем его, значения из Initial Value перепишутся в Actual Value. Теперь важный момент: после этого нужно обязательно прогрузить блок данных кнопкой "Download" (или в меню "PLC Download"). Если не нажать эту кнопку и одеть очки - то текущие значения из ПЛК подгрузятся в Actual Value блока данных и инициализации не произойдёт.
-
- не первый раз у нас
- Сообщения: 344
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
Simatic инициализация блока данных в программе. Как?
Можно попробовать воспользоваться SFC20(копирование), SFC21(инициализация)
-
- освоился
- Сообщения: 290
- Зарегистрирован: 09 авг 2016, 13:49
- Имя: Чистилин Андрей Анатольевич
- Страна: Россия
- город/регион: Малоярославец
- Благодарил (а): 31 раз
- Поблагодарили: 35 раз
Simatic инициализация блока данных в программе. Как?
А как сделать обратное? Значения которые сейчас онлайн сделать начальными. кроме как ручками я другого способа пока не нашел. Иногда, на 10 летних и более ПЛК при каких-то обстоятельствах, в основном отключениях электроэнергии, у меня скидывались величины в блоках данных на начальные. (Очень неприятная ситуация, трудно ее отмониторить, хорошо, если дежурный персонал, замечает изменения в работе установки. А есть же наверно установки, где это вообще критично...) Некоторые последствия этого можно устранить, если исправить в проекте начальные значения (особенно актуально для настроек, скорректированных во время пусконаладки и последующей эксплуатации установки) на актуальные. Хотя бы часть проблем это решает.
-
- здесь недавно
- Сообщения: 33
- Зарегистрирован: 02 фев 2023, 10:38
- Имя: Владимир
- Страна: РФ
- город/регион: Восьмипалатинск
- Благодарил (а): 4 раза
- Поблагодарили: 12 раз
Simatic инициализация блока данных в программе. Как?
Программно - с помощью инструкции WRIT_DBL. Вызывается по событию, т.к. в противном случае циклическая запись быстро выработает ресурс MMC.
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 15 авг 2022, 15:58
- Имя: Вячеслав
Simatic инициализация блока данных в программе. Как?
Вот тоже понадобился такой функционал. Пока искал информацию, придумал вот что.
Можно попробовать создать DB с дефолтными значениями, и по команде копировать ее значения в необходимую нам DB.
Можно попробовать создать DB с дефолтными значениями, и по команде копировать ее значения в необходимую нам DB.