Показано с 1 по 10 из 25

Тема: Проблема с кодом на ST. Цикл выполняется с ошибкой.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от hardkp Посмотреть сообщение
    Объясню подробнее зачем мне это, может это вообще не так решается.
    Есть v1, она в RETAIN с начальным значением. Её я храню в контроллере и выгружаю в v2 и в v3 при запуске.
    v2 добавлена в порт rs232 и общается с панелью СП307.
    v3 добавлена в Ethernet и работает со СКАДОЙ.
    Нужно чтобы изменения на панели, загружались в СКАДУ и наоборот.
    У вас есть контроллер, который управляется панелью и скадой. Так?
    Если прав, тут надо разделить "задания" и "состояния".
    Например
    btnPalel: BOOL; // кнопка на панели
    btnSCADA: BOOL; // кнопка в скаде

    outRelay:= btnPanel OR btnSCADA;

    В панели записываете переменную btnPanel, читаете переменную outRelay.
    в SCADA записываете переменную btnSCADA, читаете переменную outRelay.

  2. #2

    По умолчанию

    Цитата Сообщение от keysansa Посмотреть сообщение
    Например
    btnPalel: BOOL; // кнопка на панели
    btnSCADA: BOOL; // кнопка в скаде

    outRelay:= btnPanel OR btnSCADA;

    В панели записываете переменную btnPanel, читаете переменную outRelay.
    в SCADA записываете переменную btnSCADA, читаете переменную outRelay.
    Так я смогу включать из панели или скады.
    А если эта как в моём примере уставка температуры, как быть?

    А даже если эта кнопка, мне нужно чтобы я включил переключатель на панели, а выключил в скаде, но подойдя к скаде я хочу видеть переключатель включенным и выключать именно этот переключатель. Т.е. выключив в скаде, выключиться переключатель должен и на панели.

  3. #3
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от hardkp Посмотреть сообщение
    Так я смогу включать из панели или скады.
    А если эта как в моём примере уставка температуры, как быть?
    Прошу прощения, не сразу вник в вашу проблему.

    В вашем случае, принято использовать технологию, разработанную около века назад.
    Используется бит, который в True означает, что значение можно изменять, в False - что изменение запрещено.
    1. По старту контроллера, через некоторое время взводится бит, для защиты значения v1 от изменений по загрузке.
    2. Далее, при v1<>v2, этот бит сбрасывается при операции v1=v2, на то же (или другое) время.
    4. При v1<>v3 - ждем, установленного бита. И снова его сбрасываем, при выполнении v1=v3. Восстанавливаем через временной промежуток.

    Это применяется, если PERSISTENT переменные хранятся в контроллере, а не в панели/SCADA.
    Хотя я лично, придерживаюсь логики хранения PERSISTENT в панели/SCADA, но согласен, это не всегда эффективно.
    Последний раз редактировалось keysansa; 09.04.2022 в 13:39.

  4. #4

    По умолчанию

    Скажу как есть. Я программист не опытный. ST только начал использовать. Я по логике сделал всё задуманное, но работает оно не так как надо.
    Пользователь capzap написал пример, который более оптимально написан, но делает тоже самое. capzap дописал DEMO, в которой часть кода имитирует те перезаписи v2 и v3, которые предполагается делать.
    Когда v2 и v3 перезаписываются программно всё работает, перезапись происходит, всё синхронизируется.
    Когда я запускаю отладку. В поле справа наблюдаю значения переменных.
    Я кликаю на переменную, ввожу значение, потом F7, чтобы переменная его приняла. Запись происходит, всё синхронизируется, но переменная приобретает красный цвет.
    Пробую записать вторую переменную, она тоже краснеет, а потом та самая проблема из-за котрой я начал эту тему.

    Люди опытные подскажите, это в отладке проблема или в коде?
    В железе выполняться будет нормально или как в отладке?

  5. #5
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от hardkp Посмотреть сообщение

    Люди опытные подскажите, это в отладке проблема или в коде?
    В железе выполняться будет нормально или как в отладке?
    Со своего опыта я вам написал.

  6. #6

    По умолчанию

    Прикрепляю скриншот того как выглядит переменная, когда я сам, через cds руками её перезаписываю.
    cds_problem.png

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 21.01.2021, 22:08
  2. Панель СП310 - загрузка проекта с исходным кодом
    от _Алексей_ в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 23.08.2018, 07:19
  3. Экспорт проекта с ошибкой
    от Poo в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 27.07.2018, 15:44
  4. Не выполняется PLC_PRG
    от S#716_0P в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 08.09.2017, 13:35
  5. Не выполняется установка Codesys V3
    от Дмитрий Артюховский в разделе СПК2xx (архив)
    Ответов: 11
    Последнее сообщение: 26.06.2013, 00:27

Метки этой темы

Ваши права

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