Вход

Просмотр полной версии : Помогите разобраться с отображением в памяти



YuriBel
23.08.2011, 19:45
Есть:
ПЛК 110-60
МВ 110-8АС (Слейв по RS 485)
ИП 320 (Мастер по RS 232)
Хочется увидеть на панели данные входов МВ
Возможно я что-то не так понял из описаний, возможно, где-то ошибаюсь в подсчете адресов.
В конфигурацию контроллера добавляем модуль Модбас слейв, настраиваем его на связь с панелью.
В модуль Слейв вставляем модуль Мастер, настраиваем на связь с модулем МВ 110.
В этот модуль вставляем Real input и Register input модули, настраиваем им адреса регистров и под Кодесисом видим данные (величину сигнала на входе и метку времени).

Чтобы увидеть на панели эти же данные, организовываем в панели четыре регистра - двойной, с адресом 4х0, в него попадает Last address из подчиненного модуля Мастер, второй -одинарный, с адресом 4х2, в него попадает Last error из подчиненного модуля Мастер, третий- двойной и четвертый - одинарный, с их адресами я и заблудился. По логике вещей (в моем понимании), поскольку регистр для значения входа двойной (real) адрес должен быть 4х4, а одинарный регистр для метки времени (word) должен иметь адрес 4х6. Но панель после вывода двух значений (Last address и Last error) индицирует потерю связи, то есть не находит данных по указанным адресам.
Ну и собственно вопрос - я где-то ошибаюсь в адресации или неправильно понимаю суть отображения подчиненного модуля в памяти? Можно ли в принципе сделать то, что я хочу, именно путем создания вложенного мастера, без промежуточного приравнивания дополнительных переменных в контроллере?

Николаев Андрей
24.08.2011, 08:05
Суть поняли правильно.
Однако рекомендую:
1. Сделать отдельно ModBus Master для опроса МВ110. Опрашивать лучше переменные типа int,Word, Dword (целочисленные). Преобразовывать уже в ПЛК (а для передачи на панель лучше и не преобразовывать).
2. Отдельно создаете ModBus Slave для панели.
В программе переменные переприсваиваете.

Ну в общем то все это можно увидеть в примере ТРМ1 на форуме в разделе ПЛК\Примеры программ и полезности.

YuriBel
24.08.2011, 10:13
Спасибо за ответ.
Путь, который вы предлагаете, простой и понятный.
Мне же хотелось не получить рузультат вообще, а получить результат конкретным способом, который упомянут в документе по конфигурированию ПЛК. Мне хотелось (и хочется) разобраться, как адресуются вложенные модули. Поэтому, если не возражаете, еще раз задам вопрос: где у меня ошибка? (Усли вы говорите, что суть понята правильно, и стало быть данные из вложенного модуля могут быть прочитаны, значит я пытаюсь читать их не там, то есть ошибаюсь с Модбас-адресами).

Terrano1992
24.08.2011, 15:31
Путь, который вы предлагаете, простой и понятный.
Мне же хотелось не получить рузультат вообще, а получить результат конкретным способом, который упомянут в документе по конфигурированию ПЛК.
Без передачи значения из одной переменной в другую все равно не обойдетесь. AFAIK, не удастся один и тот же регистр ввода-вывода на два разных физических интерфейса одновременно привязать.

capzap
24.08.2011, 17:02
много написано, а информативности маловато. Вам нужно показания с МВ только отображать? Если да, то почему сразу не завести их в ИП

YuriBel
24.08.2011, 17:54
А какой информативности не хватает?
Еще раз объясню, что мне не надо решить кокретную задачу и увидеть цифры на ИП320 все равно каким способом. Путем использования вышеприведенных советов это делается легко и не вызывает вопросов.
Мне нужно понять, как на практике пользоваться механизмом, описанным на стр 54 руководства по конфигурированию контроллеров ПЛК 1хх (файл PLC_Configuration_OWEN.pdf с диска). Если верить написанному, то все должно работать с точностью до адресов, по которым нужно опрашивать слейв (контроллер).
Задачка с ИП, контроллером и модулем- абсолютно частная, если вместо ИП будет другой контроллер, а блоков будет пяток и на каждом нужно будет читать 8 значений, то уже понадобится переприсваивать 40 переменных. А судя по стр 54 этого можно не делать, а просто настроить конфигурацию, и контроллер будет выполнять роль шлюза, без дополнительных действий внутри программы (видимо силами исполнительной системы).
Вот собственно это я и хочу понять. Поэтому и спрашиваю.

YuriBel
25.08.2011, 08:14
:) В принципе - можно. Я этим пользуюсь. ;)

Может поделитесь знаниями?
Как это сделать способом, про который я спрашивал?

capzap
25.08.2011, 18:43
А какой информативности не хватает?


Наверное чтоб плк их видел. И работал с данными не отвлекаясь на перекладывание.

А где было сказано, что ПЛК должен с ними работать, я прочитал, что только отобразить на любом пригодном экране визуализации

