Страница 1 из 1

Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 2:44 pm
Mihali4
Добрый день. Подскажите как из побитно разобрать переменную int? попытка просто дописать .ХХ успеха не принесла (чтение данных идет через MBTCP)

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 3:09 pm
NewOrdered
Разобрать чтобы использовать значение отдельного бита - только так как вы сказали, дотфидами вида IntegerTag.01. Странно, что у вас не заработало.
Для контроля можно попробовать вывести IntegerTag на экран с форматированием Binary.

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 3:36 pm
Mihali4
Возможно я ошибаюсь в мелочах.Попробую описать подробнее. Есть контроллер Шнайдер, через MBTCP получаю данные. В ПЛК есть переменная с адресом MW10 типа int, заполнение идет побитное. В Интаче создал переменную типа I/O Int с адресом 40010. Значение переменных типа Int в ПЛК и Интаче совпадают проблем нет. Теперь для получения битовых значений создаю новые тэги в Интаче, с адресом 40010.00 и так до 40010.15, переменные типа I/O Discrete. ии битовые переменные не работают

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 3:46 pm
NewOrdered
Mihali4 писал(а):Возможно я ошибаюсь в мелочах.Попробую описать подробнее. Есть контроллер Шнайдер, через MBTCP получаю данные. В ПЛК есть переменная с адресом MW10 типа int, заполнение идет побитное. В Интаче создал переменную типа I/O Int с адресом 40010. Значение переменных типа Int в ПЛК и Интаче совпадают проблем нет. Теперь для получения битовых значений создаю новые тэги в Интаче, с адресом 40010.00 и так до 40010.15, переменные типа I/O Discrete. ии битовые переменные не работают


Вам не нужны новые дискретные I/O тэги. Обращайтесь к самой integer-переменной, как я указал выше: IntegerTag.01, IntegerTag.02 и т.д.
К тому же ЕМНИП битовые регистры MODBUS вообще в другой области памяти ПЛК находятся.

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 3:51 pm
NewOrdered
Mihali4 писал(а):Возможно я ошибаюсь в мелочах.Попробую описать подробнее. Есть контроллер Шнайдер, через MBTCP получаю данные. В ПЛК есть переменная с адресом MW10 типа int, заполнение идет побитное. В Интаче создал переменную типа I/O Int с адресом 40010. Значение переменных типа Int в ПЛК и Интаче совпадают проблем нет. Теперь для получения битовых значений создаю новые тэги в Интаче, с адресом 40010.00 и так до 40010.15, переменные типа I/O Discrete. ии битовые переменные не работают


Вроде как адресация битовых регистров начинается с 3, да и формат адреса должен быть через знак ":", например, 300303:1

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 4:05 pm
Mihali4
засада, а как быть с алармами?

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 4:13 pm
NewOrdered
Mihali4 писал(а):засада, а как быть с алармами?

Ну разве что средствами интача. Скриптами проверять значение вашего int тэга (Scripts > Data Change) и выставлять значения дополнительных memory discrete тэгов аварийных сообщений.
Можно, конечно, еще попробовать настроить аварийные пределы integer тэга, но там будет не очень гибко.

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 4:17 pm
NewOrdered
Mihali4 писал(а):засада, а как быть с алармами?


Третий вариант - править программу ПЛК, тогда все будет по-человечески.

Re: Наложение маски

СообщениеДобавлено: Чт дек 13, 2018 4:23 pm
Mihali4
NewOrdered писал(а):
Mihali4 писал(а):засада, а как быть с алармами?


Третий вариант - править программу ПЛК, тогда все будет по-человечески.
Это самый первый и правильный вариант... :cry: спасибо за помощь