Вход

Просмотр полной версии : ПРОБЛЕММА С ОВЕН ПЛК110-32М



kelbik
19.01.2012, 13:42
приобрели ПЛК110-32М и модуль ввода сигналов тензодатчиков
МВ110-224.1ТД.По примеру взятому с форума ОВЕН был сделан
проект считывания веса из МВ110-224.1ТД.После компиляции и загрузки в ПЛК появились такие
проблеммы:
1.При старте програмы порт RS-485 не работает.В режиме "ОНЛАЙН"
появляется надпись( com_num=***INVALID:0***) красного цвета.При
отключении питания ПЛК110 и последующем включении программа в ПЛК110 не
сохраняется, при подключении в режим "ОНЛАЙН" появляется сообщение ( В контроллере нет программы.Загрузить новую программу?)
2.Написал на языке ST простенькую програмку типа x:=x+1; при загрузке в ПЛК110 в режиме "ОНЛАЙН" видно ее работу но при отключении питания ПЛК110 и последующем включении программа пропадает, в "ОНЛАЙН" появляется
сообщение ( В контроллере нет программы.Загрузить новую программу?)
Никто не подскажет в каком направлении копать? проект прилагается...

capzap
19.01.2012, 13:47
Диалоговое окно категории Load&Save:
используя Remind of boot project on exit

Если вы изменили проект и загрузили его в контроллер, не создав после этого загрузочный проект, то при попытке закрыть проект вы получите напоминание: " После последней загрузки загрузочный проект не был создан. Закрыть проект? "

kelbik
19.01.2012, 14:39
да ,з сохранением программы после выключения питания определился,забыл записать во flash память....а вот с опросом по MODBUS не определенка..в чем причина ???com_num=***INVALID:0***:confused:

lara197a
19.01.2012, 14:58
COM 0 является не корректным значением для библиотеки, но работать должно.
Так-то этот модуль мотбас поддерживает. Создайте в ПЛК конфигураторе
универсал мотбас модуль и опрашивайте регистры в нем.

kelbik
19.01.2012, 15:17
И кому мне верить?Одни умные люди на форуме говорят"не пользуйтесь конфигурационным MODBUS-ПЛОХО!!! а пользуйтесь библиотекой modbus.lib" а другие ноаборот....кто-то может скинуть мне проект для ПЛК110-32 с применением в нем MODBUS RTU...инициализацией в нем портов,применяя modbus.lib....БУДУ ОЧЕНЬ БЛАГОДАРЕН...(примеры взятые с сайта owen не работают)..

capzap
19.01.2012, 15:41
однозначно ни кто не рекомендует использовать шаблоны, а все остальное можно. При достаточном опыте можно и к библиотеке переходить, а так и конфигуратор справиться. Модбас стандартный протокол, не важно какое устройство опрашивается, нужно только знать адрес устройства, начальный адрес байта данных и количество байт данных, поэтому берите любой пример от сюда http://www.owen.ru/forum/showthread.php?t=11241

lara197a
19.01.2012, 19:26
5444
.....................

Валенок
20.01.2012, 17:45
to lara197a
Код можно упростить :
;
:)

lara197a
20.01.2012, 22:45
легко.....

death132
24.06.2016, 22:13
Всем здравствуйте! Начинаю осваивать ПЛК Овен. Сейчас в работе ПЛК110-32РМ.
Подключил ПЛК(master) с панелью оператора СП307(slave) по RS-485, протокол MODBUS rtu. Оператор выбирает какой механизм включить на дисплее, ПЛК переодически считывает из панели биты состояния, вкл/откл выходы. Все хорошо, все работает.
Нужно из панели периодически считывать текущее время(PSW[300]-[306] ), вдруг оператор его изменил, и устанавливать это время в ПЛК, для корректного формирования своих лог файлов (какой механизм сколько работал и когда).

Сталкнулся со следующей проблемой:
В конфигураторе ПЛК добавляю Universal ModBus Device, добавляю в него 7 регистров, устанавливаю команду читать и период опроса 10сек (10000 мс).
Полусаю: считывает 1 регистр, проходит 10 сек, считывает другой регистр (не обязательно по порядку), прроходит 10 сек, и т.д....

