Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

Тема: ПРОБЛЕММА С ОВЕН ПЛК110-32М

  1. #11
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    2,986

    По умолчанию

    Цитата Сообщение от death132 Посмотреть сообщение
    Всем здравствуйте! Начинаю осваивать ПЛК Овен. Сейчас в работе ПЛК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....l=1#post141316
    По этому или терпите неудобства или смотреть п.2

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

  2. #12

    По умолчанию

    Я поставил опрос раз в 10 секунд. ПЛК опрашивает раз в 10 секунд. ЧТО ДЕЛАТЬ?
    Тролль-наседка, добрый, нежный и ласковый

  3. #13
    Пользователь Аватар для Woolfy
    Регистрация
    20.01.2016
    Адрес
    Новосибирск
    Сообщений
    418

    По умолчанию

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

  4. #14

    Red face Итог

    Цитата Сообщение от petera Посмотреть сообщение
    Полный бред, извините.
    Извините, но пока мой мозг не может осознать чего тут бредового, видно не дорос еще =))) Просто хотел опрашивать устройство 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 сек.

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

    конструкция COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK ); должна открыть порт и выставить COM_SERVICE1.ready в TRUE, и на это ей нужно 299!!! циклов (запусков Read10s_PRG). 299 КАРЛ
    т.е. если 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!!!
    т.е. если 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 ничего не выйдет - проверено! После открытия порта в программе конфигуратор больше не может подключиться к интерфейсу.
    Вот такая интересная ночка выдалась =)

  5. #15

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Я поставил опрос раз в 10 секунд. ПЛК опрашивает раз в 10 секунд. ЧТО ДЕЛАТЬ?
    Как вам это удалось? подробности в студию, пожалуйста =)

  6. #16
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    2,986

    По умолчанию

    Цитата Сообщение от death132 Посмотреть сообщение
    Панель сделать мастером не могу. Далее будут подключаться еще устройства которые должен обрабатывать ПЛК. И после обработки данные выдавать на панель.

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

    Ну и напоследок
    Если кто-то захочет на одном интерфейсе по ModBus опрашивать часть устройств через конфигуратор а часть в программе через modbus.lib ничего не выйдет - проверено! После открытия порта в программе конфигуратор больше не может подключиться к интерфейсу.
    Это секрет Полишинеля. Т.е. давно известный факт.
    Последний раз редактировалось petera; 25.06.2016 в 10:22.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков

  7. #17

    По умолчанию

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

  8. #18
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    2,986

    По умолчанию

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

    ЗЫ. Забыл сказать
    Далее будут подключаться еще устройства которые должен обрабатывать ПЛК. И после обработки данные выдавать на панель.
    Из-за этого Вы не сможете использовать RS485 в слейве для подключения панели, т.к. этот порт нужен будет для будущего мастера.
    Нельзя делать и мастер и слейв с использованием одноименного порта.
    По этому в слейве для панели используйте RS232.
    Последний раз редактировалось petera; 25.06.2016 в 20:24.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков

  9. #19

    По умолчанию

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

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

  10. #20
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    359

    По умолчанию

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

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 50
    Последнее сообщение: 25.05.2018, 10:03
  2. связь ПЛК110 И ТРМ210 по протоколу ОВЕН
    от ОАО"Органика" в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 14.10.2011, 06:15
  3. ОВЕН ПЛК110 -возможность использования
    от Алексей Лопухов в разделе Подбор Оборудования
    Ответов: 1
    Последнее сообщение: 21.09.2011, 10:04
  4. Вопрос по ОВЕН ПЛК110
    от Stas в разделе Подбор Оборудования
    Ответов: 1
    Последнее сообщение: 25.05.2011, 09:27
  5. Ответов: 1
    Последнее сообщение: 05.09.2010, 10:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •