Alexandr

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

Просмотр 15 сообщений - с 31 по 45 (из 67 всего)
  • Автор
    Записи
  • в ответ на: Операции с бинарным числом #34124
    Alexandr
    Участник

    В теме Перевести секунды, в часы и минуты

    Там мне ответили
    JurasskPark — предложил формулу,
    Вы посоветовали TimeSpan (если честно даже не знаю что это)
    и Михаил (как я понимаю это разработчик) также дал пищу для раздумывания.

    Я прочитал все ответы, но пока не особо понял ))).

    Начну читать более внимательно, изучать и пробовать, буду отписываться в том чате, что бы не нарушать тематику.

    в ответ на: Операции с бинарным числом #34121
    Alexandr
    Участник

    manjey73,

    Когда я понял алгоритм, оказалось что все очень просто, а когда не понимаешь все очень сложно.
    Зато приятно, что все будет настроено как хотел того производитель.

    Сложное теперь для меня время, это еще один из моих вопросов на форуме, до времени я еще не доходил ))).

    Еще раз спасибо!

    в ответ на: Операции с бинарным числом #34091
    Alexandr
    Участник

    manjey73

    я разобрался со сдвигами, и масками.

    Всем огромное спасибо за оказанную помощь.

    • Ответ изменён 2 года, 2 месяца назад пользователем Alexandr.
    в ответ на: Операции с бинарным числом #34089
    Alexandr
    Участник

    Всем добрый день!

    manjey73, я посмотрел по ссылке, но что то у меня ничего не получается, сервер не стартует, не могли бы Вы помочь.

    Как писал ранее в регистре 16 бит, по 4-е бита на каждую аварию.

    к примеру
    Name Min Max Bits/ Sign
    Emergency stop 0 15 13/16-16/16
    Low oil pressure 0 15 9/16-12/16
    High coolant temperature 0 15 5/16-8/16
    Reserved 0 15 1/16-4/16

    Я добавил в скрипты Вашу формулу

    public double GetAnyBits(double val, int n, int mask = 1)
    {
    ulong ulVal = (ulong)val;
    return (ulVal >> n) & (ulong)mask;
    }

    Для получения старший 4 битов (первые четыре слева) Emergency stop мне требуется выполнить смещение в право на 8, но я не понимаю что за маска. Это какое число от чего они зависит? не могли бы подсказать?

    А если мне требуется получить 4 бита High coolant temperature, смещение вправо на 4, а первые 8 битов они отрежутся?

    в ответ на: Операции с бинарным числом #34085
    Alexandr
    Участник

    Добрый день,

    Все верно, в поставленном вопросе у меня каждый бит в регистре определяет значение.

    Когда я разобрался в данном вопросе, я вернулся к старым своим решениям, и захотелось навести там порядок, так как там я сделал это не совсем хорошо, я генерировал аварию и записывал десятичное значение, но если мы получим 2 аварии в одном регистре скада не выдаст проблему.

    Контроллер Deep Sea для генераторов, в регистре аварий имеет 16 бит, в одном регистре 4 аварийных сообщения. Т.е. на каждую аварию предоставляется 4 бита.

    Поэтому попросил у вас пример как делали вы с тремя битами, и сделать что то подобное с 4-мя битами.
    Хотел бы сделать просто все верно и красиво.

    в ответ на: Операции с бинарным числом #34078
    Alexandr
    Участник

    А не могли бы скинуть пример, как Вы это осуществили.

    у меня как раз такая же задача.

    Регистр определяет 4 аварии, имеет 16 бит, соответственно разделен на 4 группы.

    Каждая группа из 4 бит, определяет имеется ли аварийное сообщение на контроллере или нет.

    в ответ на: Операции с бинарным числом #34076
    Alexandr
    Участник

    Спасибо!

    Примерно понимаю что нужно сделать.

    Всем большое спасибо за помощь!

    в ответ на: Операции с бинарным числом #34074
    Alexandr
    Участник

    Спасибо,

    а если требуется получить к примеру 4 бита из 16-ти, такое возможно?

    в ответ на: Не отображать значение на схеме #34060
    Alexandr
    Участник

    Юрий, все верно.

    Когда контроллер не получает инфо от другого контроллера, то на дисплее он отображает ХХХ, а модбасе кидает 32766.

    Тут можно пойти несколькими путями,
    либо как предложили Вы, либо как предложил Михаил.
    Можно действовать от ситуации, в моем случае температура не может быть более 120 градусов, соответственно я предположил что можно считать если число просто больше значит оно не верное.

    Тут все решилось, по времени это второй вопрос который был в форуме от меня, я чет там совсем не понимаю))).

    в ответ на: Не отображать значение на схеме #34053
    Alexandr
    Участник

    Всем огромное спасибо за помощь!

    При таком формате формулы «Cnl; Cnl >=120 ? 0 : CnlStat» появились прочерки, прям как требуется.

    Еще чуть позже проверю, работает ли при формула при необходимости вести деление или умножение на поправочный коэффициент. Типа такой Cnl/0,1; Cnl/0,1 >=10 ? 0 : CnlStat.

    в ответ на: Не отображать значение на схеме #34039
    Alexandr
    Участник

    Всем добрый день,

    Юрий при использовании формулы
    Cnl = 32766 ? 0:Cnl

    Сервер не стартует

    2024-08-15 10:41:56 [RAPIDSCADA][RAPIDSCADA$][ERR] Ошибка при компиляции исходного кода скриптов и формул:
    (678,53): error CS0200: Property or indexer ‘CalcEngine.Cnl’ cannot be assigned to — it is read only
    (678,59): error CS0029: Cannot implicitly convert type ‘int’ to ‘bool’
    Проверьте исходный код в файле C:\Program Files\SCADA\ScadaServer\Log\CalcEngine.cs
    2024-08-15 10:41:57 [RAPIDSCADA][RAPIDSCADA$][ERR] Нормальная работа невозможна

    Если делать так как предлагает Михаил, Cnl; Cnl < 100 ? 0 : CnlStat

    то получаем на выходе тоже значение в моем случае это 32766

    Если же изменить формулу до вида Cnl < 100 ? 0 : CnlStat
    канал меняется но на выходе идут не прочерки а значение 1.

    Пока оставил последний вариант, что бы не отрабатывали аварийные сообщения по завышению температуры, но значение 1 также вводит в заблуждение персонал клиента.
    По хорошему бы иметь отображение в виде «-«, что нет данных.

    В любом случае спасибо за помощь!

    Alexandr
    Участник

    Парни, я бы с радостью это сделал

    Подскажите где прочитать посмотреть и т.д.
    Я могу хорошо настроить физику, построить маршруты, преобразователи, установить и настроить ИБП, генератор кондиционер.
    Устанавливал настраивал zabbix, сейчас перешел во многом на Rapid.

    Alexandr
    Участник

    Добрый день!

    из документа DeepSea
    6-7 условный регистр время работы генератора, в секундах.

    В UnixTime привязаны часы контроллера DeepSea.

    10.9 Page 7 – Accumulated Instrumentation
    Notes:
    1. These are read/write registers though some systems may not support writing to some registers.
    2. The ‘Engine run time for load demand’ is used by the hours run balancing scheme, it can be reset independently of the ‘Engine Run Time’ to cope with hire sets being added to a site.

    8xxx/7xxx/6xxx/L40x/4xxx register allocation

    Register offset Name Minimum value Maximum value Scaling factor Units Bits/ Sign
    0-1 Current time since 1/1/70 0 4.29 x109 1 Seconds 32
    2-3 Time to next engine maintenance -2.14 x109 2.14 x109 1 Seconds 32S
    4-5 Time of next engine maintenance since 1/1/70 0 4.29 x109 1 Seconds 32
    6-7 Engine run time 0 4.29×109 1 Seconds 32

    Alexandr
    Участник

    JurasskPark, спасибо попробую.

    еще вопрос, не мог бы ты отправить картинки на почту aleksin@mail.ru.
    картинки не могу просмотреть, он и не увеличивает, поэтому ничего не видно

    в ответ на: Новый релиз Rapid SCADA 6.0.2 #27561
    Alexandr
    Участник

    Михаил,

    Не знаю как у Вас на картинке сделать но у меня так не получается, нет такого представления.

    Сделал следующее, установил пакет dotnet-hosting-7.0.3-win, после этого стартовая страница заработала.

    Изменений смотрю очень много сделано, решил пока по изучать данную версию.

    Спасибо!

Просмотр 15 сообщений - с 31 по 45 (из 67 всего)