Показано с 1 по 9 из 9

Тема: Восстанавливаются старые значения

  1. #1

    По умолчанию Восстанавливаются старые значения

    Здравствуйте. Такая проблема. Загружаю проект в ПЛК-160 М2 в Codesys 2.3. ПЛК участвует в сети Modbus RTU, ПЛК - Slave, СПК - master. Обмен данными работает, все норм. Потом в какой-то момент на ПЛК остались старые значения (в ветках float), делаю сброс, стартую - значения 0, как надо. Перезагружаю ПЛК - возвращаются старые значения. А последний float экспериментальный вообще запомнил когда-то онлайн-измененное значение или с СПК передалось, не помню уже. Пробовал снимать питание с СПК, отключать провода с RS-485, удалять переменные, участвующие в обмене по сети. Заводской сброс ПЛК делал, загружал в ПЗУ новый проект (Создание загрузочного проекта), перезагружал ПК, даже удалил остальные файлы проекта и заново загружал проект с заводским сбросом, пробовал закрыть Codesys Gateway Server и другую службу Codesys, не помогает ничего. Что интересно, когда удаляю один float, все ОК, добавляю по новой, восстанавливаются старые значения, хотя переменные уже все удалены с проекта, retain не использую. Выкладываю исходный проект.
    Вложения Вложения

  2. #2

    По умолчанию

    Цитата Сообщение от MichailG Посмотреть сообщение
    Здравствуйте. Такая проблема. Загружаю проект в ПЛК-160 М2 в Codesys 2.3. ПЛК участвует в сети Modbus RTU, ПЛК - Slave, СПК - master. Обмен данными работает, все норм. Потом в какой-то момент на ПЛК остались старые значения (в ветках float), делаю сброс, стартую - значения 0, как надо. Перезагружаю ПЛК - возвращаются старые значения. А последний float экспериментальный вообще запомнил когда-то онлайн-измененное значение или с СПК передалось, не помню уже. Пробовал снимать питание с СПК, отключать провода с RS-485, удалять переменные, участвующие в обмене по сети. Заводской сброс ПЛК делал, загружал в ПЗУ новый проект (Создание загрузочного проекта), перезагружал ПК, даже удалил остальные файлы проекта и заново загружал проект с заводским сбросом, пробовал закрыть Codesys Gateway Server и другую службу Codesys, не помогает ничего. Что интересно, когда удаляю один float, все ОК, добавляю по новой, восстанавливаются старые значения, хотя переменные уже все удалены с проекта, retain не использую. Выкладываю исходный проект.
    Все переменные, объявленные внутри слейва - энергонезависимые (Retain) по умолчанию

  3. #3

    По умолчанию

    А как мне сбросить тогда эти переменные, я думал заводской сброс поможет? Причем, удаляю один float, переменные (точнее просто значения во float, переменные уже удалены на этот момент) обнуляются, добавляю float в свой slave, значения восстанавливаются...

  4. #4

    По умолчанию

    Никаких устройств не подключено в сети, другое ПО нет, которое могло бы участвовать в modbus.

  5. #5

    По умолчанию

    Цитата Сообщение от MichailG Посмотреть сообщение
    А как мне сбросить тогда эти переменные, я думал заводской сброс поможет? Причем, удаляю один float, переменные (точнее просто значения во float, переменные уже удалены на этот момент) обнуляются, добавляю float в свой slave, значения восстанавливаются...
    Расскажите про назначение этих сетевых переменных и зачем их нужно сбрасывать

  6. #6

    По умолчанию

    СПК опрашивает ПЛК циклически и выводит в таблицу на экране сигналы с датчиков и промежуточные переменные программы, а также настройки регулятора. При изменении настроек происходит запись по переднему фронту. Пока просто переменная записывается, но в дальнейшем хочу сделать так, что какой параметр изменен - тот и записывается в регистр, не все сразу, хотя это не критично. Не хотелось бы, чтобы значения постоянно писались в энергонезависимую память, ресурс тратить, да и вообще с retain переменными не хочется иметь дело. Аккумулятор как-то сдох помню, и переменные не восстановились - нули были. Я пользуюсь первоначальными значениями в объявлении переменных. Если питание с ПЛК было снято, я отслежу это (пропала связь, "флаг инициализации ПЛК" или сброса ПЛК). Сброс я отслеживаю программно. Тогда СПК запишет новые настройки. И наоборот, если настройки в режиме онлайн были изменены, СПК прочитает новые значения. Не понимаю, зачем slave по умолчанию Retain. Лучше бы это программно реализовать. Изменились настройки - записал... А с какой периодичностью записываются slave переменные? Если по отключении питания - то фиг они восстановтся при дохлом АКБ. Как-то так. Буду признателен, если посоветуете другой способ обмена данными!

  7. #7

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Расскажите про назначение этих сетевых переменных и зачем их нужно сбрасывать
    Меня смущают старые значения, ПЛК перезагрузил - вроде бы "с нуля" должен стартануть, а там мусор этот. Хотя я могу ошибаться, не привычно просто.

  8. #8

    По умолчанию

    Цитата Сообщение от MichailG Посмотреть сообщение
    СПК опрашивает ПЛК циклически и выводит в таблицу на экране сигналы с датчиков и промежуточные переменные программы, а также настройки регулятора. При изменении настроек происходит запись по переднему фронту. Пока просто переменная записывается, но в дальнейшем хочу сделать так, что какой параметр изменен - тот и записывается в регистр, не все сразу, хотя это не критично. Не хотелось бы, чтобы значения постоянно писались в энергонезависимую память, ресурс тратить, да и вообще с retain переменными не хочется иметь дело. Аккумулятор как-то сдох помню, и переменные не восстановились - нули были. Я пользуюсь первоначальными значениями в объявлении переменных. Если питание с ПЛК было снято, я отслежу это (пропала связь, "флаг инициализации ПЛК" или сброса ПЛК). Сброс я отслеживаю программно. Тогда СПК запишет новые настройки. И наоборот, если настройки в режиме онлайн были изменены, СПК прочитает новые значения. Не понимаю, зачем slave по умолчанию Retain. Лучше бы это программно реализовать. Изменились настройки - записал... А с какой периодичностью записываются slave переменные? Если по отключении питания - то фиг они восстановтся при дохлом АКБ. Как-то так. Буду признателен, если посоветуете другой способ обмена данными!
    Насчёт ресурса можно не беспокоиться - перезапись памяти ведётся при отключении питания - и да, для этого используется батарейка. Но состояние батарейки можно увидеть на светодиодах ПЛК и (вроде) контролировать по значению в блоке статистики в конфигурации.
    Для тех переменных, что программа ПЛК постоянно переписывает - энергонезависимость не важна, а в чём проблема, что уставки сохраняют предыдущее значение в ПЛК я не понял; СПК в любом случае может читать значения уставок постоянно, а записывать по изменению

    Цитата Сообщение от MichailG Посмотреть сообщение
    Меня смущают старые значения, ПЛК перезагрузил - вроде бы "с нуля" должен стартануть, а там мусор этот. Хотя я могу ошибаться, не привычно просто.
    Согласен, дело привычки.
    И всё же там не мусор, а просто предыдущие значения

  9. #9

    По умолчанию

    В заключение добавлю, действительно, можно контролировать состояние батареи (возможно и в сеть передавать инфу). Даже если АКБ вышло из строя, можно отследить сброшенные переменные и присвоить безопасные значения. Благодарю за ответы.

Похожие темы

  1. СИ-30 - начальные значения
    от Крон в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 24.09.2018, 07:58
  2. Не могу открыть старые проекты
    от Stas в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 11.04.2017, 10:36
  3. Ввод значения
    от иван50 в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 11.03.2016, 12:57
  4. Запись значения в МУ-110
    от U_Dimas в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 10.12.2015, 11:38
  5. Ответов: 0
    Последнее сообщение: 28.10.2015, 22:48

Ваши права

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