1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Simatic инициализация блока данных в программе. Как?

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
Welder
здесь недавно
здесь недавно
Сообщения: 91
Зарегистрирован: 02 мар 2014, 21:02
Имя: Роберт
Страна: Казань
город/регион: Республика Татарстан
Благодарил (а): 9 раз
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Welder »

Как инициализировать (привести к начальным значениям) блок данных (DB) в программе? Ручками лень, может функция есть какая нибудь? Ведь на создание и удаление есть, и на инициализацию наверно тоже должно быть. Сам искал, не нашёл.

Заранее спасибо.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3558
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Simatic инициализация блока данных в программе. Как?

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

Какой контроллер и среда разработки?

Автор темы
Welder
здесь недавно
здесь недавно
Сообщения: 91
Зарегистрирован: 02 мар 2014, 21:02
Имя: Роберт
Страна: Казань
город/регион: Республика Татарстан
Благодарил (а): 9 раз
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Welder »

Михайло писал(а):Какой контроллер и среда разработки?
313С-2DP ; Step 7
Аватара пользователя

Serex
эксперт
эксперт
Сообщения: 2085
Зарегистрирован: 15 авг 2011, 21:36
Имя: Пупков Сергей Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 101 раз
Поблагодарили: 132 раза

Simatic инициализация блока данных в программе. Как?

Сообщение Serex »

Нужно сделать чтобы текущие значения были равны значениям по-умолчанию?
Если это не ретентив значения, то они сами сбрасываются при отключении питания в SharedDB.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3558
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Simatic инициализация блока данных в программе. Как?

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

Расширяю кругозор: Step7 v13?

Автор темы
Welder
здесь недавно
здесь недавно
Сообщения: 91
Зарегистрирован: 02 мар 2014, 21:02
Имя: Роберт
Страна: Казань
город/регион: Республика Татарстан
Благодарил (а): 9 раз
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Welder »

Михайло писал(а): Расширяю кругозор: Step7 v13?
Нет. Step 7 V5.4. Не думал, что версия ПО имеет значения, языки и функции одни для одного контроллера. Вроде.
Serex писал(а): Нужно сделать чтобы текущие значения были равны значениям по-умолчанию?
Да. Если при объявлении в DB я переменную INT установил на число 5, то она должна в это значение уйти.
Serex писал(а): Если это не ретентив значения, то они сами сбрасываются при отключении питания в SharedDB.
Нет. Так не пойдёт, каждый раз бегать к ПЛК и выдёргивать разетку мне не нравится :-P Нужно чтоб я нажал одну кнопочку и он сбросился. Но при этом я не хочу в программе прописывать все переменные и по кнопке их в значения переводить. Может SFC/SFB какой нибудь есть? Потому что для создания и удаления DB есть.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17467
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 744 раза
Поблагодарили: 1277 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Jackson »

Welder писал(а): каждый раз бегать к ПЛК и выдёргивать разетку мне не нравится Нужно чтоб я нажал одну кнопочку и он сбросился.
А дистанционно эту кнопочку не сделать? На выход того же PLC не повесить? :)

И вообще, если Вам нужно постоянно ресетить контроллер - тут что-то не в порядке не с контроллером, а с головой, которая такую программу для него написала. Предлагаю исправлять первопричину, а не симптомы.
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
Welder
здесь недавно
здесь недавно
Сообщения: 91
Зарегистрирован: 02 мар 2014, 21:02
Имя: Роберт
Страна: Казань
город/регион: Республика Татарстан
Благодарил (а): 9 раз
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Welder »

TEB писал(а):
А дистанционно эту кнопочку не сделать? На выход того же PLC не повесить? :)

И вообще, если Вам нужно постоянно ресетить контроллер - тут что-то не в порядке не с контроллером, а с головой, которая такую программу для него написала. Предлагаю исправлять первопричину, а не симптомы.
Вы не поняли. Ресетить контроллер мне не нужно, мне нужно «ресетить» данные в одном DB. Хотелось это делать какой нибудь стандартной функцией (если она есть), и не прописывать все переменные в программе.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17467
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 744 раза
Поблагодарили: 1277 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Jackson »

Welder писал(а): Вы не поняли. Ресетить контроллер мне не нужно, мне нужно «ресетить» данные в одном DB.
Тогда надо выражаться яснее, ибо Вы говорите явно:
Welder писал(а): Нет. Так не пойдёт, каждый раз бегать к ПЛК и выдёргивать разетку мне не нравится Нужно чтоб я нажал одну кнопочку и он сбросился. Но при этом я не хочу в программе прописывать все переменные и по кнопке их в значения переводить.
Можно системный бит дернуть и контроллер уйдет хоть в Cold Restart хоть в Warm, но это опасно т.к. можно получить зацикливание и вечный рестарт - поэтому надёжнее выходом дёрнуть питание. Но это всё неправильно конечно.