capzap
26.08.2011, 12:53
Ну и? Может люди не представляют, что ИП может напрямую следить за состоянием модулей ввода/вывода, как МВА и прочее. Взяли приобрели еще и ПЛК, так как есть множество примеров связи контроллера и с панелькой и с модулями, а на прямую почти ни чего нет на форуме, вот вынужденно и делают шлюз, чтоб руководство не считало, что деньги потрачены зря.
И по поводу самого значения шлюза, я это понимаю так, максимальная загрузка контроллера будет заключаться в следущем: брать переменную с мастера присваивать её переменной в слейве, по минимуму, это в слейве будет вставлен мастер. Мне бы самому хотелось бы верить, что в ПЛК висит какая нибудь программа и переменные все же используются

YuriBel
26.08.2011, 16:21
... Может люди не представляют, что ИП может напрямую следить за состоянием модулей ввода/вывода...

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

capzap
26.08.2011, 17:02
... мне интересно знать, как на практике осуществляется (и осуществляется ли) способ, описанный на указанной странице указанного документа ...

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

YuriBel
26.08.2011, 17:11
Информативно. Премного благодарен за приглашение, но я уж как нибудь тут попробую разобраться.

capzap
26.08.2011, 19:36
Хорошо, по Вашему совету прочту все внимательно, и возвращаемся к первому посту. Я, если бы запутался в адресации, добавлял бы в проект панели по одному регистру и проверял бы работоспособность, если показания совпадают добавлял бы следующий, если нет убавлял или прибавлял бы адрес регистра пока не добился бы желаемого

capzap
26.08.2011, 20:59
Суть поняли правильно.
Однако рекомендую:
1. Сделать отдельно ModBus Master для опроса МВ110. Опрашивать лучше переменные типа int,Word, Dword (целочисленные). Преобразовывать уже в ПЛК (а для передачи на панель лучше и не преобразовывать).
2. Отдельно создаете ModBus Slave для панели.
В программе переменные переприсваиваете.

Ну в общем то все это можно увидеть в примере ТРМ1 на форуме в разделе ПЛК\Примеры программ и полезности.


Теперь по второму посту, прислушавшись к советам сделал немного по своему, на скрине результат

capzap
27.08.2011, 10:55
:) по третьему посту
а) модбас слейв встроенный в главный слейв, работает без проблем, единственный минус приборы подключаемые к ПЛК практически ни кто не делает мастерами
б) модбас мастер встроенный в главный слейв, как регистры главного слейва не работает. Судя по фразе:
В этом случае, нет необходимости реализовывать в программе копирование данных из одного протокола в другой (например, Овена (Мастера) в Modbus (Slave)), чтобы затем SCADA могла их считать. В описанном случае SCADA имеет прямой доступ к информации других устройств, которые подключены и идентифицируются как области памяти, к которым можно обращаться, считывать и пр. и если вставить Float после мобас мастера, значение можно опросить с одного и того же адреса, в не зависимости сколько каналов вставленно в подчиненный мастер, а так же по результатам подключения ОВЕН мастер, когда главный модбас перестал отвечать на запросы я предполагаю надо пользоваться широковещательными адресами, в чем не силен, либо обращаться к адресу конечного слейва, что на данный момент у меня тоже пока не получилось

capzap
27.08.2011, 11:37
Что-то в этом есть неправильное.


Метод тыка не при мне появился и думаю не на мне закончится :)
К примеру, сколько байт и регистров занимают два последовательно стоящих Float-PIC, если в документации про них ничего нет

Валенок
27.08.2011, 12:06
Ну могет энто поможет.
Экран маленький - все вставлено в модбас-слейв
Тем хто боится указателей - категорически не смотреть.
Смысл, надеюсь, понятен.
Оффлайн. В онлайне тестить надо.
И куда отвалились input module ? :confused: Аффторы ???


PS
Вот именно поиски ответов привели к modbus.lib :cool:
Не надо никого спрашивать и выяснять.

capzap
27.08.2011, 12:26
По поводу команды ADR кстати, почему и затянул с #18 постом, данная команда показала, что переменные UMD находятся далеко от области переменных расположенных в главном слейве, т.е. они не входят в ту память, которую читают внешние мастера модбаса

capzap
27.08.2011, 12:48
КДС у меня версии 2.3.9.26, я не могу повторить то что показано на скрине, в частности где стоит переменная TUTA, поле не редактируется и к Last Error тоже нет доступа

Валенок
27.08.2011, 19:14
Не поленился. Проверил на железе (см.выше скрин)
Все работает.
Но!
1. input module существуют в другом измерении. Из нашего их невидно.
2. Ломать голову на полученой адресацией - на любителя. Я пас.

Совместить адресные пространства можно. Но ограничено. Транзит только в одну сторону. Иерархически только сверху вниз. Транзит снизу вверх не катит. :confused: На обмен влияет гравитация !!!! :eek: