сохранение значений по команде

Просмотр 15 сообщений - с 1 по 15 (из 52 всего)
  • Автор
    Сообщения
  • #14111
    timon84
    Участник

    Здравствуйте. Помогите, пожалуйста, разобраться с работой каналов управления и входных каналов.
    С входными каналами и простейшими формулами в них немного разобрался, а вот с каналами управления затор.
    Итак, если можно пошагово опишите как решить 2 задачи:
    1. по нажатию на кнопку на схеме входной канал 11 (дорасчетные ТИ) принимает и хранит для дальнейших расчетов значение канала 7 (Телеизмерение).
    При повторном нажатии происходит новое сохранение.

    2. По нажатию на кнопку на схеме необходимо ввести значение и отправить его по ModBus.

    Спасибо.
    P.S. встречал ссылки на форуме на некоторые мануалы, но они все «битые».

    #14112
    Romiros
    Участник

    Примерно так:
    1. Создайте канал управления, поставьте галочку использовать формулу. Формула SetVal(11, Val(7)). Тип команды — стандартная.
    Кнопке на схеме укажите данный номер канала управления. Действие — отправить команду сразу.
    2. Создайте канал управления. Тип команды стандартная, номер команды из вашего КП.
    Кнопке привяжите этот канал, действие — отправить команду.

    #14113
    timon84
    Участник

    Огромное СПАСИБО!!!
    Все оказывается довольно просто, но нигде не описано. 1,5 суток бился с этим.

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

    Наша база знаний — это форум )

    #14117
    ViktorDV
    Участник

    Подскажите пожалуйста как проще написать скрипт для использования в следующей ситуации. По каналу телеизмерение получаю код от 0 до 12. Необходимо в зависимости от кода каналу присвоить определенное значение. Вроде все понятно ….А вот и сел в лужу…

    #14118
    manjey73
    Участник

    Значение текстовое ? потому что если цифровое то оно и так от 0 до 12

    #14121
    ViktorDV
    Участник

    Оно то цифровое, но надо в зависимости от кода присвоить каналу номинал 32,50,63,80,100 и т.д. до 1500. Создал массив от 0 до 11 со значением от 32 до 1500
    И читаю с массива по коду 0 — 32, 1 — 50 … и т.д. и не могу в до расчетный канал вывести данные в скаде….Это же так просто…Ан нет, дрова! Ошибку вебстанция фиксирует….

    #14122
    ViktorDV
    Участник

    Коду полученному соответствует индекс массива

    #14123
    ViktorDV
    Участник

    int CodInoms[12] = {32,50,… };

    #14124
    manjey73
    Участник

    вы программировали когда нибудь ПЛК или реле на LAD ?

    тут такой же принцип, только возвращаемое значение формулы попадает в данные канала.
    То есть если вы сделали Дорасчетный канала и указали в нем «Использовать формулу» то значение данной формулы будет возвращено в этот канал.

    Если формула большая, вы можете ее внести в Справочник — Формулы по аналогии с другими.

    Например ваша формула public Znachenie_massiva (double vhodnaya_peremennaya)
    {
    тут ваши вычесления
    return raschetnaya_peremennaya;
    }

    Тогда вы просто в дорасчетном канале используете формулу
    Znachenie_massiva(Val(XXX))

    где XXX это номер канала поступающих данных от 0 до 12 или что там у вас будет.

    #14125
    manjey73
    Участник

    я бы посоветовал использовать всегда double и конвертировать его внутри ваших формул, это позволит использовать формулы внутри формул.
    Ну можно и без этого. При возвращении значения ваших расчетов Scada сделает конвертацию в double, так как БД значений в данном формате.

    #14126
    manjey73
    Участник

    Посмотрите формулы в Справочнике, ну и в документации что можно применять внутри формул. Использование формул

    #14127
    ViktorDV
    Участник

    Ребята, за алгоритм и подсказки огромное всем спасибо. Сейчас проверю. Я кажись уже вижу у себя ошибку. Не взыщите если что. На таком простом и сел лужу… Скрипт на более сложное написал и подключил без проблем. А тут….Провозился пол дня….Пришлось помощи просить…

    #14128
    manjey73
    Участник

    При перезапуске Сервера он кричит об ошибке например в формулах, указывая строку и т.д. Можно посмотреть в файле CalcEngine.cs в папке лога Сервера.

    Одна из причин ошибки как раз то, что код Scada преобразует данные в double

    Ну и синтаксические ошибки могут быть в вашей формуле.
    А так, есть еще примеры формул на форуме, можете посмотреть что и как.
    Я вообще из формул файл записывал и читал…

    Синтаксис C# соответственно, просто есть некоторые нюансы.

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

    Для отладки сложных формул можно использовать Visual Studio Community Edition. Пример проекта.

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