Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 21

Тема: Сохранение значений ФБ

  1. #1

    По умолчанию Сохранение значений ФБ

    Добрый день!
    Имеется ПЛК 110, написал ФБ в котором производится подсчет моточасов. Подскажите как можно сохранить накопленные значения ФБ?
    Если поместить весь блок в область памяти retain значения будут сохраняться? И на сколько мне известно это не очень верное решение так как плохо в дальнейшем скажется на памяти (ограниченный ресурс). Есть второй вариант, сохранить накопленные значения в области retain после отключения питания ПЛК, после включения прочитать из области retain значения, сравнить их с значениями ФБ если не равны принудительно записать сохраненные значения в ФБ и продолжить считать. Может есть какой-то более простой способ. Подскажите.

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

    По умолчанию

    блин, у Овен ПЛК retain реализованы иначе, чем у других производителей, ничего там не попортится.

    Сделайте у блока переменные типа IN_OUT и соответствующую логику и не придется весь блок запихивать в retain.

  3. #3

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    блин, у Овен ПЛК retain реализованы иначе, чем у других производителей, ничего там не попортится.

    Сделайте у блока переменные типа IN_OUT и соответствующую логику и не придется весь блок запихивать в retain.
    не соображу по поводу IN_OUT и соответствующей логике, можете пояснить?
    Вот собственно код ФБ

    FUNCTION_BLOCK ENGINE_HOURS (*ФБ РАСЧЕТА ВРЕМЕНИ НАРАБОТКИ*)
    VAR_INPUT
    START: BOOL; (*АКТИВАЦИЯ СЧЕТА МОТОЧАСОВ*)
    I_TH : DWORD; (*ВВОД НОВОГО ЗНАЧЕНИЯ НАРАБОТКИ В ЧАСАХ В РУЧНУЮ*)
    I_TD :WORD; (*ВВОД НОВОГО ЗНАЧЕНИЯ НАРАБОТКИ В СУТКАХ В РУЧНУЮ*)
    ENTER:BOOL; (*АКТИВАЦИЯ ВВЕДЕННЫХ В РУЧНУЮ ЗНАЧЕНИЙ*)
    RESET: BOOL; (*СБРОС СЧЕТЧИКОВ ПРИНУДИТЕЛЬНО*)
    END_VAR
    VAR_OUTPUT
    O_TH : DWORD; (*ВРЕМЯ НАРАБОТКИ В ЧАСАХ*)
    O_TD : WORD; (*ВРЕМЯ НАРАБОТКИ В СУТКАХ*)
    END_VAR
    VAR
    TMR :TON; (*ТАЙМЕР*)
    TS:INT; (*РАБОТА В СЕКУНДАХ*)
    TM:INT; (*РАБОТА В МИНУТАХ*)
    END_VAR

    IF ENTER THEN O_TH := I_TH; O_TD := I_TD; ELSE (*ЗАПИСЬ ЗНАЧЕНИЙ ЧАСОВ И СУТОК ПРИНУДИТЕЛЬНО В РУЧНУЮ*)
    TMR(IN := NOT TMR.Q, PT := T#1ms);
    IF TMR.Q THEN TS := TS + 1; END_IF (*СЧИТАЕМ СЕКУНДЫ*)
    IF TS = 60 THEN TM := TM + 1; TS := 0; END_IF (*СЧИТАЕМ МИНУТЫ*)
    IF TM = 60 THEN O_TH := O_TH + 1; TM := 0; END_IF (*СЧИТАЕМ ЧАСЫ*)
    O_TD := REAL_TO_WORD(O_TH / 24); (*СЧИТАЕМ СУТКИ*) END_IF

    IF RESET THEN O_TH := 0; O_TD := 0; END_IF (*ПРИНУДИТЕЛЬНЫЙ СБРОС СЧЕТЧИКОВ*)

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

    По умолчанию

    я на CFC делал, так что в ST не подскажу. Думаю смысл будет понятен. все переменные IN_OUT подключаются к retain переменным программы. Но не сам блок

    Собственно у меня там реализован сброс по битовой маске, никто не мешает добавить входов для инициализации.
    Вложения Вложения
    • Тип файла: zip TRAB.zip (1.4 Кб, Просмотров: 14)
    Последний раз редактировалось melky; 31.08.2018 в 20:35.

  5. #5

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    я на CFC делал, так что в ST не подскажу. Думаю смысл будет понятен. все переменные IN_OUT подключаются к retain переменным программы. Но не сам блок

    Собственно у меня там реализован сброс по битовой маске, никто не мешает добавить входов для инициализации.
    Спасибо большое что откликнулись!

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

    По умолчанию

    Цитата Сообщение от deniska13 Посмотреть сообщение
    TMR(IN := NOT TMR.Q, PT := T#1ms);
    IF TMR.Q THEN TS := TS + 1; END_IF (*СЧИТАЕМ СЕКУНДЫ*)
    код вызвал усмешку, перепроверте себя сами еще раз
    По поводу IN_OUT а зачем, глобальная переменная не хуже будет
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    код вызвал усмешку, перепроверте себя сами еще раз
    По поводу IN_OUT а зачем, глобальная переменная не хуже будет
    В чем именно он у Вас вызвал усмешку?)

  8. #8

    По умолчанию

    таймер на миллисекунду, а комммент что секунды считаете.... вот тут и курьёз шкал

  9. #9

    По умолчанию

    Цитата Сообщение от Трофимов Артем Посмотреть сообщение
    таймер на миллисекунду, а комммент что секунды считаете.... вот тут и курьёз шкал
    Ну это просто опечатка)..я думал что-то более серьезное, может другой способ программный)
    Спасибо за разъяснение!)

  10. #10

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    код вызвал усмешку, перепроверте себя сами еще раз
    По поводу IN_OUT а зачем, глобальная переменная не хуже будет
    Этот ФБ вызывается из программы, как мне объявить внутренние его переменные в глобальных или я что-то не так понял? Или имеете ввиду сам ФБ объявить в глобальных переменных? Этого разве будет достаточно чтобы не потерять насчитанные ФБ данные времени наработки?

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

Похожие темы

  1. сохранение ин. в файлах
    от vvu2011 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 12.10.2010, 14:52
  2. сохранение значений переменных
    от Лёша в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 12.11.2009, 11:37
  3. Сохранение результатов ТРМ 138
    от Студент в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 13.03.2008, 10:11
  4. ПЛК-150 сохранение программы
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 19.04.2007, 15:15
  5. ПЛК-150 сохранение программы
    от незарегистрированный в разделе Сетевые технологии
    Ответов: 0
    Последнее сообщение: 19.04.2007, 13:33

Ваши права

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