RomanPertsev

Ответы в темах

Просмотр 15 сообщений - с 16 по 30 (из 61 всего)
  • Автор
    Записи
  • RomanPertsev
    Участник

    При нажатии на динамический рисунок кнопки отправляется команда на канал «1000» (расчетно-выходной), у канала «1000» входная формула «1», а выходная формула «2», в таблице текущих значений вижу у канала «1000» значение «1h», нажимаю на кнопку в таблице текущих значений у канала «1000» ничего не меняется (скорее всего изменения не успевают отразится) значение «1h», а в журнале последних команд регистрируется запись «канал 1000, Val=2,000», в модуле автоматического управления триггер настроен на изменение значения канала с «1» на «2», но он не срабатывает, в логах журнала работы модуля видно что триггер стоит в ожидании.
    Я думаю что триггер не успевает ловить у канала «1000».

    RomanPertsev
    Участник

    Не-е-е тумблер имеет черезвычайно убогий дизайн и его никак не заменить, можно лишь внутрь него вставить картинку. 🙂

    RomanPertsev
    Участник

    Да дело в том что чтобы включить устройство нужно послать «1» на один регистр, а чтоб выключить нужно послать «1» но на другой регистр, делать рядом две кнопки одна для вкл, а другая для выкл это глубо, я сделал две кнопки и настроил им видимость чтоб они исчезали, но беда в том что они даже невидимые доступны для нажатия, а если их расположить одна над другой то вообще та что сверху видимая и не видимая всегда нажимается. Чтоб это решить я сделал третий канал (1000), но и через него нельзя. Несколько дней сижу над такой ерундой как вкл и выкл.

    RomanPertsev
    Участник

    Очень необходимая функция чтоб кнопка импульсом присваивала значение каналу, неужели эту задачу невозможно решить стандартными и даже платными модулями?

    RomanPertsev
    Участник

    Посоветуйте как можно подправить.

    • Ответ изменён 1 год, 3 месяца назад пользователем RomanPertsev.
    RomanPertsev
    Участник

    PulseSetVal – имя класса;

    .InPulse() / .OutPulse() – методы;

    Оба метода объявлены public static, значит доступны отовсюду.

    RomanPertsev
    Участник

    Здесь опять какие то скрытые ньансы, недокуметированные и т.п.?

    RomanPertsev
    Участник

    Вроде простой скрипт, но не работает, ошибка компеляции.

    RomanPertsev
    Участник

    Входная формула канала 1000 PulseSetVal.InPulse()
    Выходная формула канала 1000 PulseSetVal.OutPulse()

    RomanPertsev
    Участник

    Если в выходную формулу канала 1000 вписать вызов этоко скрипта, то при нажатии кнопки должен отработать этот код, который будет менять 1 на 2 и обратно.
    Так же должно получится?

    using System;

    public static class PulseSetVal
    {
    // сколько проходов держим 2 (измените при необходимости)
    private const int HoldCycles = 3;
    private static int cnt = 0;

    /* ———- ВЫХОДНАЯ формула канала 1000 ———- */
    public static double OutPulse()
    {
    // любая пришедшая команда запускает импульс
    cnt = HoldCycles;

    // пишем двойку в канал 1000, статус сохраняем
    SetVal(1000, 2);

    // вернуть 2 – это и будет Val канала в данный момент
    return 2;
    }

    /* ———- ВХОДНАЯ (расчётная) формула канала 1000 ———- */
    public static double InPulse()
    {
    if (cnt > 0) // ещё держим 2?
    {
    cnt—;
    return 2; // Val остаётся 2
    }
    else
    {
    // импульс закончился – вернуть 1
    // и сразу записать 1 в «текущие данные»,
    // передав при этом прежний статус
    SetVal(1000, 1);
    return 1;
    }
    }
    }

    RomanPertsev
    Участник

    Пока думаю

    • Ответ изменён 1 год, 3 месяца назад пользователем RomanPertsev.
    RomanPertsev
    Участник

    Я пытался написать скрипт чтоб при нажатии кнопки (активации канала 1000) в канал писалось значение -2, а через пару циклов сбрасывалось и по умолчанию писалась -1, но у меня нет пока понимания как через макрос читать и отправлять значения Val в канал 1000, особенно при поступлении управления.

    • Ответ изменён 1 год, 3 месяца назад пользователем RomanPertsev.
    • Ответ изменён 1 год, 3 месяца назад пользователем RomanPertsev.
    RomanPertsev
    Участник

    Я подключил доп модул «Автоматическое управления» и настроил его «триггер по двум каналам 1000 и 1061». Триггер не срабатывает потому что у канала 1000 на входе всегда пусто, кнопка лишь активирует команду на отправку выходной формулы, но не присваивает ему значение Val. Я пробовал на входе ему ставить формулу — «1», но так триггер всегда сработанный и это не работает. Триггер на команду канала мне не подходит так как в условиях сработки должны участвовать два канала, а не один. Навернека с этой проблемой сталкивались многие, как же решить эту проблему?
    Может кто пришлет скрипт для примера. Мне на моем уровне пока не хватает опыта чтоб это придумать.

    в ответ на: ExtScriptCompilerJP #39016
    RomanPertsev
    Участник

    Вот теперь понял как этим пользоваться. Теперь всё получилось. Спасибо.

    в ответ на: ExtScriptCompilerJP #39013
    RomanPertsev
    Участник

    может какую то библиотеку нужно?

Просмотр 15 сообщений - с 16 по 30 (из 61 всего)