КАК СДЕЛАТЬ ЧТО БЫ ПЛК СЧИТЫВАЛ ВСЕ 7 РЕГИСТРОВ ЗА 1 ЦИКЛ???

Т.Е. прочитал 7 регистров, прошло 10 сек, проситал опять все 7 регистров и т.д.
период опроса менял, таймаут тоже, без результатно....

25145

Пробовал настроить Universal ModBus Device by command - все тоже самое. 1 команда - 1 регистр, 1 команда - другой регистр (не обязательно по порядку).

Подскажите в чем дело? Или так и должно быть?

petera
25.06.2016, 01:31
Всем здравствуйте! Начинаю осваивать ПЛК Овен. Сейчас в работе ПЛК110-32РМ.
Подключил ПЛК(master) с панелью оператора СП307(slave) по RS-485, протокол MODBUS rtu. Оператор выбирает какой механизм включить на дисплее, ПЛК переодически считывает из панели биты состояния, вкл/откл выходы. Все хорошо, все работает.
Нужно из панели периодически считывать текущее время(PSW[300]-[306] ), вдруг оператор его изменил, и устанавливать это время в ПЛК, для корректного формирования своих лог файлов (какой механизм сколько работал и когда).

Сталкнулся со следующей проблемой:
В конфигураторе ПЛК добавляю Universal ModBus Device, добавляю в него 7 регистров, устанавливаю команду читать и период опроса 10сек (10000 мс).
Полусаю: считывает 1 регистр, проходит 10 сек, считывает другой регистр (не обязательно по порядку), прроходит 10 сек, и т.д....

КАК СДЕЛАТЬ ЧТО БЫ ПЛК СЧИТЫВАЛ ВСЕ 7 РЕГИСТРОВ ЗА 1 ЦИКЛ???

Т.Е. прочитал 7 регистров, прошло 10 сек, проситал опять все 7 регистров и т.д.
период опроса менял, таймаут тоже, без результатно....

25145

Пробовал настроить Universal ModBus Device by command - все тоже самое. 1 команда - 1 регистр, 1 команда - другой регистр (не обязательно по порядку).

Подскажите в чем дело? Или так и должно быть?
Полный бред, извините.
1. Зачем между чтениями 10 сек?. А что если сделать 10 мс, то кому-то хуже будет?
"Подскажите в чем дело? Или так и должно быть?" - Да, так и должно быть http://www.owen.ru/forum/showthread.php?t=17207&p=141316&viewfull=1#post141316
По этому или терпите неудобства или смотреть п.2

2. И самое главное, ЗАЧЕМ панель слейвом сделали? Панель д.б. мастером, однозначно! Тогда проблем по п.1 небудет никогда!

Филоненко Владислав
25.06.2016, 06:42
Я поставил опрос раз в 10 секунд. ПЛК опрашивает раз в 10 секунд. ЧТО ДЕЛАТЬ?

Woolfy
25.06.2016, 07:28
Ну первый раз человек подошёл к Модбасу и ПЛК - что ж, сразу загрызть его? :) Для меня, к примеру, Модбас тоже - тёмный лес...

death132
25.06.2016, 08:46
Полный бред, извините.


Извините, но пока мой мозг не может осознать чего тут бредового, видно не дорос еще =))) Просто хотел опрашивать устройство 1 раз в 10 сек.
Протокол modBus позволяем опрашивать несколько регистров в 1 запросе, а вот то что universal modbus device (UMD) так не может - этого нигде не было написано! Спасибо за ссылку, теперь знаю! Хотя в этом я всю ночь на практике убеждался, но до последнего верил что все же есть разгадка =)) Думаю это стоило бы добавить в "Программирование программируемых логических контроллеров ОВЕН ПЛК110 и ПЛК160 Руководство пользователя"

