Просмотр полной версии : Не понятно с адресами ввода-вывода Modbus в памяти ПЛК
Всем привет!
Читаю документацию OWEN PLC-Configuration.
Пункт 3.1.3.2. Отображение устройства в области памяти
Не совсем понятно как что и куда попадает.
Может объясните поподробнее?
Если поточнее, то ситуация такая: из двух плк-слейв читаю из каждого массивы из 20 word и надо записать в третий плк-слейв. Как разместить все это, чтобы не надо было копировать переменные в программе?
Конфигурация:
Modbus (Master)
Universal Modbus Device (адрес 1)
Universal Modbus Device (адрес 2)
Universal Modbus Device (адрес 3)
С конфигуратором получится только делать вручную три одинаковых набора переменных-регистров, описывать эти три набора на мастере и вручную на мастере же копировать.
Ну вот набросал приблизительный конфиг. Гляньте, плз, и скажите правильно ли я думаю:
1. С плк1 (Модбас адрес 1) читаем регистры (String input) с 0 до 19
2. С плк2 (Модбас адрес 2) читаем регистры (String input) с 20 до 39
3. На плк3 (Модбас адрес 5) они попадают автоматом (String output), т.к. они находятся на одном Модбас мастер и адреса регистров такие же с 0 до 39.
Еще один момент: как только я Stringам присваиваю какие-либо имена, то при компиляции появляется ошибка 3729: неверный тип String[79] по адресу ххх... ххх - адреса переименованных стрингов, исключая первый.
Как мне к ним обращаться?
Что-то представители Овена упорно игнорируют тему... :)
Я конечно уже разобрался почти со всем, но есть пару вопросов и на них хотел бы получить вразумительный ответ, т.к. от этих ответов зависит будет ли вообще овен в этом проекте или нет.
1. Как узнать идет ли работа с Modbus (в конфигурации плк)?
2. Как включить или выключить работу этого самого "аппаратного modbus"?
Это штука или это Вы напоследок возмущаетесь таким образом? Проверяется просто, нужно на подключенном устройстве изменить регистр и в конфигураторе посмотреть соответствие. Удалите модбас из конфигуратора и таким образом отключите его
У меня 3 устройства модбас и два не модбас. Если я хочу опросить "не модбас", то мне надо быть уверенным что контроллер в данный момент не занимает порт. И если я его занял опросом "не модбас" устройств, то мне надо отключить этот аппаратный модбас программно, чтобы пока я не закончил опрос "не модбас", контроллер не полез его дергать.
Теперь смешнее и похоже на шутку?
Пробую программировать с использованием UNM.lib, но это такая муть, что вообще не известно как это будет работать... Контроллер постоянно отлетает от отладчика или вообще самопроизовольно встает в стоп. БАТТОН ПОДКЛЮЧЕН!!! - специально выделяю, чтобы не начали мне втирать что у меня из-за него ничего не работает.
Да, и пока не встал, в статистике все нормально и красиво...
для того чтоб модбас работал по команде через конфигуратор есть описание в документации. Не знаю про UNM.lib не приходилось использовать, с протоколом модбас есть библиотека modbus.lib, к ней есть примеры на форуме
capzap, вот когда поработаешь с UNM и тем набором устройств (даже хотя бы с двумя разнотипными), то милости просим, а пока спасибо за абсолютно бесполезный комментарий. ;)
Походу такой задачи еще никто не решал.
И, кстати, в примере с UNM уже нашел глюк - Read Holding Register независимо от результата, всегда возвращает в Error код 11.
организация этапной передачи данных не зависит от библиотек и протоколов,жаль что Вы этого не поняли, успехов
Примеры в студию! А то болтать все горазды. :)
Насчет понял или нет, это как бэ не вам судить. И тем более, судя по тому что вы тут мне писали, вы даже не понимаете про что я. :)
В один момент Вам надо чтоб ПЛК опрашивал свои устройства, в другой момент надо чтоб не ПЛК опрашивал свои устройства по своему протоколу но по той же сети. На примеры я не подписывался, а теперь и подсказки смотрю не сильно Вам нужны, занимайтесь своими делами
Ну ответы типа "сам дурак" обычно подразумевают то что оппонент сам ничего не понимает в теме... :)
Кстати перерыл я документацию - нет там ничего про программное определение и включение/выключение Modbus конфигуратора.
И не правильно поняли.
Расшифрую окончательно: надо чтобы он прочитал два устройства модбас, прочитал два устройства "не модбас" и запихал обработанные данные по модбас в третье устройство и все это по одному порту RS485.
повторю тогда еще раз свою наводку, в один цикл Вы обращаетесь к устройствам поддерживающим один протокол, получаете от них требуемые ответы, переходите к опросу по другому протоколу, после получения ответов ну или как вариант ошибок, переходите к работе с третьим устройством, закончили с третьим переходите к первому. Ну и где здесь жесткая привязка к библиотеке, к протоколу, к конфигуратору наконец, хотя можно и с ним используя Universal Modbus Device его параметр Work Mode поставить в состояние By Command
Спасибо за наводку, только я давно уже так и сделал. Причем спасибо за наводку на документацию по конфигуратору - нашел там что нужно, пишу n-й вариант проги.
Как опрашивать по очереди я все прекрасно знаю - мне это можно и не объяснять. Еще вчера был готов вариант полностью через UNM. Кстати кроме опроса по очереди там еще есть куча "подводных камней" и простым перечислением не обойдешься...
пришлось писать опрос по очереди типа шагового блока:
case n of
1: опрос модуля 1; условие перехода на 2
2: опрос модуля 2; условие перехода на 3
и т.д.
...
end_case
Иначе контроллер уходил в стоп и постоянно терялась с ним связь.
Ну и условия переходов: опрос удачный, нет ответа, ошибка.
Какой же это камень ? Обычная очередь. Других вариантов в serial быть не может.
Ну в документации не описано, поэтому пришлось сделать сначала без очереди, потом с очередью. Тем более что после разбора библиотек это было не очень то и очевидно - программа то по сути линейна и пока не закончилась работа с одним модулем, на другой переходить не должно.
в документации не описано
В какой ? И чего ? Что serial - нужно очередью ?
В документации не описано что такое интеграл. Но про ПИД что-то есть.
программа то по сути линейна
Ваша ?
Ну в документации не описано, поэтому пришлось сделать сначала без очереди, потом с очередью. Тем более что после разбора библиотек это было не очень то и очевидно - программа то по сути линейна и пока не закончилась работа с одним модулем, на другой переходить не должно.CASE может переходить и при каждом новом цикле, а ответы приходят по времени значительно больше одного цикла, поэтому многое зависит от условий перехода
Ваша ?
Моя, моя... Что так нервничать то? :)
Чисто логически: я что-то опрашиваю, жду пока придет ответ или ошибка. Линейно? Линейно!
CASE может переходить и при каждом новом цикле, а ответы приходят по времени значительно больше одного цикла, поэтому многое зависит от условий перехода
А вот это как раз не линейно. Поэтому окончательный вывод об использовании условий был сделан после заливки в контроллер и просмотра что там и как переходит.
Там файл для заливки больше 90 килобайт и из них 90% чужие либы. Или все за 5 минут разбираются с таким количеством информации и в коде чужих модулей??? Не сильно ошибусь, если предположу, что многие программируют подобным образом: предположил, написал, залил, проверил, не пошло - копаешься дальше, пошло - не трогай.
я что-то опрашиваю, жду пока придет ответ или ошибка. Линейно? Линейно!
Поглядывая на приход ответа, другую работу делаю. Нелинейно :)
Кстати разобрался почему сразу не нашел про работу с аппаратным модбас. Есть два документа: один OWEN PLC-Configuration.pdf длиной в полтора мегабайта и в нем нет, а второй PLC_Configuration_OWEN.pdf длиной 2,4 мегабайта - в нем есть.
Короче вопросов больше нет. Всем спасибо. :)
Поглядывая на приход ответа, другую работу делаю. Нелинейно :)
Зависит от ситуации. :)
Кстати разобрался почему сразу не нашел про работу с аппаратным модбас. Есть два документа: один OWEN PLC-Configuration.pdf длиной в полтора мегабайта и в нем нет, а второй PLC_Configuration_OWEN.pdf длиной 2,4 мегабайта - в нем есть.
Короче вопросов больше нет. Всем спасибо. :)это означает, что Вы останетесь пользователем продукции ОВЕН? :D
это означает, что Вы останетесь пользователем продукции ОВЕН? :D
Я вообще сторонник сименсов, но они не всегда подходят по категории цена/качество. Думаю не открою америку если скажу, что если не нужна особая надежность, то можно обойтись и овеном. :D
Ну и писать на "псевдопаскале" в кодесисе, несравнимо проще, чем на STL в сименсе. :)
Кстати команда групповой записи то работает? 10h которая. Или это очередные оставленные разработчиками "грабли"? Пока ни в какую не удается принять пакет.
не замечал проблем у контроллеров с модбасом ни через конфигуратор и тем боле написанный в ручную, есть некоторые особенности только у модулей, ради сокращения памяти группа это не больше двух регистров, но повторюсь с плк таких проблем нет
И по поводу сименса, зря Вы STL обижаете, если уж сравнивать то с IL-ом надо, а ST тогда уж с SCL и разницы получается особо то ни какой
С приемом пока разбираюсь... Надеюсь что заработает.
STL я не обижаю! Как раз наоборот: после бурного детства с синклером и кодирования на нем же на асме, я просто фанатею от него. :)
Поэтому на сименсе в большинстве случаев использую STL в функциях и функциональных блоках, в оби и прочих логических модулях LAD, ну а шаговые классически GRAPH. Ну и FBD практически не использую - достаточно всего вышеперечисленного. :)
Да, и забыл, SCL не использую совсем - он даже не установлен. :)
Всем привет!
Есть вопрос по библиотеке UNM.lib.
Читаю и пишу через нее. Для эксперимента стоит второй ПЛК100, который по двум адресам передает и по одному принимает (типа эмулятор).
Этот второй ПЛК100 работает через конфигурацию Modbus Slave - т.е. отдает данные "аппаратно".
Проблема в том что контроллер через библиотеку UNM принимает и передает, переставляя старший и младший байт.
Т.е. аппаратно передаем 40,41,42,43 (и т.д.) получаем через UNM 41, 40, 43, 42...
Передаем через эту же UNM ту же последовательность 41, 40, 43, 42 и получаем через аппаратный Modbus вообще какую-то фигню: 43, 40, 45, 42... :(
Причем в буфере приема ответ от контроллера что принято без ошибок - т.е. что-то эта UNM вообще косячит по-черному.
Сама библиотека для редактирования закрыта. Может есть вариант с возможностью ее редактирования? Или может есть другая библиотека с другой последовательностью приема-передачи? А то ерунда какая-то получается...
Кстати, так и не удалось подключить через эту же UNM счетчики меркурий - висит на авторизации. С этим же паролем без проблем заходит через конфигуратор.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot