Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: ПЛК110-хх[M02] Инициализация переменных

  1. #1
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,656

    По умолчанию ПЛК110-хх[M02] Инициализация переменных

    Всем привет.

    Итак имеем ПЛК110-60[M02] Retain переменные в списке с предустановленными значениями (Var_i1 :int:=123; ), изначально в "чистый" ПЛК с завода все зашилось и проинициализировалось, далее при обновлении программы все Retain сбросились в "0" и что только я не делал, дабы они снова проинициализировались, перепробовал все виды сбросов, полную перекомпиляцию.
    Собственно вопрос- какой правильный алгоритм действий для инициализации переменных после перепрошивки ПЛК. ПЛК свежий, версия прошивки последняя.

  2. #2
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    алгоритм действий для инициализации переменных после перепрошивки ПЛК.
    Не знаю на сколько правильный, но я делал так:

    init:bool; флаг инициализации.
    POU FirstInit; подпрограмма инициализации.
    DefaultVolume:bool; флаг установки значений по умолчанию, если о присвоении дефолтных значений надо знать в основной программе.
    ---
    В ПЛЦ_ПРГ в самом начале.
    Код:
    IF NOT init THEN FirstInit();
    init:=TRUE;
    END_IF;
    В FirstInit

    Код:
    IF *нужная переменная 1*=0 AND *нужная переменная 2*=0 AND *нужная переменная N*=0 
     THEN
        *нужная переменная 1*:=*нужное значение 1*;
        *нужная переменная 2*:=*нужное значение 2*;
         .
         .
        *нужная переменная N*:=*нужное значение N*;
        DefaultVolume:=TRUE; 
    END_IF;
    --
    Как это работает.
    При включении\сбросе\перепрошивке ПЛК флаг init равен FALSE.
    Следовательно происходит вызов подпрограммы FirstInit. Там проверяются несколько переменных на нулевое значение, и если да, то переменным присваиваются первоначальные\безопасные значения. Проверять можно не все требуемые переменные, а только несколько, однако желательно из тех, чье значение по замыслу не может быть нулевым. А вот присваивать можно всем.
    После однократного вызова FirstInit флаг init устанавливается в TRUE, что в последующих циклах отключает вызов FirstInit.
    Далее эти переменные можно изменять как угодно.

  3. #3
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Как это работает. .
    забавно, это как в мультфильме про простоквашино, теперь за ним еще полдня бегать чтоб фото отдать
    обоснуйте теперь как сюда впихнуть ретайны? Человек залил первоначально проект, в ретайнах появились значения, им заданные. После он их на кой-то обнулил и теперь ищет почему после перезагрузки они равны нулям
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  4. #4
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    При перепрошивке ретайны и область модбаса по определению в нулях. У меня не получилось делать методом присваивания в области описания переменных, к тому же имел опыт проблем с ПЛК110 старой версии, когда все слетало в нули при мертвом встроенном аккумуляторе при снятии питания. Вот и наработал такой способ. Я и не говорил что он правильный, я говорил что он рабочий.
    Да, не уточнил, что я все подобные переменные делаю глобальными. Область модбас(слейв) по определению ретайн и глобальна, работал в основном с ней.
    как сюда впихнуть ретайны?
    Так же как и любые другие. В чем проблема-то?

  5. #5
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,656

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    з Человек залил первоначально проект, в ретайнах появились значения, им заданные. После он их на кой-то обнулил и теперь ищет почему после перезагрузки они равны нулям
    Это вот не надо, я не умею "на кой-то", по должности не положено. Ретайн при прошивке "нулевого" заводского ПЛК нормально инициализируются, а вот потооом фифти-фифти.

    Sulfur, я подобные костыли давно знаю, применять имеет смысл только на ПЛК Овен! Потому как другие ПЛКшки стараются хранить в себе все что надо сколько есть у них сил и при обновлении программы всегда подтягиваются значения инициализации.

    Ретайн область модбас слэйв это тоже, так себе изобретение и работать с ним ...тоже зло, но это все не в тему.
    Вопрос остается в силе, если коротко то- почему в ПЛК с завода переменные инициализируются после прошивки, а потом после холодного сброса нет?

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Так же как и любые другие. В чем проблема-то?
    Допустим первый раз, ретайнов еще нет, заливают проект переменные инициализировались некими значениями из области объявлений, в Вашем случае при пуске программы своими фиксированными значениями. Во время работы выяснилось что переменная foo должна быть равна 75, её успешно присвоили из окна визуализации, а в Вашем коде инициализации остается значение 50. Внимание вопрос, какое значение будет у переменной после, как писалось в первом посте
    перепробовал все виды сбросов, полную перекомпиляцию
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Это вот не надо, я не умею "на кой-то", по должности не положено. Ретайн при прошивке "нулевого" заводского ПЛК нормально инициализируются, а вот потооом фифти-фифти.
    не запостил, значит небыл. Какие Ваши доказательства?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #8
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    capzap
    Насколько я понимаю, речь идет не о сохранении переменных на веки вечные для будущих поколений, а про защиту от сбоев или после перепрошивки. Если необходимо сохранять на веки вечные, то есть способы записать все нужное в файл. Только это будет усложнять код. И необходимость такого способа зависит от задачи. В моем случае сохранения в файл не требовалось, а необходимо было только установить безопасные значения на случай сбоя.
    Кстати, не совсем понятно как будет влиять изменения в визуализации, если проверка и первичная инициализация по моему способу выполняется в самом начале самого первого цикла ПЛК, и дальше никак на работу не виляет.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    речь идет о ретайн, поэтому инициализация в коде вышеизложенным способом тут ни каким боком не подходит. Проблема совершенно в другом, в непонимании как работает ретайн, если залить проект и потом его сбрасывать ни одна ретайн переменная не сохранится. Сохраняются они только при корректном выключении питания и только после этого их можно увидеть при следующем запуске плк
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,656

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    не запостил, значит небыл. Какие Ваши доказательства?
    Чего доказательства? Вы бредите?
    Если конкретно информации нет- не надо постить!

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Инициализация сетевых переменных
    от dzukp в разделе Среда программирования OWEN Logic
    Ответов: 24
    Последнее сообщение: 02.11.2022, 20:18
  2. ПЛК110-30 (М02), сброс retain переменных в нули
    от monteg в разделе ПЛК1хх [М02]
    Ответов: 39
    Последнее сообщение: 26.12.2016, 17:25
  3. Инициализация Modbus slave (Retain) переменных
    от Спорягин Кирилл в разделе ПЛК1хх [М02]
    Ответов: 20
    Последнее сообщение: 14.03.2016, 08:17
  4. Ответов: 17
    Последнее сообщение: 15.09.2015, 06:05
  5. Ответов: 19
    Последнее сообщение: 09.02.2011, 09:15

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •