Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Управление модулем МДВВ

  1. #11

    По умолчанию

    При работе с модулем появились еще некоторые вопросы, вот, например, по поводу чтения состояний входов. При работе по протоколу DCON на запрос от мастера, модуль шлет такой пакет: >(данные)(контрольная сумма)CR. Поля (данные) и (контрольная сумма) имеют размер два байта. Насколько я понимаю принцип формирования этих полей следующий:

    Поле (данные)

    Модуль формирует 16 бит, из которых первые 4 бита равны 0, а биты 11 - 0 соответствуют состояниям выходов 12 - 1. Далее сформированные 16 бит делятся на 2 байта, каждый из которых представлен в двоичном виде. В сеть, в поле (данные), посылаются два символа, с ASCII кодами, равными десятичным эквивалентам двоичных значений этих двух байтов.

    Чтоб было понятно, что я имею ввиду, приведу пример:
    <hr>Пусть состояние входов модуля таково: 1010 1010 1010 (замкнуты входы 1,3,5,7,9,11, входы 2,4,6,8,10,12 разомкнуты).
    Модуль формирует 16 бит: 0000 1010 1010 1010. Поле (данные) будет состоять из двух символов: первый с кодом 10 - символ "◙", второй с кодом 160 - символ "а" (кириллицей).
    <hr>

    Поле (контрольная сумма)

    Модуль складывает ASCII код символа ">" с ASCII кодами символов из поля (данные), то есть рассчитывает сумму трех десятичных чисел. Далее берется остаток от деления полученной суммы на 256, этот остаток переводится в шестнадцатиричную систему и выводится в поле (контрольная сумма).

    Пример:
    <hr>Состояния входов модуля МДВВ такое же, как в вышеприведенном примере. Модуль формирует контрольную сумму следующим образом:
    Контрольная сумма = 62 (код ">") + 10 (код "◙") + 160 (код кириллической "a") = 232 = 0xE8
    Поле (контрольная сумма) будет содержать символы "E" и "8"
    <hr>

    Скажите пожалуйста, правильно ли я понял принцип формирования полей?
    Последний раз редактировалось light_finder; 15.03.2009 в 16:38.

  2. #12

    По умолчанию

    Я немного туплю, но на стандартный запрос

    [addr]+[chksum]+[cr]

    от свеженького прибора, который просто лежит на столе, придёт ответ:

    >0FFF40

    Из этого символ ">" просто технический. 0FFF - поле данных. 40 - контрольная сумма. Первые два байта "0F" не несут никокой нагрузки (точнее они, вероятно, для систем с 16 входами?), а вот третий и четвёртый дают нам состояния входов 1111 1111.

    Т.е. ответ ">0FF8[+checksum]" несет данные "F8" - 1111 1000 - замкнуты три первых входа.

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

  3. #13

    По умолчанию

    Цитата Сообщение от SKiT Посмотреть сообщение
    Я немного туплю, но на стандартный запрос

    [addr]+[chksum]+[cr]
    Вы забыли символ "@" перед полем адреса

    Цитата Сообщение от SKiT Посмотреть сообщение
    от свеженького прибора, который просто лежит на столе, придёт ответ:

    >0FFF40

    Из этого символ ">" просто технический. 0FFF - поле данных. 40 - контрольная сумма. Первые два байта "0F" не несут никокой нагрузки (точнее они, вероятно, для систем с 16 входами?), а вот третий и четвёртый дают нам состояния входов 1111 1111. Т.е. ответ ">0FF8[+checksum]" несет данные "F8" - 1111 1000 - замкнуты три первых входа.
    Не обязательно с 16ю) Может быть и 12, главное, что "лишние" разряды идут первыми. И Вы опять забыли тут маленькую деталь. В конце ответной посылки стоит возврат каретки.
    Цитата Сообщение от SKiT Посмотреть сообщение
    Формирование контрольной суммы верно Главное не забыть про то, что в поле контрольная сумма пишется только остаток от деления на сто.
    По моим понятиям, берется остаток от деления на 256, а не на 100

  4. #14

    По умолчанию

    Да, [CR] я потом удаляю. Поэтому и забыл.

    Ну, я имел в виду, что берутся сотые разряды. =) В общем мы поняли друг-друга

  5. #15

    По умолчанию

    Еще вопрос по сабжу, можно ли настроить МДВВ на обработку прерываний, то есть, чтобы модуль автоматически посылал в сеть пакет при приходе сигнала на какой-либо из его входов. Мне требуется мгновенная реакция на изменения входов, поэтому вариант с опросом входов в бесконечном цикле неприемлим. Пользуюсь протоколом DCON, не юзаю ни OPC, ни каких бы то ни было других SCADA систем. Модулем управляет программа на С++.

  6. #16

    По умолчанию

    нет нельзя. на данный момент модули МВА, МВУ, МДВВ могут работать только Слейвом т.е ответ по запросу.

  7. #17
    Ельцов Андрей
    Гость

    По умолчанию

    Цитата Сообщение от light_finder Посмотреть сообщение
    Еще вопрос по сабжу, можно ли настроить МДВВ на обработку прерываний, то есть, чтобы модуль автоматически посылал в сеть пакет при приходе сигнала на какой-либо из его входов. Мне требуется мгновенная реакция на изменения входов, поэтому вариант с опросом входов в бесконечном цикле неприемлим. Пользуюсь протоколом DCON, не юзаю ни OPC, ни каких бы то ни было других SCADA систем. Модулем управляет программа на С++.
    Нельзя такого делать в rs485. Нет там контроля над за колизиями.

  8. #18

    По умолчанию

    Цитата Сообщение от Ельцов Андрей Посмотреть сообщение
    Нет там контроля над за колизиями.
    А можете пояснить, что Вы подразумеваете под понятием коллизии применительно к сетям? Коллизия это, насколько я понимаю, ситуация, когда у двух разных объектов совпадают какие-либо уникальные характеристики, вследствие чего такие объекты невозможно идентифицировать. В сети такой характеристикой, по всей видимости, является сетевой адрес устройства. Не совсем понятно, какое отношение имеют коллизии к автоматическому контролю модулем состояний своих входов.

  9. #19

    По умолчанию

    Цитата Сообщение от light_finder Посмотреть сообщение
    А можете пояснить, что Вы подразумеваете под понятием коллизии применительно к сетям? Коллизия это, насколько я понимаю, ситуация, когда у двух разных объектов совпадают какие-либо уникальные характеристики, вследствие чего такие объекты невозможно идентифицировать. В сети такой характеристикой, по всей видимости, является сетевой адрес устройства. Не совсем понятно, какое отношение имеют коллизии к автоматическому контролю модулем состояний своих входов.
    В сети одновременно может присутствовать только один сигнал (одна посылка). Если устройств, инициализирующих опрос, более одного, то шлют они не сверяясь друг с другом, возможно одновременно. В итоге посылку не получает никто.

  10. #20

    По умолчанию

    Погуглите CSMA/CD

    А если в 485 будет несколько мастеров, то получится полная неразбериха.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •