Simple-Scada forum
Simple-Scada 2 => Ваши вопросы => Тема начата: AndreyA от 27 Апреля 2023, 12:04:55
-
Здравствуйте!
Описание проблемы:
Есть проект на ПЛК Siemens S7 315- в нем все аварийные/предупредительные сообщения собираются в блоки данных по 32 бита (двойное слово). При создании аварийных сообщений использую возможность Скады напрямую обращаться побитно. Но тут возникает вопрос - Скада считает от 0 бита а у Siemens внутри тэга происходит замена т.е.
0000_0000_0000_0000_0000_0100_0000_0000
интересующий меня бит имеет номер 18 , а скада видит его как 10. Возможно-ли с помощью скриптов что то сделать, или все таки придется делать замену старшего-младшего слов на стороне ПЛК. Спасибо!
-
Здравствуйте.
Обычно биты считаются везде одинаково, с нуля. Если у Вас на ПЛК есть 32-битное число, то в скаде Вы можете читать любой из 32 битов, начиная с нулевого по тридцать первый и все биты будут соответствовать битам на ПЛК.
Скады напрямую обращаться побитно.
Через меню сообщений (https://simple-scada.com/help/manual/edit-message.html) включаете у сообщения свойство "Бит" (https://simple-scada.com/help/manual/mess-prop.html)?
а у Siemens внутри тэга происходит замена т.е.
Уточните, какая замена, младшее и старшее слово меняются как-то? :-\ Какой тип данных выбран у переменной на ПЛК и в скаде?
интересующий меня бит имеет номер 18 , а скада видит его как 10.
Почему 18? Не совсем понятно как Вы считаете биты? Если скада и ПЛК работают с одной и той же переменной с одинаковым типом данных, то биты в скаде и ПЛК всегда будут одинаковыми.
-
Все верно включаю через меню сообщений свойство Бит.
Все верно обычно порядок считывания совпадает.
Во вложении блок с адресацией DBXX.DBD50 - 32 бита.( рисунок DB)
и так же во вложении редактор сообщений - там 18 бит стоит (рисунок alarm).
при срабатывании в ПЛК сигнала с адресом DBxx.DBX52.2 -(номер бита 18) - в визуализации срабатывает 10 бит сообщения
-
Разместите на мнемосхеме компонент "Поле" и привяжите его к переменной аварии. Сохраните и запустите проект. Какое число отображается в поле, когда на ПЛК 18 бит включен, а все остальные биты выключены? Читаете переменные напрямую со скады подключаясь к UA-серверу встроенному в ПЛК? Или используете отдельный OPC-сервер?
-
Подключаюсь через сторонний ОРС - Kepware
Число которое выводиться 1024 формат DEC. Тэг c типом данных DWORD
-
Подключаюсь через сторонний ОРС - Kepware
Убедитесь, что в Kepware правильно задан адрес переменной и тип данных.
-
порядок следования битов в двойном слове в плк Сименс . В моем случае наверно проще сделать таблицу с заменами битов.
-
Понятно, в данном случае в Siemens просто используется другой порядок байтов, т.е. вместо стандартного b3 - b2 - b1- b0 используется b0 - b1 - b2 - b3 (см. Big-Endian/Little-Endian (https://en.wikipedia.org/wiki/Endianness)). Подробное описание также есть в этом видео (https://youtu.be/EpOUNvhyObU).
В моем случае наверно проще сделать таблицу с заменами битов.
Да, можно использовать таблицу соответствия номеров битов, чтобы быстро узнать номер бита.