Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › Выделить бит
- В этой теме 46 ответов, 8 участников, последнее обновление 1 год, 1 месяц назад сделано Andre1964.
-
АвторСообщения
-
03.07.2023 в 15:24 #29116MikhailМодератор
Добрый день!
Кстати в 6й версии формулы SetBit не было, её добавлял вручную.
Формула SetBit присутствует в блоке скриптов Bit operations.
Без скриншотов и логов трудно что-либо понять в описании проблемы.03.07.2023 в 16:53 #29120MVTritonУчастник<Извините, с OPC такое наверное не прокатит. Речь о драйвере Modbus
Вообще использовать OPC при встроенных возможностях работы с Modbus напрямую это полное извращение>
Насчёт того, что это костыли, я согласен, но с эти костылями работает стабильнее. Опрос стоял раз в 1с, что в скаде, что в ОРС. В итоге ОРС работает лучше при тех же настройках. Когда будет реальная связь в полевых устровиях, тогда и поэксперементирую с настроками. Пока только через ОРС, конечно же изначально пробовал modbus.
03.07.2023 в 18:00 #29122manjey73УчастникВы OPC опрашиваете раз в 1с, а не сам прибор полагаю. Какие настройки таймаута и паузы в самом OPC ?
04.07.2023 в 14:24 #29141MikhailМодераторНасчёт того, что это костыли, я согласен, но с эти костылями работает стабильнее.
Нужно анализировать журнал линии связи и лог OPC-сервера, чтобы сравнить в чём разница. Плюс тот вопрос, который написан в предыдущем сообщении.
13.07.2023 в 12:07 #29212MVTritonУчастникПоколдовал с настройками GPRS модема, увеличил таймауты и время опроса устройства. Показания стали стабильнее, от OPC сервера отказался. Возник вопрос. По опросу.
В ПР200 считываются данные 512 регистр. ОРС сервер прекрасно данные принимаются, выделял бит и оттуда и сразу было понятно состояние оборудование.
Теперь при Modbus RTU в RAPID SCADA, значения с плавающей точкой читаются хорошо, а вот 512 никак, при том что по логам всё отлично, значение всё время приходит 0.
В скаде опрашивается 512+1=513 регистр, тип данных ushort (16 бит, 2 байта, целочисленное), перестановка байт не используется. Где можно покапать ?Отправка (8): 0A 03 02 00 00 01 84 C9
Приём (2/2): 0A 03
Приём (5/5): 02 02 00 1C E513.07.2023 в 13:26 #29213manjey73Участник1. В настройках установите начинать с 0 и 10-тичную систему и просто указывайте номер регистра как из документации без прибавления +1
Ну вот вы считали весь 512-й регистр, дальше делайте с ним что хотите при помощи расчетных каналов
Значит все биты регистра по нулям…
А, у вас в ответе 0x0200 значение то есть один бит установлен точно, вам надо его получить?
0х0200 это 9-й битGetBit(Канал в куда вы принимаете, 9)
Можно прямо во входном канале GetBit(Cnl, 9) но это только один бит проверяется- Этот ответ был изменен 1 год, 4 месяца назад от manjey73.
13.07.2023 в 13:30 #29215manjey73Участникfloat для ПР200 нужна перестановка 2301, можно в общих настройках один раз указать
13.07.2023 в 14:16 #29216MVTritonУчастникfloat нормально принимались. Перестановка байт в данном случае не требовалось, т.к. в ПР200 настроено 012345678, так же и в скаде.
В общем бился бился, переделал шаблон устройства с 1 на 0, теперь адресация соотвествует адресации ПР200, а не +1, удалил все старые каналы, переименовал их другим именем, перезапустил, всё заработало как надо. Данные принимаются по 512 регистру, нужный бит читается. Дальше видимо буду доделывать запись бита в числе, но у же не через OPC))))
Всем кто откликнулся, спасибо за ответы!13.07.2023 в 17:04 #29220manjey73Участникв ПР200 для слейв режима не настраивается порядок байт и регистров, эти настройки ТОЛЬКО для режима мастер.
Пора бы уже это запомнить, раз уж вы пользуетесь Owen Logic
Создайте единственную переменную float по адресу 512 и меняя ее на ПР200 переставляя настройки вы в этом убедитесь.Запись бита в числе так же выполняется вполне и самой Scada.
13.07.2023 в 17:05 #29221manjey73УчастникЕсть команда SetBit в 6-й версии вроде по умолчанию идет.
Только шаблон надо будет подрихтовать, добавив дополнительную команду.
Сейчас с лету не подскажу, но точно можно17.07.2023 в 15:54 #29223MVTritonУчастникС SetBit экспериментировал, но только с OPC. В 6й версии штатно не было формулы SetBit, дописывал в скрипты, согласно с формулам с форума и экспериментировал не по одной теме. Пока реализация управления выходами не требуется, всё-таки связь не стабильная, как будет приемлемое качество связи, можно будет поэкспериментировать. Главное данные принимаются и нормально рассчитываются и отображаются, это в приоритете.
17.07.2023 в 16:37 #29224manjey73УчастникBit operations — SetBit находится там. я вроде не дописывал туда ничего 🙂
21.08.2023 в 21:30 #29468cond33УчастникПодключаю Modbus устройство содержащее битовые регистры упакованные в 16 битные регистры. В конфигураторе указываю пункт «битовая маска».
С регистрами только для чтения проблем нет, при создании каналов автоматически добавляются расчетные каналы с входной формулой вида GetBit(DataRel(-1), 0) и они работают.
А вот с регистрами для чтения/записи проблема: при создании каналов добавляются каналы Расчетный/выходной с выходной формулой вида SetBit(DataRel(-1), 0, Cmd) и с ней сервер не запускается.
В логе сервера появляются такие строки:2023-08-21 21:01:16 [scda2155][root][ERR] Error compiling the source code of the scripts and formulas: (397,48): error CS1503: Argument 1: cannot convert from 'Scada.Data.Models.CnlData' to 'double' (399,48): error CS1503: Argument 1: cannot convert from 'Scada.Data.Models.CnlData' to 'double' (401,48): error CS1503: Argument 1: cannot convert from 'Scada.Data.Models.CnlData' to 'double' Check the source code in /var/log/scada/ScadaServer/Log/CalcEngine.cs
Если выходную формулу поменять на такую: SetBit(Val(819), 0, Cmd), то всё начинает начинает корректно работать.
Какая ошибка в формуле автоматически сгенерированных выходных каналов?
22.08.2023 в 15:10 #29484MikhailМодераторФормула SetBit(CnlData cnlData, int n, double isOn) была добавлена позже. У Вас в проекте её, наверное, нет. Вы можете обновить Rapid SCADA и скопировать файл SCADA\ScadaAdmin\Templates\EmptyProject.ru-RU\BaseXML\Script.xml в свой проект. Если добавляли свои скрипты, то нужно выгрузить только стандартные формулы, не перекрывая весь файл.
23.08.2023 в 19:24 #29507cond33УчастникСпасибо, всё заработало.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.