PDA

Просмотр полной версии : Сетевые переменные в режиме Slave у ПР200



Артем Пешин
28.01.2020, 16:05
Здравствуйте. Из скада-системы требуется передать в ПР200 число, превышающее 65535. ПР 200 в режиме слейв. Есть ли возможность вообще в ПР передавать числа с плавающей запятой по сетевой переменной? И какой порядок байт в этом случае в ПР? Я так понял, что в слейв режиме чекбоксы у пр200 по изменению порядка следования байт не работают. Спасибо.

melky
28.01.2020, 18:20
попробуйте порядок 2301

float нормально передается.

dan75
28.01.2020, 23:30
Я так понял, что в слейв режиме чекбоксы у пр200 по изменению порядка следования байт не работают.
Да вроде всё работало.

Артем Пешин
29.01.2020, 08:21
Дело в том, что у меня трейс мод 6 в качестве скада-системы. Мне требуется передать с экрана оператора число, больше 65536. В ПР 200 выбрал функциональный блок fGT для сравнения двух чисел. Как я понимаю, мне нужно подружить порядок следования байт в сообщении с трейса на ПР. Не могу их подружить вообщем.

capzap
29.01.2020, 08:26
блок fGT для сравнения двух чисел.

небольшое уточнение, для сравнения двух вещественных чисел, а если речь о 65536 и выше, то это возможно о целочисленных Вы говорите

Артем Пешин
29.01.2020, 08:35
Да. Совершенно верно. Однако я в руководстве ПР 200 так и не понял размерность ячеек под функ. блок GT. Мне, фактически, нужно не вещественное число, а INT32. Чтобы до миллиарда считало. Как это сделать пока не могу понять. Задавать с окна в трейс мод число 500000 (например), и сравнивать блоком GT его с другим числом в ПР200.

capzap
29.01.2020, 08:41
Да. Совершенно верно. Однако я в руководстве ПР 200 так и не понял размерность ячеек под функ. блок GT. Мне, фактически, нужно не вещественное число, а INT32. Чтобы до миллиарда считало. Как это сделать пока не могу понять. Задавать с окна в трейс мод число 500000 (например), и сравнивать блоком GT его с другим числом в ПР200.

в слейве сделайте две переменные целочисленные подряд, в скаде выбираете адрес первой переменной((теоретически четный адрес), в ПР где нибудь на схеме одну переменную смещаете с помощью функции SHL на 16 разрядов и складываете с помощью ADD со второй переменной, проблема возникнет только с порядком расположения байт, с ними надо "поиграться" чтоб найти нужную последовательность

Артем Пешин
29.01.2020, 08:53
Понял. Спасибо за помощь.

Артем Пешин
29.01.2020, 13:14
В общем, решил себя не утруждать и всю логику работы программы сделать в трейс мод. ПР 200 буду использовать только как источник импульсов с датчиков. Отсутствие реализации инт32 в сетевых переменных огорчает.

capzap
29.01.2020, 13:19
В общем, решил себя не утруждать и всю логику работы программы сделать в трейс мод. ПР 200 буду использовать только как источник импульсов с датчиков. Отсутствие реализации инт32 в сетевых переменных огорчает.

так это Вас протокол модбас должен огорчать, там нет понятия 32 разрядное слово

Артем Пешин
29.01.2020, 13:28
аа, это у модбаса значит ограничение? понял.

petera
29.01.2020, 13:41
аа, это у модбаса значит ограничение? понял.

Да нет никаких ограничений.
Положите в два сетевых соседних регистра значения из https://owen.ru/forum/showthread.php?t=32610&p=324402&viewfull=1#post324402, например в 520 и 521, а в в трейс мод читайте свое INT32 из регистра 520. Все получится автоматом.
Возможно придется поменять порядок старшего и младшего слова между регистрам 520 и 521, но это не проблема

capzap
29.01.2020, 13:52
аа, это у модбаса значит ограничение? понял.

есть еще вариант, сделать ПР мастером тогда целочисленное можно прочитать/передать и в двух регистрах, сам не пробовал но настройки есть

Ревака Юрий
29.01.2020, 17:33
В общем, решил себя не утруждать и всю логику работы программы сделать в трейс мод. ПР 200 буду использовать только как источник импульсов с датчиков. Отсутствие реализации инт32 в сетевых переменных огорчает.

Нет никаких проблем читать INT32, главное чтобы регистры били рядом, а имея СКАДА систему вообще нет проблем собрать число даже если оно и в разных регистрах. Я бы логику делал в реле, если связь пропадет, что будет с алгоритмом?

capzap
29.01.2020, 17:39
Нет никаких проблем читать INT32, главное чтобы регистры били рядом, а имея СКАДА систему вообще нет проблем собрать число даже если оно и в разных регистрах. Я бы логику делал в реле, если связь пропадет, что будет с алгоритмом?

ему не нужно было читать, ему требовалось записать без доп.обработки в проекте

Артем Пешин
29.01.2020, 19:06
Вот тоже стою перед выбором: где собрать логику ПО? На ПР200 чтоб обсчитывал, или в трейсе? Потому что при потере связи счетчик на экране просто замрет, а линия будет продожать ехать по сути. Пока не принял окончательное решение. Один вариант сделал с логикой на ПР 200. Сейчас пилю второй, где ПР- просто собирает сигналы датчиков оптических.

Артем Пешин
29.01.2020, 19:08
ему не нужно было читать, ему требовалось записать без доп.обработки в проекте
Забыл уточнить, что и читать значение также нужно. Считывать количество продукта, проходящего через опт. датчики. Но вот задавать план продукта решил лишь на уровне трейса, и операцию сравнения "факт-план" тоже только в трейсе будет. Но и передает ПР200 только инт16. Прием с двумя регистрами понял, но сначала попробую по-своему. Решил просто поставив счетчики CNT каскадом друг на друга, расширив число до 131000, которое собирается из отдельных регистров уже в трейсе.

Артем Пешин
29.01.2020, 19:11
А по поводу пропадания связи: узел не критичен. Это по факту лишь табло для персонала линии, где отражается выполнение плана. Управления никакого исп. механизмами нет. Только индикация количества продукта.

melky
30.01.2020, 19:25
Вообще не вижу проблем читать-писать 32 битную переменную в ПР200.
1. в программе ПР нужно разделять и собирать в/из 2-х регистров, как в прочем и на других приборах
2. SCada должна уметь работать и с тем и с тем. Если у вас проблема с трейсом, то это проблема трейса....