sakhalin_Cat

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

Просмотр 15 сообщений - с 256 по 270 (из 286 всего)
  • Автор
    Записи
  • sakhalin_Cat
    Участник

    Формула эта, как написано выше-

    public double SetBit(double n, int index, bool value)
    {
    long nn = Convert.ToInt64(n);
    return value ? nn | (1 << index) : nn & ~(1 << index);
    }

    Сохранена в справочнике как SetBit

    sakhalin_Cat
    Участник

    Да вроде есть такое.
    Чего сделать нужно?

    sakhalin_Cat
    Участник

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




    sakhalin_Cat
    Участник

    Доброго дня.
    Просидел сегодня всю ночь и толку не добился. Где-то что-то не так делаю.
    Если не сложно обьясните где именно.
    Если включаю формулу то ядро и вебсервер не перезапускаются ну или тупят не знаю.
    Без включеной формулы все работает, только команда в никуда улетает.

    http://argon.pw/1/1.jpg
    http://argon.pw/1/2.jpg
    http://argon.pw/1/3.jpg
    http://argon.pw/1/4.jpg

    • Ответ изменён 5 лет, 2 месяца назад пользователем sakhalin_Cat.
    • Ответ изменён 5 лет, 2 месяца назад пользователем sakhalin_Cat.
    sakhalin_Cat
    Участник

    И за что отвечает поле «порядок байт» в «редактор шаблонов»

    sakhalin_Cat
    Участник

    А куда в этой формуле чего подставлять?

    sakhalin_Cat
    Участник

    У modpool нет лога это утилита командной строки. В контроллере — первое двухбайтовое слово «WORD»= %MW0 находится по смещению 16385 и содержит байты %MB0 и %MB1 в которых есть биты %MX0.0 — %/MX0.7 и %MX1.0 — %/MX1.7 соответственно.

    • Ответ изменён 5 лет, 2 месяца назад пользователем sakhalin_Cat.
    • Ответ изменён 5 лет, 2 месяца назад пользователем sakhalin_Cat.
    sakhalin_Cat
    Участник

    Чтобы изменить состояние слова мне нужно послать двуххбайтовую комманду
    например
    отправка modpoll -m tcp -r 16385 192.168.5.109 255 == DEC=255 == «2Byte» (0000 0000 1111 1111) переводит BOOL регистры %MX0.0 — %/MX0.7 TRUE
    .
    отправка modpoll -m tcp -r 16385 192.168.5.109 -256 == DEC= -256 == «2Byte» (1111 1111 0000 0000) переводит BOOL регистры %MX1.0 — %/MX1.7 TRUE
    .
    отправка modpoll -m tcp -r 16385 192.168.5.109 -1 == DEC= -1 == «2Byte» (1111 1111 1111 1111) переводит BOOL регистры %MX0.0 — %/MX0.7 и %MX1.0 — %/MX1.7 TRUE

    Вопрос — Как мне написать команлу в «Каналах» чтобы изменить один нужный мне Бит не затронув все остальные?
    Какой тип выбрать в настройках «Шаблона устройств» short? ubshort итд итп?

    • Ответ изменён 5 лет, 2 месяца назад пользователем sakhalin_Cat.
    sakhalin_Cat
    Участник

    Помогите пожалуйста.
    Я уже всю голову сломал.
    Что-то лыжи не едут. Я спокойно пишу в регистры контроллера программой modpull
    но я не могу понять как с рапидскады отправить запись в регистр.
    Уже несколько дней сижу и нифига не выходит. На анализаторе всякая фигня присылается. Понимаю, что что-то не так делаю.
    Подскажите куда пнуть?
    .
    Надо записать регистр по адресу 16385 значение — «1» это слово %MW0 состоящее из двух байт %MB0 и %MB1 соответственно содержащие биты %M0.0 — %M0.7
    Вопрос как записать единицу в нужный бит?

    modpoll -m tcp -r 16385 192.168.5.109 1

    sakhalin_Cat
    Участник

    Этот , файл который я назвал конфиг менеджкром этот Mercury230mgn.xml

    sakhalin_Cat
    Участник

    Это конфиг 230менеджмент из дистрибутива который на сайте.
    Там нет никаких комманд. Дайте пожалуйста ссылку на файл.
    Если я вставляю строчки из 236-го конфига в 230 то драйвер перестает работать.

    sakhalin_Cat
    Участник

    Вот у меня конец файла
    .
    ——————————
    <SndRequest Name=»Тариф 4 А+» Active=»false» Bit=»17″>
    <value name=»(L1), (кВт*ч)» signal=»59″ active=»true» range=»100″ />
    <value name=»(L2), (кВт*ч)» signal=»60″ active=»true» range=»100″ />
    <value name=»(L3), (кВт*ч)» signal=»61″ active=»true» range=»100″ />
    </SndRequest>
    </SndGroups>
    </DevTemplate>
    ——————————-
    Напишите как он должен выглядеть с новыми строками.

    sakhalin_Cat
    Участник

    В конфиге236-го в дистрибутиве нет закрывающих тегов </CmdGroup>
    есть только один
    </CmdGroups>

    sakhalin_Cat
    Участник

    Облом. У меня в счетчике реле нет. Новые придут проверю.

    sakhalin_Cat
    Участник

    Добавил. Драйвер пишет ошибка.

    Вставлял по подобию конфига от 236-го.
    Вот так —
    <CmdGroups>
    <CmdGroup Name=»Relay_Off» Active=»true» Signal=»105″ Cmd=»03″ Par=»31″ Data=»01″ inCnt=»4″ />
    <CmdGroup Name=»Relay_On» Active=»true» Signal=»106″ Cmd=»03″ Par=»31″ Data=»00″ inCnt=»4″ />
    </CmdGroup>
    </CmdGroups>

    А так и нужно чтобы тэги не закрытые были?
    ————
    <CmdGroups>
    <CmdGroup Name=»WriteTime» Active=»true» Signal=»101″ Mode=»2″ Cmd=»03″ Par=»0C» Data=»0030120421052000″ inCnt=»4″>
    <!—1.3.9 Установка времени, команда 101
    Уровень доступа 2,3
    Поле данных 8 байт BCD формата в последовательности
    сек, мин, часы, день нед., число, месяц, год, признак зима/лето
    (зима = 1, лето = 0)
    0030120421052000 — 21 мая 2020г 12:30:00 четверг, лето—>
    </CmdGroup>
    <CmdGroup Name=»ReadTime» Active=»true» Signal=»102″ Cmd=»04″ Par=»00″ Data=»» inCnt=»11″ />
    <CmdGroup Name=»ReadLastTime» Active=»true» Signal=»103″ Cmd=»04″ Par=»02″ Data=»FF» inCnt=»16″ />
    <CmdGroup Name=»ReadWordStatus» Active=»true» Signal=»104″ Cmd=»04″ Par=»14″ Data=»FF» inCnt=»16″ />
    </CmdGroups>
    ———————
    Обратил внимание на незакрытые теги.

Просмотр 15 сообщений - с 256 по 270 (из 286 всего)