Множественная команда

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Автор
    Записи
  • #7308
    skoda_rapid2017
    Участник

    Здравствуйте! Есть вопрос по отправке команд управления на устройство через Web. Нужно отправить два значения 1 и 2. Значение 1 мы отправляем на первый регистр, а значение 2 — на 2 регистр. Пробовал отправить через коммуникатор бинарную команду
    16-ричные данные 00020001, команда прошла успешна, далее в администраторе использовал формулу CmdData*00020001, и при перезапуске сервер ругался:
    Ошибка при компилировании исходного кода формул:
    Строка 537, колонка 101: error CS0019: Оператор «*» не может применяться к операндам типа «byte[]» и «int»
    Для ознакомления с исходным кодом см. файл C:\SCADA\ScadaServer\Log\CalcEngine.cs
    Попробовал перевести значение 20001 в 10-ую систему и использовал следующую формулу Cmd*131073 и сервер снова ругался: Ошибка при компилировании исходного кода формул:
    Строка 537, колонка 101: error CS0029: Неявное преобразование типа «double» в «byte[]» невозможно
    Для ознакомления с исходным кодом см. файл C:\SCADA\ScadaServer\Log\CalcEngine.cs
    2017-09-18 13:02:32 <WS1980><система><ERR> Нормальная работа программы невозможна.

    Подскажите, пожалуйста, какую формулу использовать в моем случае?

    #7309
    manjey73
    Участник

    00020001 такэто 16-ричные данные, а не 10-чные.
    Преобразуйте свое в 10-ный вид и на него умножайте. На 8193

    • Ответ изменён 8 лет, 11 месяцев назад пользователем manjey73.
    #7311
    Mikhail
    Модератор

    CmdData — это массив элементов типа byte. Пока не ясно, что именно Вы хотите преобразовать.

    #7318
    skoda_rapid2017
    Участник

    Только не 8193, а 131073.
    Вот такие настройки у меня в Администраторе

    Тип команды: Бинарная
    Значение команды: Выполнить
    Формула:Cmd*131073

    И после перезапуска сервера следующая Ошибка при компилировании исходного кода формул:
    Строка 537, колонка 101: error CS0029: Неявное преобразование типа «double» в «byte[]» невозможно
    Для ознакомления с исходным кодом см. файл C:\SCADA\ScadaServer\Log\CalcEngine.cs
    2017-09-18 13:02:32 <WS1980><система><ERR> Нормальная работа программы невозможна.

    Вот посылка, которую я отправил через коммуникатор:
    Отправка (13): 01 10 25 00 00 02 04 00 02 00 01 35 3E
    Мне нужно отправить такую же посылку через Скада-Веб.

    • Ответ изменён 8 лет, 11 месяцев назад пользователем skoda_rapid2017.
    #7320
    skoda_rapid2017
    Участник

    Но чтобы отправить посылку, нужно правильную формулу использовать в Администраторе. А это вопрос для меня?

    • Ответ изменён 8 лет, 11 месяцев назад пользователем skoda_rapid2017.
    #7323
    Mikhail
    Модератор

    В веб-приложении нужно, чтобы оператор вводил некоторое значение, выбирал из нескольких готовых значений или просто нажимал кнопку?
    Значение, которое ввел оператор в веб, должно как-то преобразовываться? Если да, то как именно?

    #7331
    skoda_rapid2017
    Участник

    Мне нужно, чтобы оператор не вводил значение в веб, а сразу отправил команду выполнить

    • Ответ изменён 8 лет, 11 месяцев назад пользователем skoda_rapid2017.
    #7333
    skoda_rapid2017
    Участник

    Когда оператор отправляет команду через веб(он не вводит значение), то на устройство должно идти такое сообщение:
    Отправка (13): 01 10 25 00 00 02 04 00 02 00 01 35 3E
    Надеюсь понятно так.

    #7334
    skoda_rapid2017
    Участник

    Из сообщения видно, что это отправка множественной команды из двух регистров, на первый регистр записываем значение 1, а на второй регистр значение 2. Вот как это реализовать в Администраторе?

    • Ответ изменён 8 лет, 11 месяцев назад пользователем skoda_rapid2017.
    #7343
    skoda_rapid2017
    Участник

    Если еще вопрос непонятен мой? может еще информация нужна?

    #7348
    manjey73
    Участник

    попробуйте добиться правильной команды отправки используя Cmd*значение ?
    Чтобы отправка была стандартной командой. 2 регистра для стандартной команды это будет Float

    Либо как-то еще преобразовать формулой…

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

    Два варианта:
    1. Использовать стандартную команду, которая отправляет значение типа double. Для канала управления выберите значение команды «Выполнить», а в формуле должно быть число double, примерно так: BitConverter.ToDouble(new byte[] { 0x00, 0x00, 0x01 и так 8 байт})

    Вам Cmd в формуле вообще не нужно, потому что Вы отправляете константу всё время.

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

    Для быстрого решения вопросов рекомендую подписаться на Расширенную поддержку.

    #7359
    skoda_rapid2017
    Участник

    Спасибо, попробую по варианту .

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Для ответа в этой теме необходимо авторизоваться.