Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: AndreyA от 27 Апреля 2023, 12:04:55

Название: Работа с битами для отображения аварийных сообщений
Отправлено: AndreyA от 27 Апреля 2023, 12:04:55
Здравствуйте!
Описание проблемы:
Есть проект на ПЛК Siemens S7 315- в нем все аварийные/предупредительные сообщения  собираются в блоки данных по 32 бита (двойное слово). При создании аварийных сообщений использую возможность Скады напрямую обращаться побитно. Но тут возникает вопрос - Скада считает от 0 бита а у Siemens внутри тэга происходит замена т.е.
0000_0000_0000_0000_0000_0100_0000_0000

интересующий меня бит имеет номер 18 , а скада видит его как 10. Возможно-ли с помощью скриптов что то сделать, или все таки придется делать замену старшего-младшего слов на стороне ПЛК. Спасибо!
Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: Simple-Scada от 27 Апреля 2023, 12:27:28
Здравствуйте.

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

Цитировать
Скады напрямую обращаться побитно.
Через меню сообщений (https://simple-scada.com/help/manual/edit-message.html) включаете у сообщения свойство "Бит" (https://simple-scada.com/help/manual/mess-prop.html)?

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

Цитировать
интересующий меня бит имеет номер 18 , а скада видит его как 10.
Почему 18? Не совсем понятно как Вы считаете биты? Если скада и ПЛК работают с одной и той же переменной с одинаковым типом данных, то биты в скаде и ПЛК всегда будут одинаковыми.
Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: AndreyA от 27 Апреля 2023, 13:43:05
Все верно включаю через меню сообщений свойство Бит.
Все верно обычно порядок считывания совпадает.
Во вложении блок с адресацией DBXX.DBD50 - 32  бита.( рисунок DB)
и так же во вложении редактор сообщений - там 18 бит стоит (рисунок alarm).
при срабатывании в ПЛК сигнала с адресом DBxx.DBX52.2 -(номер бита 18) - в визуализации срабатывает 10 бит сообщения



Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: Simple-Scada от 27 Апреля 2023, 16:14:25
Разместите на мнемосхеме компонент "Поле" и привяжите его к переменной аварии. Сохраните и запустите проект. Какое число отображается в поле, когда на ПЛК 18 бит включен, а все остальные биты выключены? Читаете переменные напрямую со скады подключаясь к UA-серверу встроенному в ПЛК? Или используете отдельный OPC-сервер?
Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: AndreyA от 27 Апреля 2023, 16:57:57
Подключаюсь через сторонний ОРС -  Kepware
Число которое выводиться  1024 формат DEC. Тэг c типом данных DWORD
Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: Simple-Scada от 27 Апреля 2023, 17:02:30
Цитировать
Подключаюсь через сторонний ОРС -  Kepware
Убедитесь, что в Kepware правильно задан адрес переменной и тип данных.
Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: AndreyA от 28 Апреля 2023, 07:41:32
порядок следования битов в двойном слове в плк Сименс . В моем случае наверно проще сделать таблицу с заменами битов.
Название: Re: Работа с битами для отображения аварийных сообщений
Отправлено: Simple-Scada от 28 Апреля 2023, 10:23:16
Понятно, в данном случае в Siemens просто используется другой порядок байтов, т.е. вместо стандартного b3 - b2 - b1- b0 используется b0 - b1 - b2 - b3 (см. Big-Endian/Little-Endian (https://en.wikipedia.org/wiki/Endianness)). Подробное описание также есть в этом видео (https://youtu.be/EpOUNvhyObU).

Цитировать
В моем случае наверно проще сделать таблицу с заменами битов.
Да, можно использовать таблицу соответствия номеров битов, чтобы быстро узнать номер бита.