PDA

Просмотр полной версии : Копирование элемента ModBus из одной программы в другую



Туман
31.07.2013, 21:16
День добрый!

Есть программа, для ПЛК 110-60, используются порты RS-485. 1-ый для ИП-320 (Панель - Мастер) 2-ой для опроса МВх110. Контроллер уже установлен на объекте, в наличии есть ПЛК-154 и панелька. Как перенести конфигурацию Modbus из проекта для 110-60 в проект для 154? Или как сменить целевую платформу в проекте? При попытке смены в "Конфигурация ПЛК" остается строчка PLC110_60 с которой ничего нельзя сделать. Регистров много, не охота все руками писать для теста.

Sergey666
31.07.2013, 22:13
Да никак!!!
Вот для этого и испьзуется АТ адресация в разделе глобальных переменных , а не "обзывание" в конфигураторе , любимое многими.

Валенок
31.07.2013, 22:37
Для данного случая - да, никак.
А для облегчения себе работы и чур-чур от AT некоторые заранее натягивают указатель структуры или фб на нужную область в конфигурации.И править меньше - а значит и ляпов, и тестить на любом плк, что под рукой, можно. А WinNT - вообще всегда есть

Туман
31.07.2013, 22:57
Понятно, спасибо.

Логвиненко Андрей
01.08.2013, 09:42
Копирование можно сделать через Экспорт-импорт конфигурации:
- создать экспортнный файл конфигурации для ПЛК110,
- вставить в проект стандартную конфигурацию ПЛК154,
- создать экспортнный файл конфигурации для ПЛК154,
- открыть оба файла в текстовом редакторе,
- скопировать модуль модбас из конфигурации ПЛК110 в ПЛК154,
- импортировать новую конфигурацию в проект ПЛК154,
- во вкладке "дополнения" выбрать "Вычислять адреса".

Igor.m
07.11.2013, 08:43
Вот для этого и испьзуется АТ адресация в разделе глобальных переменных , а не "обзывание" в конфигураторе , любимое многими.

Можно про это по подробнее или где посмотреть чтобы понять?

Igor.m
07.11.2013, 08:54
пробовал по методу, предложенному выше Логвиненко Андреем, но "застрял" на пункте - скопировать модуль модбас из конфигурации ПЛК110 в ПЛК154, не ясно какой текст конкретно заменить...

capzap
07.11.2013, 08:59
Можно про это по подробнее или где посмотреть чтобы понять?

Даже не пытайтесь увлечся АТ-адресацией,лучше как предлагает Валкнок через указатель

Igor.m
07.11.2013, 09:07
Даже не пытайтесь увлечся АТ-адресацией,лучше как предлагает Валкнок через указатель
Почему? Я сути АТ адресации не понимаю и то что предложил Валенок тоже не совсем ясно, точнее совсем, поэтому и прошу какой нибудь инфы, а после наверное сам пойму

capzap
07.11.2013, 10:33
Мобильный инет подвел,второй раз напишу кратко:
При смене на др.модель плк придется и кконфиг заполнятьи ат-адреса править
С указателями всё просто, создали структуру,вычислили её размер в словах,в конфиге создали не биты,слова и реалы,а только вычисленое количество слов,"обозвали" первое слово в списке и в проекте создаете указатель на структуру на это имя и все

Igor.m
07.11.2013, 11:04
спасибо за пояснение, что то стало понятно... с АТ адресами прояснилось, а есть к-н простой пример с указателями, так сказать для наглядности?

capzap
07.11.2013, 13:03
ну вот как то так

Igor.m
07.11.2013, 13:39
при загрузке проекта в панель Weintek через USB - накопитель на экране высвечивается Project incorrect! Что это за ошибка? компилируется проект нормально..

Igor.m
08.11.2013, 06:12
А где посмотреть для какой прошивки проект? В панели версию я посмотрел, устройство в настройках (EasyBuilder) какое нужно указал. Изначально файл был с расширением MTP, потом я открыл его в EasyBuilderPro, сохранил как проект EBPro, где еще настройки нужно изменить?

Igor.m
08.11.2013, 07:55
Вам придется теперь искать EasyBuilder Bis чтобы устранить проблемы
Для чего нужен EasyBuilder Bis?