А объявить константы - не? По команде их можно скопировать в Ваши переменные и всё.
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
Welder
здесь недавно
здесь недавно
Сообщения: 91
Зарегистрирован: 02 мар 2014, 21:02
Имя: Роберт
Страна: Казань
город/регион: Республика Татарстан
Благодарил (а): 9 раз
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Welder »

TEB писал(а):А объявить константы - не? По команде их можно скопировать в Ваши переменные и всё.
А если их пара сотен разных? Как быть? Вот и ищу функцию для таких вещей.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3558
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Simatic инициализация блока данных в программе. Как?

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

Аватара пользователя

aranea
знаток Eplan
знаток Eplan
Сообщения: 1136
Зарегистрирован: 21 сен 2012, 22:45
Имя: aranea
Благодарил (а): 27 раз
Поблагодарили: 155 раз

Simatic инициализация блока данных в программе. Как?

Сообщение aranea »

Welder писал(а):А если их пара сотен разных? Как быть? Вот и ищу функцию для таких вещей.
если вам лень это делать, то это не значит, что правильно будет этого не делать

инициализация блока Initial значениями (даже если у вас получится) будет непрозрачной и чреватой ошибками (зальет кто DB с другими начальными значениями и ваша программа обязана будет использовать их, без возможности оперативного исправления)
смотрите в сторону FILL или BLKMOV
пишите из Actual values другой DB в нужную DB
значение другой DB можно вывести на экран, чтобы понятно было какие значения сейчас будут записаны
Изображение
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17467
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 744 раза
Поблагодарили: 1277 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Jackson »

Welder писал(а): А если их пара сотен разных?
А это проблема?
aranea писал(а): если вам лень это делать, то это не значит, что правильно будет этого не делать
Да.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Serex
эксперт
эксперт
Сообщения: 2085
Зарегистрирован: 15 авг 2011, 21:36
Имя: Пупков Сергей Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 101 раз
Поблагодарили: 132 раза

Simatic инициализация блока данных в программе. Как?

Сообщение Serex »

Начальные значения, они для того и начальные, что переписываются в актуальные при перезагрузке питания контроллера. Это как бы так задумано изначально.
Если вам нужен блок данных с двумя значениями - первое актуальное, второе архивное, которое переписывается по триггеру, то нужно развивать программу именно таким образом.

Kopylov
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 05 окт 2015, 11:40
Имя: Копылов Сергей Анатольевич
Благодарил (а): 6 раз
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение Kopylov »

Ох, какую старую тему я откопал :) Сам забыл как инициализировать блок данных, думал здесь есть ответ, но не нашёл. русскоязычный сайт Сименса не работает. В общем, вспомнил как надо инициализировать, напишу здесь, может ещё кому пригодится.
Для инициализации блока данных открываем этот DB в редакторе LAD/STL/FBD, идём в меню "View" и выбираем "Data View". После этого в меню "Edit" станет доступен пункт "Initialize Data Block". Нажимаем его, значения из Initial Value перепишутся в Actual Value. Теперь важный момент: после этого нужно обязательно прогрузить блок данных кнопкой "Download" (или в меню "PLC -> Download"). Если не нажать эту кнопку и одеть очки - то текущие значения из ПЛК подгрузятся в Actual Value блока данных и инициализации не произойдёт.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Simatic инициализация блока данных в программе. Как?

Сообщение v0v »

Можно попробовать воспользоваться SFC20(копирование), SFC21(инициализация)

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 35 раз

Simatic инициализация блока данных в программе. Как?

Сообщение ZuElecRu »

А как сделать обратное? Значения которые сейчас онлайн сделать начальными. кроме как ручками я другого способа пока не нашел. Иногда, на 10 летних и более ПЛК при каких-то обстоятельствах, в основном отключениях электроэнергии, у меня скидывались величины в блоках данных на начальные. (Очень неприятная ситуация, трудно ее отмониторить, хорошо, если дежурный персонал, замечает изменения в работе установки. А есть же наверно установки, где это вообще критично...) Некоторые последствия этого можно устранить, если исправить в проекте начальные значения (особенно актуально для настроек, скорректированных во время пусконаладки и последующей эксплуатации установки) на актуальные. Хотя бы часть проблем это решает.

AppCreator
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 02 фев 2023, 10:38
Имя: Владимир
Страна: РФ
город/регион: Восьмипалатинск
Благодарил (а): 4 раза
Поблагодарили: 11 раз

Simatic инициализация блока данных в программе. Как?

Сообщение AppCreator »

Программно - с помощью инструкции WRIT_DBL. Вызывается по событию, т.к. в противном случае циклическая запись быстро выработает ресурс MMC.

Slavchuk
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 15 авг 2022, 15:58
Имя: Вячеслав

Simatic инициализация блока данных в программе. Как?

Сообщение Slavchuk »

Вот тоже понадобился такой функционал. Пока искал информацию, придумал вот что.
Можно попробовать создать DB с дефолтными значениями, и по команде копировать ее значения в необходимую нам DB.
Ответить

Вернуться в «Simatic Step7»