1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Haiwell Cloud Scada, HMI +JS

Обсуждение вопросов, не относящихся ни к одному из других подразделов

Модератор: Глоб.модераторы

Ответить

Автор темы
bas7
новенький
новенький
Сообщения: 1
Зарегистрирован: 01 июл 2024, 19:50
Имя: Богдан
Страна: Россия

Haiwell Cloud Scada, HMI +JS

Сообщение bas7 »

Добрый день, я студент на летней практике. Столкнулся с проблемой в среде визуализации и макросов Haiwell Scada.
Описание проблемы:
Существует идеальный техпроцесс на предприятии, шаги и время которого высчитаны технологами.
Одна из моих задача — это отобразить на графике циклограмму этого процесса(далее уставка) и наложить поверх значения реального техпроцесса, чтобы в реальном времени смотреть расхождение. Проблема возникла при написании скрипта для этого дела
Интервальная уставка примерно выглядит так(вложение):
  • 1шаг: за 10 минут набирается ток 8А
    2 шаг: за x мину набирается 12 А
    3 шаг: также за x минут значение падает в 0, техпроцесс заканчивается.
В проекте ПЛК отсутствует, HMI берет на себя бразды управления и всю логику нужно прописать в Haiwell Scada.
В этой среде разработки, скрипты пишутся на JavaSсript. Вот я и попытался) :crazy0to:

Код: Выделить всё

// $InternalVariable_1.setpoint - это внутренняя переменная, которая отображается на графике
var setpoint = $InternalVariable_1.setpoint;
var time = 0;
// Setpoint - уставка, time - счетчик времени
setpoint = 0;
// Первый цикл: увеличиваем setpoint от 0 до 8
for (time = 0; time <= 8; time++) {
    if (setpoint < 8) {
        setpoint++;
        // Обновляем значение внутренней переменной
        $InternalVariable_1.setpoint = setpoint;
    } else {
        // Если setpoint достиг 8, выходим из цикла
        break;
    }
}
// Второй цикл: увеличиваем setpoint от 8 до 12
for (time = 0; time <= 20; time++) {
    if (setpoint <= 12) {
        setpoint = setpoint + 0.5;
        // Обновляем значение внутренней переменной
        $InternalVariable_1.setpoint = setpoint;
    } else {
        // Если setpoint достиг 12, выходим из цикла
        break;
    }
}
// Третий цикл: уменьшаем setpoint от 12 до 0
for (time = 0; time <= 30; time++) {
    if (setpoint > 0) {
        setpoint--;

        $InternalVariable_1.setpoint = setpoint;
    } else {
        // Если setpoint достиг 0, выходим из цикла
        break;
    }
}
Проблема в том, что данный код, при симуляции, отображает каждый раз разную ломанную, либо вообще с оси Х не вылезает.
Смею предположить, что проблема со временем, тк счет неправильно работает.
В руководстве к программе абсолютно нет информации как работать со временем.
Ищу подсказки у знающих людей!
Заранее спасибо!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «Общие вопросы»