Выделить бит

Просмотр 15 сообщений - с 31 по 45 (из 47 всего)
  • Автор
    Сообщения
  • #29116
    Mikhail
    Модератор

    Добрый день!

    Кстати в 6й версии формулы SetBit не было, её добавлял вручную.

    Формула SetBit присутствует в блоке скриптов Bit operations.
    Без скриншотов и логов трудно что-либо понять в описании проблемы.

    #29120
    MVTriton
    Участник

    <Извините, с OPC такое наверное не прокатит. Речь о драйвере Modbus

    Вообще использовать OPC при встроенных возможностях работы с Modbus напрямую это полное извращение>

    Насчёт того, что это костыли, я согласен, но с эти костылями работает стабильнее. Опрос стоял раз в 1с, что в скаде, что в ОРС. В итоге ОРС работает лучше при тех же настройках. Когда будет реальная связь в полевых устровиях, тогда и поэксперементирую с настроками. Пока только через ОРС, конечно же изначально пробовал modbus.

    #29122
    manjey73
    Участник

    Вы OPC опрашиваете раз в 1с, а не сам прибор полагаю. Какие настройки таймаута и паузы в самом OPC ?

    #29141
    Mikhail
    Модератор

    Насчёт того, что это костыли, я согласен, но с эти костылями работает стабильнее.

    Нужно анализировать журнал линии связи и лог OPC-сервера, чтобы сравнить в чём разница. Плюс тот вопрос, который написан в предыдущем сообщении.

    #29212
    MVTriton
    Участник

    Поколдовал с настройками 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 E5

    #29213
    manjey73
    Участник

    1. В настройках установите начинать с 0 и 10-тичную систему и просто указывайте номер регистра как из документации без прибавления +1

    Ну вот вы считали весь 512-й регистр, дальше делайте с ним что хотите при помощи расчетных каналов

    Значит все биты регистра по нулям…

    А, у вас в ответе 0x0200 значение то есть один бит установлен точно, вам надо его получить?
    0х0200 это 9-й бит

    GetBit(Канал в куда вы принимаете, 9)
    Можно прямо во входном канале GetBit(Cnl, 9) но это только один бит проверяется

    • Этот ответ был изменен 1 год, 4 месяца назад от manjey73.
    #29215
    manjey73
    Участник

    float для ПР200 нужна перестановка 2301, можно в общих настройках один раз указать

    #29216
    MVTriton
    Участник

    float нормально принимались. Перестановка байт в данном случае не требовалось, т.к. в ПР200 настроено 012345678, так же и в скаде.
    В общем бился бился, переделал шаблон устройства с 1 на 0, теперь адресация соотвествует адресации ПР200, а не +1, удалил все старые каналы, переименовал их другим именем, перезапустил, всё заработало как надо. Данные принимаются по 512 регистру, нужный бит читается. Дальше видимо буду доделывать запись бита в числе, но у же не через OPC))))
    Всем кто откликнулся, спасибо за ответы!

    #29220
    manjey73
    Участник

    в ПР200 для слейв режима не настраивается порядок байт и регистров, эти настройки ТОЛЬКО для режима мастер.
    Пора бы уже это запомнить, раз уж вы пользуетесь Owen Logic
    Создайте единственную переменную float по адресу 512 и меняя ее на ПР200 переставляя настройки вы в этом убедитесь.

    Запись бита в числе так же выполняется вполне и самой Scada.

    #29221
    manjey73
    Участник

    Есть команда SetBit в 6-й версии вроде по умолчанию идет.
    Только шаблон надо будет подрихтовать, добавив дополнительную команду.
    Сейчас с лету не подскажу, но точно можно

    #29223
    MVTriton
    Участник

    С SetBit экспериментировал, но только с OPC. В 6й версии штатно не было формулы SetBit, дописывал в скрипты, согласно с формулам с форума и экспериментировал не по одной теме. Пока реализация управления выходами не требуется, всё-таки связь не стабильная, как будет приемлемое качество связи, можно будет поэкспериментировать. Главное данные принимаются и нормально рассчитываются и отображаются, это в приоритете.

    #29224
    manjey73
    Участник

    Bit operations — SetBit находится там. я вроде не дописывал туда ничего 🙂

    #29468
    cond33
    Участник

    Подключаю 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), то всё начинает начинает корректно работать.

    Какая ошибка в формуле автоматически сгенерированных выходных каналов?

    #29484
    Mikhail
    Модератор

    Формула SetBit(CnlData cnlData, int n, double isOn) была добавлена позже. У Вас в проекте её, наверное, нет. Вы можете обновить Rapid SCADA и скопировать файл SCADA\ScadaAdmin\Templates\EmptyProject.ru-RU\BaseXML\Script.xml в свой проект. Если добавляли свои скрипты, то нужно выгрузить только стандартные формулы, не перекрывая весь файл.

    #29507
    cond33
    Участник

    Спасибо, всё заработало.

Просмотр 15 сообщений - с 31 по 45 (из 47 всего)
  • Вы должны авторизироваться для ответа в этой теме.