Резюме (может кому пригодится и не нужно будет экспериментировать всю ночь):
Конфигурация ПЛК -> Вставляем Элемент ModBus (master) -> настраиваем параметры связи -> Добавляем universal modbus device -> Добавляем несколько регистров (например Registr input module).

Если в настройках universal modbus device параметр work mode установлено by poll time и Polling time ms например 1000, то "логика" рабрты будет следующая:
Считываем один регистр -> ждем 1000ms -> считываем второй регистр -> ждем 1000ms -> и т.д.

Если в настройках universal modbus device параметр work mode установлено by command, то "логика" рабрты будет следующая:
Команда -> Считываем один регистр (неизвестно какой из всех) -> Команда -> считываем второй регистр (неизвестно какой из всех) -> и т.д.

С этим смирились!

Казалось есть спасительная библиотека ModBus.lib. Есть примеры как читать несколько регистров со slave устройства одним запросом/ Жизнь удалась!!!

Логика у меня была следующая:
1. Создаем POU (программа) Read10s_PRG.
2. В конфигурации задач настраиваем Тип - циклический, Интервал - 10000ms
3. В программе Read10s_PRG настраиваем параметры порта -> открываем порт -> читаем -> обрабатываем данные -> закрываем порт.
4. Получаем считывание нескольких регистров slave устройства и их обработку 1 раз в 10 сек.

На мой взгляд все логично=) А вот не тут-то было!!!!!:mad:

конструкция COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK ); должна открыть порт и выставить COM_SERVICE1.ready в TRUE, и на это ей нужно 299!!! циклов (запусков Read10s_PRG). 299 КАРЛ :confused:
т.е. если Read10s_PRG запускается 1 раз в 10 мс то требуется 299*10мс.
если Read10s_PRG запускается 1 раз в 10000 мс то требуется 299*10000мс.

Вот этого я никак не ожидал вообще!!! Но справедливости ради надо отметить что порт открывается, обмен идет, и можно одним запросом прочитать сразу несколько регистров =) На 10000мс не проверял конечно, остановился на 800мс. Далее "логика" была понятна.

Но и тут казалось можно было выкрутиться:
Создаем POU OpenPort_PRG -> настраиваем циклически 10мс -> вставляем туда код:


IF port_opened=0 THEN
Settings.Port:=com_num;
Settings.dwBaudRate:=115200;
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF

COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );

IF COM_SERVICE1.ready THEN
port_opened:=2;
END_IF

Порт открывается быстро. А теперь в Read10s_PRG просто работаем с этим портом (естественно нужные переменные делаем глобальными)


get1_modbus: MB_RD_HOLD_REGS

get1_modbus(
Enable:=TRUE ,
Mode:=MB_RTU ,
DevAddr:=1 ,
FirstAddr:=300 ,
Quantity:=14,
ComHandle:=Settings.Port ,
TimeOut:=TimeOut ,
Buffer:=Buffer ,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );



cmpl будет TRUE когда get1_modbus получит данные.
НО
получит она их через 13 циклов (запусков Read10s_PRG ) 13!!!:confused:
т.е. если Read10s_PRG запускается 1 раз в 10000мс то мы получим данные через 13*10000мс
Все данные получены экспериментально.

PLCInfo
PLC model MODEL PLC 110-32 Версия ПО метр: 2.0
Binary VERSION 2.15.8
Need Target version 2.10
Compiled: 11:51:53 Dec 26 2015
MAC 6A:77:00:81:4F:67
IP 10.0.6.10
GATE 10.0.6.1
MASK 255.255.255.0
PIC upper version is 15
Licence unlimited

Ну и напоследок
Если кто-то захочет на одном интерфейсе по ModBus опрашивать часть устройств через конфигуратор а часть в программе через modbus.lib ничего не выйдет - проверено! После открытия порта в программе конфигуратор больше не может подключиться к интерфейсу.
Вот такая интересная ночка выдалась =)

death132
25.06.2016, 10:03
Я поставил опрос раз в 10 секунд. ПЛК опрашивает раз в 10 секунд. ЧТО ДЕЛАТЬ?

