PDA

Просмотр полной версии : Управление модулем МДВВ



light_finder
20.02.2009, 12:24
Уважаемые господа, доброе время суток!

Помогите пожалуйста разобраться с модулем МДВВ. Пока хотя бы на самом примитивном уровне - например, как считать значение с определенного входа и в зависимости от считанного значения выставить соответствующее значение определенного выхода?

И маленький вопросик еще..ваш конфигуратор под UNIX работает или рассчитан только на Windows?

Николаев Андрей
20.02.2009, 12:33
Прибор не может сам управлять своим выходом - это просто модуль ввода вывода.
Управлять может только контроллер или SCADA.
Из конфигуратора можно только опросить состояние входов и управлять выходами.
заточен конфигуратор под Видоуз.

light_finder
20.02.2009, 12:42
Прибор не может сам управлять своим выходом - это просто модуль ввода вывода.
Управлять может только контроллер или SCADA.

Ага..значит для управления выходами модуля надо либо купить контроллер, либо поставить на машину SCADA-систему, так?


Из конфигуратора можно только опросить состояние входов и управлять выходами.
заточен конфигуратор под Видоуз.
Вот тут мне немного не понятно..вот Вы написали, что из конфигуратора можно опросить входы и управлять выходами..то есть вот я значит смогу при помощи конфигуратора сделать вот то, что я писал в первом посте - опросить вход и в зависимости от его значения установить значение выхода? Или под понятием "управлять выходами" подразумевается что-то иное, нежели просто задание значения этих самых выходов?

Николаев Андрей
20.02.2009, 12:52
Совершенно верно Вам нужна SCADA (или своя программа) или контроллер.

Логики в конфигураторе Вы не сделаете. Просто можете нажать кнопку - включить выход 1 он включится. Выключить выход1 и он выключится.
ПРИБОР И ПРОГРАММА НЕ ИМЕЮТ И НЕ РЕАЛИЗУЮТ ЛОГИКИ УПРАВЛЕНИЯ.

light_finder
20.02.2009, 13:00
Благодарю! Понемногу начинает проясняться ситуация) А вот для UNIX'a существует такая SCADA-система?
И вот насчет своей программы - какие к ней предъявляются требования в плане языка, да и наверное какие-то библиотеки ведь потребуются для написания программы управления модулем?

Николаев Андрей
20.02.2009, 13:27
Программу Вы пишете сами. По этому Вам и карты в руки.
А описание протоколов обмена выложено на сайте.

light_finder
20.02.2009, 13:45
Описание протокола "ОВЕН" я нашел, скачал и просмотрел. Но все же для меня не совсем ясным остался момент, касающийся сопряжения кода программы, написанного мной и самого прибора. В описании протокола есть команды, служащие для чтения и задания параметров прибора, примеры посылок. Но как организовать связь между программой и прибором, я честно говоря, не очень понимаю. Как вот сделать так, чтобы программа сама посылала в сеть запросы на чтение или установку параметров?
---------------------------------------------------------------------------------------------------------------------------------
Заранее прошу извинить за, скорее всего, глупые вопросы. Просто впервые сталкиваюсь с такой ситуацией и есть пока что довольно много не совсем понятных вещей. Буду Вам очень признателен, если Вы уделите некотурую часть своего времени на объяснения и разъяснения.

Николаев Андрей
20.02.2009, 14:19
Физически вы связываете прибор с ПК (здесь надеюсь все понятно).
А дальше как раз и пишете программу, которая будет посылать в сеть запросы нужного вида (описанного в протоколе), ну и уметь распознать полученные ответы. В этом самоцель создания программы.

light_finder
20.02.2009, 14:29
Про физическую связь вроде понятно - я беру переходничок с 485 на 232 и подключаю 232 к com-порту компьютера, а 485 к прибору. Надеюсь, тут я не ошибся)

Написанная программа должна работать с com-портом, посылая/считывая пакеты определенного формата в/из него, и интерпретировать полученные пакеты должным образом?

Но это один из методов управления прибором. Еще можно управлять им с помощью OPM или другой SCADA-системы либо же использовать контроллер ОВЕН ПЛК. Все верно?)