p.s. Создал простой проект( в EasyBuilder Pro) как в руководстве написано, все равно пишет Project incorrect!

Igor.m
08.11.2013, 08:26
Если серьезно то вот такая -MT6070iE

Igor.m
11.11.2013, 12:17
Объясните что означает 0x, 1x, 2x, 3x ...? почитал руководство по EBPro но так и не понял. Какому адресу в CoDeSys это соответствует

YuriBel
11.11.2013, 16:08
Для того, чтобы понимать, что чему соответствует, прочитайте внимательно про протокол Modbus, хотя бы на Википедии, про конфигурирование областей ввода-вывода, включая выравнивание (документ Овена PLC_configuration... , который можно найти на диске с ПЛК или на сайте), а также например вот эту тему: http://www.owen.ru/forum/showthread.php?t=11669. Уверяю, очень многое прояснится

Igor.m
12.11.2013, 09:11
Спасибо YuriBel за информацию, действительно многое прояснилось, а можете подсказать связи - подойдет ли кабель КС1 для соединения по Debug232 с панелью weintek? Какой лучше использовать интерфейс? Ethernet отсутствует...

YuriBel
12.11.2013, 10:55
Кабель КС 1 имеет перемычку, наличие которой определяется контроллером в процессе инициализации (после включения питания) . Обнаружив эту перемычку, контроллер входит в режим связи с КДС. Если включить контроллер без подключенного кабеля, а кабель включить потом, то можно через него передавать данные на панель. Одним словом, для экспериментов можно, для работы контроллера на объекте- нельзя. Для этих целей существует кабель КС2. И еще, не помню точно, у каких контроллеров, но порт Debug имеет ограничения по работе в modbus. внимательно читайте РЭ на свой контроллер.

Igor.m
12.11.2013, 11:49
подскажите еще по связи ПЛК+Weintek в режиме Онлайн симуляции пишет ошибку PLC no response, как с этим бороться? Какие параметры связи выставлять в EBPro?

YuriBel
12.11.2013, 12:55
Понятия не имею. Ни разу не пользовался Онлайн-симуляцией. кроме того, у меня EB8000. Ну и хотя бы напишите, что к чему и чем подключаете.

Igor.m
12.11.2013, 13:19
В EBPro есть режим онлайн/оффлайн симуляции, так вот в режиме «On-line Simulation» проект исполняется на компьютере, необходим ПК, ПЛК и их корректное соединение (панель не требуется), а вот какие именно настройки сети и где настраивать не пойму, в руководстве тоже не нашел для этого случая ничего, может кто знает?

capzap
12.11.2013, 14:09
В EBPro есть режим онлайн/оффлайн симуляции, так вот в режиме «On-line Simulation» проект исполняется на компьютере, необходим ПК, ПЛК и их корректное соединение (панель не требуется), а вот какие именно настройки сети и где настраивать не пойму, в руководстве тоже не нашел для этого случая ничего, может кто знает?

Ликбез по не овеновскому оборудованию, онлайн как сами сказали это пк выступающий в роли панели, если проект у Вас где панель мастер, то выставляете адрес плк, если панель слейв,то в контроллере прописываете адрес пк

ЗЫ на сайте производителя найдете документацию на английском,зато свежую, а на русском только гуглить придется и она будет для версии без ПРО, но разницы ни какой. Там про настройки написано и в начале в целом, и конкретно по протоколам в конце

Спорягин Кирилл
10.08.2015, 15:01
Capzap, хотел бы вернуться в этой теме к примеру plc160pointer.pro.
Скачал, посмотрел внимательно. Есть вопросы.
1. Я так понимая, что структура SLAVE не случайно имеет такой вид:
TYPE SLAVE :
STRUCT
uno : WORD;
duo : WORD;
tre : REAL;
qua : BYTE;
{bitaccess bUno 64 'x0'}
{bitaccess bDuo 65 'x1'}
{bitaccess bTre 66 'x2'}
{bitaccess bQua 67 'x3'}
{bitaccess bVis 68 'x4'}
{bitaccess bSei 69 'x5'}
{bitaccess bSet 70 'x6'}
{bitaccess bOtt 71 'x7'}
END_STRUCT
END_TYPE
Видимо, имеется ввиду, что сначала нужно расположить все word переменные, затем, начиная с байта кратного четырем все real переменные, а затему уже байтовые и битовые. Правильно я понимаю?
2. Пройдет ли такой же прием с модулем Modbus(Master)?
В модулей Modbu(Master) у каждого Universal Modbus device есть поле команда типа byte. Его нужно учитывать в структуре Slave или нет?