Как вам это удалось? подробности в студию, пожалуйста =)

petera
25.06.2016, 10:17
Панель сделать мастером не могу. Далее будут подключаться еще устройства которые должен обрабатывать ПЛК. И после обработки данные выдавать на панель.

Тут даже не в панели дело. Вместо нее может быть что угодно. Задача была опрашивать slave редко. 1 раз в 10-20-30 - ... секунд. И сразу несколько регистров. Пока не знаю как это сделать =( Ночь потрачена безрезультатно.
Что значит не могу? У ПЛК 110 два порта RS485, два порта RS232 и порт Ethernet.
И кто Вас заставляет вешать ВСЕ устройства на один порт?
Подключите панель мастером к RS232, любому! И все проблемы отпадут сами собой.


Ну и напоследок
Если кто-то захочет на одном интерфейсе по ModBus опрашивать часть устройств через конфигуратор а часть в программе через modbus.lib ничего не выйдет - проверено! После открытия порта в программе конфигуратор больше не может подключиться к интерфейсу.
Это секрет Полишинеля. Т.е. давно известный факт.

death132
25.06.2016, 17:06
немного подумав решил: раз знающие люди говорят сделать панель мастером, надо сделать панель мастером =)) данную задачу решил, спасибо за совет! Остальные проблемы будем решать по мере их поступления...
У меня ПЛК110 первой версии, у него один RS485. Ну это в принципе не важно.
25147

petera
25.06.2016, 20:08
немного подумав решил: раз знающие люди говорят сделать панель мастером, надо сделать панель мастером =)) данную задачу решил, спасибо за совет! Остальные проблемы будем решать по мере их поступления...
У меня ПЛК110 первой версии, у него один RS485. Ну это в принципе не важно.
25147
Ну раз ПЛК110 первой версии, то в комплекте с ним идет кабель для программирования КС1. Этот кабель с успехом можно использовать для подключения панели к ПЛК через порт RS232( не Debug).

ЗЫ. Забыл сказать

Далее будут подключаться еще устройства которые должен обрабатывать ПЛК. И после обработки данные выдавать на панель.
Из-за этого Вы не сможете использовать RS485 в слейве для подключения панели, т.к. этот порт нужен будет для будущего мастера.
Нельзя делать и мастер и слейв с использованием одноименного порта.
По этому в слейве для панели используйте RS232.

death132
27.06.2016, 07:42
Одна непонятка все таки осталась. PLC Configuration не умеет делать групповые запросы, черт с ним. Но почему он не может за 1 цикл опросить все регистры universal modbus device несколькими запросами. Т.е. нужно опросить 10 регистров, генерируешь 10 запросов подряд в 1 цикле ПЛК и вперед. Ведь если добавить 10 universal modbus devic и в каждый добавить по 1 регистру, то все они будут опрошены за 1 цикл ПЛК.


Нельзя делать и мастер и слейв с использованием одноименного порта.

Вот за это еще раз спасибо =) Потому что ПЛК конфигуратор позволяет добавить и то и другое на 1 порт. Хотелось попробовать, неужели так можно? Теперь не буду время терять.

amn
27.06.2016, 09:26
Но почему он не может за 1 цикл опросить все регистры universal modbus device несколькими запросами
Потому что для опроса одного регистра надо сделать запрос, дождаться ответа, а уже потом делать следующий запрос. За это время ПЛК успеет прогнать несколько циклов.

petera
27.06.2016, 12:34
Вот за это еще раз спасибо =) Потому что ПЛК конфигуратор позволяет добавить и то и другое на 1 порт. Хотелось попробовать, неужели так можно? Теперь не буду время терять.

Зато в одном слейве можно использовать несколько разных портов http://www.owen.ru/forum/showthread.php?t=14199&p=146969&viewfull=1#post146969
И получится межсетевой шлюз на аппаратном уровне.

plcmaster
07.01.2018, 11:36
Я поставил опрос раз в 10 секунд. ПЛК опрашивает раз в 10 секунд. ЧТО ДЕЛАТЬ?

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