Николаев Андрей
20.02.2009, 14:57
Да, все совершенно верно.

light_finder
15.03.2009, 14:03
При работе с модулем появились еще некоторые вопросы, вот, например, по поводу чтения состояний входов. При работе по протоколу 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>

Скажите пожалуйста, правильно ли я понял принцип формирования полей?

SKiT
17.03.2009, 15:18
Я немного туплю, но на стандартный запрос

[addr]+[chksum]+[cr]

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

>0FFF40

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

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

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

light_finder
17.03.2009, 15:27
Я немного туплю, но на стандартный запрос

[addr]+[chksum]+[cr]


Вы забыли символ "@" перед полем адреса



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

>0FFF40

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

Не обязательно с 16ю) Может быть и 12, главное, что "лишние" разряды идут первыми. И Вы опять забыли тут маленькую деталь. В конце ответной посылки стоит возврат каретки.


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

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

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

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

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

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

Нельзя такого делать в rs485. Нет там контроля над за колизиями.

light_finder
18.03.2009, 17:32
Нет там контроля над за колизиями.
А можете пояснить, что Вы подразумеваете под понятием коллизии применительно к сетям? Коллизия это, насколько я понимаю, ситуация, когда у двух разных объектов совпадают какие-либо уникальные характеристики, вследствие чего такие объекты невозможно идентифицировать. В сети такой характеристикой, по всей видимости, является сетевой адрес устройства. Не совсем понятно, какое отношение имеют коллизии к автоматическому контролю модулем состояний своих входов.

Kirill
19.03.2009, 12:49
А можете пояснить, что Вы подразумеваете под понятием коллизии применительно к сетям? Коллизия это, насколько я понимаю, ситуация, когда у двух разных объектов совпадают какие-либо уникальные характеристики, вследствие чего такие объекты невозможно идентифицировать. В сети такой характеристикой, по всей видимости, является сетевой адрес устройства. Не совсем понятно, какое отношение имеют коллизии к автоматическому контролю модулем состояний своих входов.

В сети одновременно может присутствовать только один сигнал (одна посылка). Если устройств, инициализирующих опрос, более одного, то шлют они не сверяясь друг с другом, возможно одновременно. В итоге посылку не получает никто.

SKiT
19.03.2009, 13:06
Погуглите CSMA/CD

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

light_finder
19.03.2009, 14:10
В сети одновременно может присутствовать только один сигнал (одна посылка). Если устройств, инициализирующих опрос, более одного, то шлют они не сверяясь друг с другом, возможно одновременно. В итоге посылку не получает никто.
Это понятно, но коллизий в случае автоматической посылки пакета не возникает. Вот представим следующую ситуацию: в сети есть пара модулей и ЭВМ. Мастер пассивен. Он просто слушает канал. При изменении определенного входа одного из модулей, модуль посылает в сеть, например, новое состояние входов (можно просто какой-нибудь пакет заранее определенного формата). Мастер этот пакет читает, распознает и выполняет действия, которые требуется выполнить в случае изменения именно вот того самого определенного входа. В этом случае никаких коллизий нету. Они могут возникнуть в случае мгновенного двойного переключения входа модуля, если реакцией мастера на изменение входа является посылка кому-то какого-то пакета. В таком случае получится, что мастер считает первое изменение входа, пошлет пакет в сеть, но в тот же самый момент произойдет второе переключение того же входа и модуль пошлет в сеть сообщение об этом. В итоге в сети получим два пакета. Но мгновенно вход переключится в реальных условиях, по-моему, не может, поэтому я все же не понимаю, как могут возникнуть коллизии.

light_finder
19.03.2009, 15:02
Ребят, еще вот такой вопрос у меня возник: какова максимальная частота переключения выходов модуля МДВВ?

Ельцов Андрей
19.03.2009, 22:35
Ребят, еще вот такой вопрос у меня возник: какова максимальная частота переключения выходов модуля МДВВ?

У реле время срабатывания мы регламентируем 200мс. Из этого и считайте. 2,5 герца. На практике может получиться и быстрее, но тут мы уже не даем никаких гарантий...