Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Работа с битами для отображения аварийных сообщений  (Прочитано 2019 раз)

AndreyA

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Здравствуйте!
Описание проблемы:
Есть проект на ПЛК Siemens S7 315- в нем все аварийные/предупредительные сообщения  собираются в блоки данных по 32 бита (двойное слово). При создании аварийных сообщений использую возможность Скады напрямую обращаться побитно. Но тут возникает вопрос - Скада считает от 0 бита а у Siemens внутри тэга происходит замена т.е.
0000_0000_0000_0000_0000_0100_0000_0000

интересующий меня бит имеет номер 18 , а скада видит его как 10. Возможно-ли с помощью скриптов что то сделать, или все таки придется делать замену старшего-младшего слов на стороне ПЛК. Спасибо!

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3147
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

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

Цитировать
Скады напрямую обращаться побитно.
Через меню сообщений включаете у сообщения свойство "Бит"?

Цитировать
а у Siemens внутри тэга происходит замена т.е.
Уточните, какая замена, младшее и старшее слово меняются как-то?  :-\ Какой тип данных выбран у переменной на ПЛК и в скаде?

Цитировать
интересующий меня бит имеет номер 18 , а скада видит его как 10.
Почему 18? Не совсем понятно как Вы считаете биты? Если скада и ПЛК работают с одной и той же переменной с одинаковым типом данных, то биты в скаде и ПЛК всегда будут одинаковыми.
« Изменён: 27 Апреля 2023, 12:32:35 от Simple-Scada »

AndreyA

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Все верно включаю через меню сообщений свойство Бит.
Все верно обычно порядок считывания совпадает.
Во вложении блок с адресацией DBXX.DBD50 - 32  бита.( рисунок DB)
и так же во вложении редактор сообщений - там 18 бит стоит (рисунок alarm).
при срабатывании в ПЛК сигнала с адресом DBxx.DBX52.2 -(номер бита 18) - в визуализации срабатывает 10 бит сообщения




Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3147
    • Просмотр профиля
    • Simple-Scada
Разместите на мнемосхеме компонент "Поле" и привяжите его к переменной аварии. Сохраните и запустите проект. Какое число отображается в поле, когда на ПЛК 18 бит включен, а все остальные биты выключены? Читаете переменные напрямую со скады подключаясь к UA-серверу встроенному в ПЛК? Или используете отдельный OPC-сервер?

AndreyA

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Подключаюсь через сторонний ОРС -  Kepware
Число которое выводиться  1024 формат DEC. Тэг c типом данных DWORD
« Изменён: 27 Апреля 2023, 17:11:57 от AndreyA »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3147
    • Просмотр профиля
    • Simple-Scada
Цитировать
Подключаюсь через сторонний ОРС -  Kepware
Убедитесь, что в Kepware правильно задан адрес переменной и тип данных.

AndreyA

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
порядок следования битов в двойном слове в плк Сименс . В моем случае наверно проще сделать таблицу с заменами битов.
« Изменён: 28 Апреля 2023, 09:25:01 от AndreyA »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3147
    • Просмотр профиля
    • Simple-Scada
Понятно, в данном случае в Siemens просто используется другой порядок байтов, т.е. вместо стандартного b3 - b2 - b1- b0 используется b0 - b1 - b2 - b3 (см. Big-Endian/Little-Endian). Подробное описание также есть в этом видео.

Цитировать
В моем случае наверно проще сделать таблицу с заменами битов.
Да, можно использовать таблицу соответствия номеров битов, чтобы быстро узнать номер бита.
« Изменён: 28 Апреля 2023, 10:34:05 от Simple-Scada »