Просмотр полной версии : Копирование элемента ModBus из одной программы в другую
День добрый!
Есть программа, для ПЛК 110-60, используются порты RS-485. 1-ый для ИП-320 (Панель - Мастер) 2-ой для опроса МВх110. Контроллер уже установлен на объекте, в наличии есть ПЛК-154 и панелька. Как перенести конфигурацию Modbus из проекта для 110-60 в проект для 154? Или как сменить целевую платформу в проекте? При попытке смены в "Конфигурация ПЛК" остается строчка PLC110_60 с которой ничего нельзя сделать. Регистров много, не охота все руками писать для теста.
Sergey666
31.07.2013, 22:13
Да никак!!!
Вот для этого и испьзуется АТ адресация в разделе глобальных переменных , а не "обзывание" в конфигураторе , любимое многими.
Для данного случая - да, никак.
А для облегчения себе работы и чур-чур от AT некоторые заранее натягивают указатель структуры или фб на нужную область в конфигурации.И править меньше - а значит и ляпов, и тестить на любом плк, что под рукой, можно. А WinNT - вообще всегда есть
Логвиненко Андрей
01.08.2013, 09:42
Копирование можно сделать через Экспорт-импорт конфигурации:
- создать экспортнный файл конфигурации для ПЛК110,
- вставить в проект стандартную конфигурацию ПЛК154,
- создать экспортнный файл конфигурации для ПЛК154,
- открыть оба файла в текстовом редакторе,
- скопировать модуль модбас из конфигурации ПЛК110 в ПЛК154,
- импортировать новую конфигурацию в проект ПЛК154,
- во вкладке "дополнения" выбрать "Вычислять адреса".
Вот для этого и испьзуется АТ адресация в разделе глобальных переменных , а не "обзывание" в конфигураторе , любимое многими.
Можно про это по подробнее или где посмотреть чтобы понять?
пробовал по методу, предложенному выше Логвиненко Андреем, но "застрял" на пункте - скопировать модуль модбас из конфигурации ПЛК110 в ПЛК154, не ясно какой текст конкретно заменить...
Можно про это по подробнее или где посмотреть чтобы понять?
Даже не пытайтесь увлечся АТ-адресацией,лучше как предлагает Валкнок через указатель
Даже не пытайтесь увлечся АТ-адресацией,лучше как предлагает Валкнок через указатель
Почему? Я сути АТ адресации не понимаю и то что предложил Валенок тоже не совсем ясно, точнее совсем, поэтому и прошу какой нибудь инфы, а после наверное сам пойму
Мобильный инет подвел,второй раз напишу кратко:
При смене на др.модель плк придется и кконфиг заполнятьи ат-адреса править
С указателями всё просто, создали структуру,вычислили её размер в словах,в конфиге создали не биты,слова и реалы,а только вычисленое количество слов,"обозвали" первое слово в списке и в проекте создаете указатель на структуру на это имя и все
спасибо за пояснение, что то стало понятно... с АТ адресами прояснилось, а есть к-н простой пример с указателями, так сказать для наглядности?
при загрузке проекта в панель Weintek через USB - накопитель на экране высвечивается Project incorrect! Что это за ошибка? компилируется проект нормально..
А где посмотреть для какой прошивки проект? В панели версию я посмотрел, устройство в настройках (EasyBuilder) какое нужно указал. Изначально файл был с расширением MTP, потом я открыл его в EasyBuilderPro, сохранил как проект EBPro, где еще настройки нужно изменить?
Вам придется теперь искать EasyBuilder Bis чтобы устранить проблемы
Для чего нужен EasyBuilder Bis?
p.s. Создал простой проект( в EasyBuilder Pro) как в руководстве написано, все равно пишет Project incorrect!
Если серьезно то вот такая -MT6070iE
Объясните что означает 0x, 1x, 2x, 3x ...? почитал руководство по EBPro но так и не понял. Какому адресу в CoDeSys это соответствует
Для того, чтобы понимать, что чему соответствует, прочитайте внимательно про протокол Modbus, хотя бы на Википедии, про конфигурирование областей ввода-вывода, включая выравнивание (документ Овена PLC_configuration... , который можно найти на диске с ПЛК или на сайте), а также например вот эту тему: http://www.owen.ru/forum/showthread.php?t=11669. Уверяю, очень многое прояснится
Спасибо YuriBel за информацию, действительно многое прояснилось, а можете подсказать связи - подойдет ли кабель КС1 для соединения по Debug232 с панелью weintek? Какой лучше использовать интерфейс? Ethernet отсутствует...
Кабель КС 1 имеет перемычку, наличие которой определяется контроллером в процессе инициализации (после включения питания) . Обнаружив эту перемычку, контроллер входит в режим связи с КДС. Если включить контроллер без подключенного кабеля, а кабель включить потом, то можно через него передавать данные на панель. Одним словом, для экспериментов можно, для работы контроллера на объекте- нельзя. Для этих целей существует кабель КС2. И еще, не помню точно, у каких контроллеров, но порт Debug имеет ограничения по работе в modbus. внимательно читайте РЭ на свой контроллер.
подскажите еще по связи ПЛК+Weintek в режиме Онлайн симуляции пишет ошибку PLC no response, как с этим бороться? Какие параметры связи выставлять в EBPro?
Понятия не имею. Ни разу не пользовался Онлайн-симуляцией. кроме того, у меня EB8000. Ну и хотя бы напишите, что к чему и чем подключаете.
В EBPro есть режим онлайн/оффлайн симуляции, так вот в режиме «On-line Simulation» проект исполняется на компьютере, необходим ПК, ПЛК и их корректное соединение (панель не требуется), а вот какие именно настройки сети и где настраивать не пойму, в руководстве тоже не нашел для этого случая ничего, может кто знает?
В 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 или нет?
Пользуйтесь утилитой, которую предложил 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 битов выдает ошибку.
См. прикрепленную картинку и проект.
проект не смотрел, а по картинкам видно, что Вы указатель на массив сделали, которого кстати не существует, потому что в конфигурации у Вас всего одно двойное слово
Спорягин Кирилл
10.08.2015, 18:17
Capzap, там еще в посте 29 у меня вопрос был по Вашему другому посту.
Спорягин Кирилл
10.08.2015, 18:19
Так я хочу доступ к этому двойному слову получить побитно. Но как я начинаю понимать проблема в том, что он выделяет по байту на каждый бит.
сделайте указатель на дв.слово, а затем подойдет такая конструкция pDI32^.0 означает состояние нулевого разряда, массив из булей не пройдет
Спорягин Кирилл
10.08.2015, 18:43
А что по поводу поста 29?
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. почему нет, прога каждый цикл кидает данные в мастер, а мастер хоть по времени хоть по команде, берет эти данные из своей области памяти, а не из структуры используемой в проге
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot