Ошибка при компилировании исходного кода формул

Стартовая страница Форумы Ошибки в работе Ошибки Сервера Ошибка при компилировании исходного кода формул

Просмотр 15 сообщений - с 16 по 30 (из 63 всего)
  • Автор
    Сообщения
  • #13024
    Andrew174
    Участник

    Но, несмотря на эти временные неудобства (отсутствие толкового «талмуда» по формулам), считаю RapidSCADA лучшей прикладной SCADA-системой.

    Ну а HELP по формулам — это дело времени …

    Думаю, что когда нибудь Михаилу надоест отвечать на одинаковые вопросы в форуме и он его сделает …

    😉

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

    Спасибо 🙂
    Ну, документация всё же улучшается постепенно.

    #13199
    puhel
    Участник

    Добрый день!

    Получил такую ошибку:
    Строка 514, колонка 34: error CS0102: Класс «Scada.Server.Engine.CalcEngine» уже содержит определение для «MonthBegDict»

    В файле CalcEngine.cs действительно, в двух строках — 440 и 514 один и тот же код:
    public Dictionary<int, DateTime> MonthBegDict = new Dictionary<int, DateTime>();

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

    #13201
    puhel
    Участник

    Похоже, разобрался в чем дело. Импортировал Formula.xml из предыдущей версии, что привело к ошибке. Заменил на тот, что в текущей версии, и ошибка пропала.

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

    Спасибо за информацию.

    #13303
    Taw
    Участник

    Могу ли я записать формулу в канале (канал 201 или 203) который получает данные с датчиков чтобы он выводил уже рассчитанные по формуле значения? Или нужно обязательно делать дополнительный расчетный канал с номером после канала, данные которого хотим пересчитать?

    Я сделал отдельным вычислительным каналом, но формула не работает. Где посмотреть лог или в чем может быть ошибка?

    #13304
    manjey73
    Участник

    Да, можно формулу писать сразу во входном канале ТИ, необходимо использовать Cnl
    Смотрите документацию по формулам.

    Лог смотреть в логе сервера ScadaServer\Log\ScadaServerSvc.log, он ругается на строку и столбец файла CalcEngine.cs куда попадают все формулы.

    На первый взгляд формула правильная, не должно быть ошибок.

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

    Это вы преобразовываете аналоговый датчик или что ?
    Есть описание самой формулы ? например из документации на Adam или мотор ?

    • Этот ответ был изменен 4 года, 7 месяцев назад от manjey73.
    #13309
    Mikhail
    Модератор

    Если Сервер не стартует, то уточните подробности ошибки из лога.

    #13315
    Taw
    Участник

    Да, я пытаюсь принять в Rapid Scada аналоговый сигнал с АДАМ-6017. Но там проблема тоже, вместо 5.4 В (которые я подаю на вход аналогового порта) получаю что-то вроде 0.8 В.
    и сервер и коммуникатор работают нормально. Но формулы не считаются. Почему?



    #13316
    manjey73
    Участник

    Taw Ошибки в формуле у вас нет, код формул был успешно скомпилирован. Возможно сама формула неправильная, или неправильное представление чисел… Судя по значениям 32769 и около них у вас датчики за пределами диапазона.

    #13317
    manjey73
    Участник

    out1:= in1 * 20 / 32767; (* для 0..20 мА *)
    out2:= (in1 * 16 / 32767) + 4; (* для 4..20 мА *)

    Вот по Siemens пример, но на самом деле он не совсем корректен думаю будет.

    Например 33769*20/32767 = 20.61159093 а это выше 20 мА. Насколько помню, там еще есть зона нечувствительности, хотя возможно она для обработки ошибок самого модуля предназначена, не помню. А если использовать вторую формулу то получается 24 мА, что еще больше. У вас в формуле непонятно откуда взялось 65536, это беззнаковое число. и у вас там получается значение почти равное нулю, что неестественно.

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

    з.ы. вообще зависит от модуля. Если он измеренное значение выдает в целочисленной форме от 0 до 32767, еще может быть зона нечувствительности и по факту от 0 до 27644

    нужна правильная формула масштабирования для приведения сигнала к реальным значениям.
    В разделе формулы я выкладывал Scaler. Но для токовых сигналов или еще каких, согласно мануалам производителя модуля можно применять и более простые формулы, аналогичные как у Сименс например…

    #13320
    Taw
    Участник

    Но самая странная вещь, когда значение каналов перевожу на mqtt протокол (mqtt протокол просто берет данные из канала и размещает их в интернете на брокере). То из интернета я получаю уже нормальные данные, пересчитанные по формуле. Что вообще за прикол?

    Вот и покупай автоматические модули и т.д. Если что то всплывет то ж….есть полная со всей системой. и все будет в логах показывать, что работает. Я против закрытого кода вообще.
    Я измеряю напряжение. И проблема там, что в самом модуле АДАМ тоже можно уже увидеть значение реальное. оно то и есть 0.8 — очень маленькое. А в скада я хочу просто считать значения из датчиков. Я сначала проверяю на стороннем ПО а только потом перевожу в Rapid Scada.
    Не понимаю — в веб-станции показывает что вообще нет значений в расчетных каналах, а в линии коммуникатора АДАМ-6017 не реагирует вообще на формулу и представляет данные с модуля минуя формулу.

    #13321
    Taw
    Участник

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

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