petera
10.08.2015, 15:20
Пользуйтесь утилитой, которую предложил Yegor http://www.owen.ru/forum/showthread.php?t=18269
https://www.youtube.com/watch?v=jzRa9zfXMYg
И копируйте любые модули, хоть в мастере, хоть в слейве

Спорягин Кирилл
10.08.2015, 16:06
Спасибо, полезная утилита.
Но все же метод с указателем на слейв она не заменит.

Я собираюсь использовать это для проведения отладки на WinNT (или реальным контроллером) с использованием имитатора объекта.
Коротко об идее.
В глобальных переменных создаются указатели на модули УСО. Если мы работаем с реальным объектом, т.е. с реальными модулями, то эти указатели инициализируются ссылками на соответствующие модули в конфигурации. Если мы работаем с WinNT, то в глобальных данных создаются экземпляры модулей. И указатели инициализируются ссылками на эти экземпляры.
Та часть кода, которая отвечает за имитацию объекта исполняется в отдельной программе и свои выходы записывает в экземпляры модулей.
Таким образом код основной программы целиком независим от кода имитатора. А переход от проекта с имитатором к проекту без имитатора осуществляется восстановлением конфигурации путем ее импорта из файла, ранее сохраненного, и комментированием тех объявлений, что создают экземпляры модулей в глобальных данных. Плюс удаление программы имитатора (заранее экспортировав ее, для возможности восстановления). 3 простых действия.

Спорягин Кирилл
10.08.2015, 16:13
Уже проверил. Байт Command располагается в области Q, а входы от модулей в области I. Видимо, его учитывать не нужно.

Спорягин Кирилл
10.08.2015, 17:09
Ошибка при просмотре массива из 32 битовых переменных ссылающегося на переменную DWORD в конфигураторе.
Если я переменной DI32 объявленной в конфигураторе приваиваю значение отличное от 0 или 1, то мой указатель, настроенный на массив из 32 битов выдает ошибку.
См. прикрепленную картинку и проект.

capzap
10.08.2015, 18:12
проект не смотрел, а по картинкам видно, что Вы указатель на массив сделали, которого кстати не существует, потому что в конфигурации у Вас всего одно двойное слово

Спорягин Кирилл
10.08.2015, 18:17
Capzap, там еще в посте 29 у меня вопрос был по Вашему другому посту.

Спорягин Кирилл
10.08.2015, 18:19
Так я хочу доступ к этому двойному слову получить побитно. Но как я начинаю понимать проблема в том, что он выделяет по байту на каждый бит.

capzap
10.08.2015, 18:39
сделайте указатель на дв.слово, а затем подойдет такая конструкция pDI32^.0 означает состояние нулевого разряда, массив из булей не пройдет

Спорягин Кирилл
10.08.2015, 18:43
А что по поводу поста 29?

capzap
10.08.2015, 18:57
Capzap, хотел бы вернуться в этой теме к примеру plc160pointer.pro.
Скачал, посмотрел внимательно. Есть вопросы.
1. Я так понимая, что структура SLAVE не случайно имеет такой вид:
TYPE SLAVE :
STRUCT
uno : WORD;
duo : WORD;
tre : REAL;
qua : BYTE;
{bitaccess bUno 64 'x0'}
{bitaccess bDuo 65 'x1'}
{bitaccess bTre 66 'x2'}
{bitaccess bQua 67 'x3'}
{bitaccess bVis 68 'x4'}
{bitaccess bSei 69 'x5'}
{bitaccess bSet 70 'x6'}
{bitaccess bOtt 71 'x7'}
END_STRUCT
END_TYPE
Видимо, имеется ввиду, что сначала нужно расположить все word переменные, затем, начиная с байта кратного четырем все real переменные, а затему уже байтовые и битовые. Правильно я понимаю?
2. Пройдет ли такой же прием с модулем Modbus(Master)?
В модулей Modbu(Master) у каждого Universal Modbus device есть поле команда типа byte. Его нужно учитывать в структуре Slave или нет?

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