Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Twido Master
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Dinf
Здравствуйте, уважаемые форумчане!

Я впервые на практике сталкиваюсь с реализацией мастера на твидо, но толмуты изучил.
В результате получается вот что:

Задачи: твидо (мастер порт 2 rs-485 Modbus RTU) должен опрашивать устройство-slave(трм138 ОВЕН). Опрашивать состояние выходных логических устройств и состояние входных значений измерителя.
В описание на трм написано что необходимые мне ф-ции 01h(остояние выходных логических устройств) и 04h (состояние входных значений измерителя).

В итоге родилась программка, как на картинке.

И получилось что при выполнении ф-ции 01 твидо опрашивает и получает ответ от трм (корректный ответ), а при выполнении 04h - глухо!
Я уже и со смещением и с регистрами, уже что только непробовал....
т.к. выполнение ф-ци 01 происходит корректно, то отсюда делаю вывод, что неправильно заполняю таблицу в твидо, но где понять не могу.


ОЧЕНЬ НАДЕЮСЬ, что вы меня ткнете, где и что я промухал, потому что голова кипит, а результата нет, а результат как всегда нужен вчера)!
san
Второй запрос никогда не запустится, так как операторы у Вас вызываются при обработке предыдущего сообщения. Раньше в программе стоит вызов запроса на получения битов, позже на запрос регистров.
Один из вариантов решения проблемы сделать автомат состояний с каруселью последовательного вызова, типа такого:
- если у нас 0-й шаг и обработана предыдущая функция вызова - сделать шаг=1 и вызвать запрос на получение битов
- если у нас 1-й шаг и обработана пред. функц. вызова - сделать шаг=0 и вызвать запрос на получения регистров
Если устройств несколько то и карусель будет содержать не 2 шага а столько, сколько нужно запросов
Может я кое-что пропустил, не серчайте - ночь всё-таки ... :-)
Dinf
Цитата(san @ 18.5.2013, 0:02) *
Второй запрос никогда не запустится, так как операторы у Вас вызываются при обработке предыдущего сообщения. Раньше в программе стоит вызов запроса на получения битов, позже на запрос регистров.
Один из вариантов решения проблемы сделать автомат состояний с каруселью последовательного вызова, типа такого:
- если у нас 0-й шаг и обработана предыдущая функция вызова - сделать шаг=1 и вызвать запрос на получение битов
- если у нас 1-й шаг и обработана пред. функц. вызова - сделать шаг=0 и вызвать запрос на получения регистров
Если устройств несколько то и карусель будет содержать не 2 шага а столько, сколько нужно запросов
Может я кое-что пропустил, не серчайте - ночь всё-таки ... :-)


Интересная ситуация, я думал вызов таких команд регулируется в твидо.

Если я Вас правильно понял, то получается так?
san
А что поменялось то? Где же карусель?
Конечно вызов таких команд регулируется Твидо. То есть, пока не выполнится один запрос - другой он не сделает (вроде). Но в Вашем случае, как только вернется ответ, Твидо запустит первый (врхний) Operate. Как только он запустится MSG2.D опять скинется.
Я Вас возможно удивлю, но Твидо дает возможность обмена даже если он Slave.
Dinf
Цитата(san @ 18.5.2013, 9:40) *
А что поменялось то? Где же карусель?
Конечно вызов таких команд регулируется Твидо. То есть, пока не выполнится один запрос - другой он не сделает (вроде). Но в Вашем случае, как только вернется ответ, Твидо запустит первый (врхний) Operate. Как только он запустится MSG2.D опять скинется.


Прошу прощения за смуту, я не тот файл по запарке загрузил....



Цитата(san @ 18.5.2013, 9:40) *
Я Вас возможно удивлю, но Твидо дает возможность обмена даже если он Slave.


Действительно удивили. Т.е. если он по настроенному порту Slave может выполнять EXCH? И воспринимать ответные сообщения?

Я так подозреваю, что такое реально только в том случае, когда реальный мастер не подключен к сети.
И при формировании запроса твидо в slave выдает сообщение в сеть. Другой slave (ему в принципе все-равно кто отправил запрос) отправляет в сеть ответное сообщение, а твидо его ловит и воспринимает.


%S1 и %S0 - системные биты активные при "холодном" и "теплом" старте.
%S9 - отключение выходов.
Т.е. при первом пуске все выходы будут отключены.
san
Цитата(Dinf @ 18.5.2013, 9:49) *
Действительно удивили. Т.е. если он по настроенному порту Slave может выполнять EXCH? И воспринимать ответные сообщения?
Я так подозреваю, что такое реально только в том случае, когда реальный мастер не подключен к сети.
И при формировании запроса твидо в slave выдает сообщение в сеть. Другой slave (ему в принципе все-равно кто отправил запрос) отправляет в сеть ответное сообщение, а твидо его ловит и воспринимает.

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

А прога действительно должна быть где-то такая. Надо проверять.
Dinf
Цитата(san @ 18.5.2013, 11:10) *
Я не знаю реальных причин зачем они так сделали. Меня когда-то ввело в ступор, что в Твидософт нельзя вобще выставить режим мастер. Если гипотетически мастер сделает паузу для обмена между слейвами (один из которых временно станет мастером) то можно построить гибридную модель. Но я точно таким извратом не занялся б, слишком много условностей.

А прога действительно должна быть где-то такая. Надо проверять.



СПАСИБО большое, san , Вы опять мне очень помогли!

В понедельник буду пробовать!!
Dinf
Получилось все! Катастрофически времени не хватает, если кому интересно пришлю, пишите на cygikalo@mail.ru rolleyes.gif
san
Проблему как решили, в 2-х словах объясните?
vladun
Коллега San, а не желаете ли "веточку" по шнайдеровскому железу начать ?
Обещаю, что буду постоянным читателем, т.к мне импонирует Ваш стиль изложения науки wink.gif
Ау, модераторы, обратите внимание, если что.. !
san
Цитата(vladun @ 21.5.2013, 12:48) *
Коллега San, а не желаете ли "веточку" по шнайдеровскому железу начать ?
Обещаю, что буду постоянным читателем, т.к мне импонирует Ваш стиль изложения науки wink.gif
Ау, модераторы, обратите внимание, если что.. !

Так есть спец форум http://forum.se-automation.in.ua/index.php . Да и Шнейдеровское железо мне только избирательно знакомо.
Dinf
Цитата(san @ 21.5.2013, 13:27) *
Проблему как решили, в 2-х словах объясните?


Проблема решилась так как Вы и предполагали!

Первый шаг опрос подчиненного устройства функцией 01h,
Второй шаг опрос подчиненного устройства функцией 04h,

Далее если шаг 1 выполнен, то активировать шаг 2.
Далее если шаг 2 выполнен, то активировать шаг 1.

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

При опросе по первому порту необходимы: пин 1 (синий) - это А, пин 2(сине-белые) - это В, пин 5(оранжево-белый) и 7(зелено-белый) - это GND, в противном случает порт 1 работать не будет, твидо будет думать, что у него связь с твидосъют (пин 5 незаземлен), 7 пин зачем к земле еще не разобрался. но в букваре написано что надо заземлять.

Прошу прощенья, если что-то непонятно. При необходимости отвечу на любые вопросы (естественно если буду сам знать rolleyes.gif )

Еще раз СПАСИБО БОЛЬШОЕ san!!!!!!!!!!!!!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.