библиотеки еще нет, но первый шаг на встречу пользователям сделан:
Нестандартные протоколы
На базе данных примеров можете составлять свои системы опроса электросчетчиков
Вид для печати
библиотеки еще нет, но первый шаг на встречу пользователям сделан:
Нестандартные протоколы
На базе данных примеров можете составлять свои системы опроса электросчетчиков
здравствуйте. проштудировал форум и мануалы, но так и не нашел информации по подключению теплосчетчика спт к Plc. если несложно - ткните носом пожалуйста. лучше в пример. спасибо.
пишите на plc@owen.ru - вышлем.
Здравствуйте!
Не могу победить следующую проблемму:
Пытаюсь наладить опрос расходомеров Гиперфлоу-3Пм с ПЛК Овен-100. Тестирую пока на программе-эмуляторе Гиперфлоу.
Запросы на чтение мгновенных измеренных параметров (перепад, давление, температура, расход) проходят нормально.
Ответы читаю в массив 40 байт (преамбула, стартовый байт, адрес, команда, длина, статус, данные, контрольная сумма по XOR).
Проблеммы начинаются когда пытаюсь разобрать ответ гипера на мгновенные измеренные параметры: dP - байты с 18 по 21,
P - байты с 24 по 27, T - байты с 30 по 33, Q - байты с 36 по 39. Трабл возникает когда преобразую эти параметры
в REAL значения через указатель pt1 : POINT TO REAL следующим образом:
pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [18]);
Arr_Giper [Rx_Addr].dP := pt1^;
pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [24]);
(* Arr_Giper [Rx_Addr].P := pt1^; *)
pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [30]);;
Arr_Giper [Rx_Addr].T := pt1^;
pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [36]);
(* Arr_Giper [Rx_Addr].Q := pt1^; *)
,где Arr_Giper - массив структур гиперов, Rx_buffer : ARRAY [1..40] OF BYTE - ответ от гиперов.
Причем dP и T преобразуются без проблем, указатели на P и Q в строках 3,7 берутся нормально а когда убираю коментарий
с 4 и 8-ой строки контроллер при запуске перегружается.
В файле debug.txt появляются следующие записи:
17 E PLC was reset by watchdog!
3 M Last run module Id =100
3 M Last post module Id =100
3 M Total control code =18
3 M Max cache utilisation =6
3 M local_status =3
3 M run_level =2
3 M ff 45 ff ff ff 0 0 0 0 0 0 0 0 0 0 0
Т.е. как я понимаю, ПЛК перегружается по сторожевому таймеру.
Когда тестировал на CDS SP RTE все работало без проблем.
Help me please!
Не соблюдается выравнивание данных в памяти.
начальные адреса REAL должны быть кратны 4, при объявлении байтового массива его начальный адрес может быть случайным, далее если угадали положение dP, то потом вклиниваются байты 22 и 23 которые нарушают выравнивание. Надо объявить переменную REAL, и через ADR копировать
байты из массива, а не пытаться считать их через указатель.
Примерно так
varReal: REAL;
pReal: pointer to array[0..3] of byte;
pReal:=ADR(varReal);
Между параметрами dP, P, T, Q есть 2 пустых байта.
dP и T нормально преобразуются.
Чтобы проверить что с указателями не ошибся, создал 4 отдельных указателя pt1 : POINTER TO REAL;
pt2 : POINTER TO REAL;
pt3 : POINTER TO REAL;
pt4 : POINTER TO REAL;
и разделяю параметры следующим образом:
pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [18]);
Arr_Giper [Rx_Addr].dP := pt1^;
pt2 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [24]);
(*Arr_Giper [Rx_Addr].P := pt2^;*)
pt3 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [30]);;
Arr_Giper [Rx_Addr].T := pt3^;
pt4 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [36]);
(*Arr_Giper [Rx_Addr].Q := pt4^;*)
при этом адреса получаются вроде как правильные:
pt1 = <202b9204>, pt2 = <202b920a>, pt3 = <202b9210>,
pt4 = <202b9216>
Почему 1-ый и 3-ий параметры преобразуются, а 2-ой и 4-ый не хотят?
Повторюсь, на SP RTE все работало.
Адреса как-раз неправильные, так как идут через 6. Адреса 1 и 3 параметров получаются кратными 4, поэтому и преобразуются.
Выравнивать адеса требует ARM, в SP RTE наверное это не требуется.
Попробуете так:
varReal: REAL;
SysMemCpy(ADR(varReal),pt1,4);
Спасибо! Попробую.
Ура! Заработало!
Логвиненко Андрей, большое Вам спасибо!
Всем привет!Столкнулся вот с такой задачей.Необходимо считать данные о расходе со счетчика РСВУ-1400(производство "Белсимет",г.Минск).
Подключается по rs232.Использовал ПЛК100-К-L.
Протокол у счетчика вот такой:
1.Асинхронная передача данных;
2.Скорость 1200 бод;
3.Передаваемая посылка 10 бит:(стартовый бит,8 бит данных,стоповый бит)
Вот например последовательность для считывания текущего расхода.
посылка прием
0х72 0х72 - команда чтения
0х2А 0хХХ - младший байт
0х72 0х72
0х2В 0хХХ - старший байт
На форуме нашел примеры программ на нестандартные протоколы,
и взял за основу.
В программе с помощью syslibcom отправляю в счетчик функцию чтения(в данном случае 0х72).И как я понимаю должен ее получать обратно.Но нестабильный обмен,то вообще не получаю,то получаю,но не такое же число.
С чем это связано?Посмотрите программу пожалуйста.
Хотелось бы второй шаг - связь со счетчиками Меркурий-230 все еще очень актуальнаЦитата:
библиотеки еще нет, но первый шаг на встречу пользователям сделан:
Нестандартные протоколы
На базе данных примеров можете составлять свои системы опроса электросчетчиков
__________________
__/TrriG\__/GerR\__
Александр Вячеславович Приходько
Инженер Группы Технической поддержки
Телефон 221-60-64 (доб. 1121)
E-mail A.Prikhodko@owen.ru
Увеличте минимальное время цикла до 5-10 мс. К сожалению при использовании данной библиотеки цикл необходимо сильно увеличивать.
Есть альтернативная библиотека UNM, пример работы с ней, тоже на форуме:
http://www.owen.ru/forum/showpost.ph...3&postcount=63
Здравствуйте. Мы знаем, что данная тема актуальна, есть уже почти готовый пример. Сейчас веду доработку примера и мануальчик, дабы все понятно было. Пример реализован на базе библиотеки UNM. В качестве подопытного кролика стоит Меркурий 230 ART-00 RN.
Кто срочно жаждет данный пример, пишите мне на электронку, будем тестировать: PLC@OWEN.RU. В теме письма укажите МЕРКУРИЙ.
Водочсетчик(РСВУ) пока отложил в сторону,решил с электросчетчиком "Энергомера" пока разобраться.Так вот какая проблема.Работаю с программой взятой из примера,поставил номер порта "0"(rs485),в online CodeSys показывает ошибку "INVALID 0".Это что значит.
Может кто писал программу обмена с Энергомерой?
Обмен при этом идет? На порт 0 он даже при нормальном обмене ошибку пишет...
Обмен не идет.Надо с электросчетчиком разбираться наверное.
Хотелось-бы поддержку протокола Profibus-DP (master), очень много slave устройств с этим протоколом.
У меня вопрос такого характера если у нас есть своя разработка которая общается с ПК со своим протоколом через АС4 и со своей программой можно ли описать этот протокол в ПЛК100. Просто у нас программист ушел со скандалом а мы хотим работать со скадой.
То есть Вам нужно, чтобы ПЛК100 общался со SCADA по Вашему протоколу? Я правильно понял?
Если протокол базируется на одном из интерфейсов, имеющихся у ПЛК - можно.
Пример работы по нестандартному протоколу есть в разделе форума ПЛК\Примеры программ и полезности.
Интерфейс общения между Вашим контроллером и ОВЕН ПЛК?
Ну и какой между ОВЕН ПЛК и SCADA?
Можно.
Делались такие вещи нашими партнерами не раз.
Тем более, если Вы знаете алгоритм и принцип подсчета CRC - перенести на ПЛК все это не составит большого труда, хотя поразбираться, конечно придется.
[QUOTE=Николаев Андрей;60244]Можно.
Делались такие вещи нашими партнерами не раз.
Тем более, если Вы знаете алгоритм и принцип подсчета CRC - перенести на ПЛК все это не составит большого труда, хотя поразбираться, конечно придется.[/QUOT]
Я не селен еще в программирование вы бы не могли подсказать хорошего спеца который бы мог написать прогу платно. Можете написать на Sterhov_Anton@mail.ru
Напишите на plc@owen.ru для Приходько Александра. Он подскажет как в этой ситуации поступить.
Господа. Есть вопрос по подключению двух модбас модулей в ПЛК 154. Один слейв (для работы с панелью), и один мастер (для работы с преобразователем).
Настройки этих модулей должны быть одинаковыми? Скорость, чётность и т.д.
И ещё. Есть необходимость передавать некоторые данные (в основном статистические -текущий расход, суммарный и т.д.) с шести независимых контроллеров (каждый управляет своим агрегатом). На ПК на СКАДу. Управление агрегатами осуществляется через панели ИП320 (тоже 6 шт.). Сами контроллеры будут удалены метров на 200 от пульта управления, где предполагается разместить Панели. ПК и Панели разнесены метров на 40.
Вопрос как лучше организовать передачу данных на ПК?
Можно ли все шесть локальных линий передачи по модбасу из ПЛК 154 на Панели каким-то образом свести в кучу и передать на ПК?
Какой ОРС сервер лучше всего установить на ПК?
В-общем, просьба, подсказать и показать направление, где читать и что может понадобиться?
Спасибо
To Safron.
Есть предложение: Нарисуйте схемку территориального расположения оборудования, планируемую или желательную, со списком оборудования.
И Вам понятнее станет и мы сможем что то более конкретное посоветовать...
OK/ Нарисую. А пока подскажите. Чтобы установить CoDeSys OPC сервер на ПК это нужно полность CoDeSys устанавливать или как-то можно отдельно , типа как ОРС сервер для ОВЕН приборов.
Из описания к CoDeSys OPC сервер я понял. что нужно ещё какой-то Gateway устанавливать. Можно ли и его (без установки CoDeSys) установить как отдельный драйвер? В-общем пока, что ещё каша в голове...
Мдя. Не просто все.
А расстояние между ПЛК?
Модули к каждому ПЛК? Сколько? Почему не ОВЕН МХ? :)
Сеть Ethernet на данной территории развернута?
ПЛК к панелям можно отнести? Или входы\выходы активно используются?
Совсем банальный вопрос - а зачем Вам панели в 200 метрах от контроллеров??? Они не должны быть рядом? С панели будет что то меняться в программе ПЛК или только отображение. Если будете изменять уставки и что то с панели включать - рекомендую делать её мастером.
ПЛК100 здесь будет не оптимален - у него всего один порт RS485, и придется использовать преобразователи RS232\RS485. Возможно оптимальней ПЛК110-30 поставить. У него 2 RS485 и 2 RS232.
А вот как к компу идти - вопрос.
250 метров. Для Ethernet далеко, да и тянуть десяток кабелей...
Вариантов несколько, но все сводится к одному - нужно собирать данные в один канал.
Либо это свич\хаб каждые 100 метров и Ethernet.
Либо преобразовать данные со всех ПЛК на один RS485. Можно используя один из ПЛК.
ПЛК на расстоянии 2-3м. В специальном помещении в цеху. до пульта управления метров 200, где разместятся панели. Там же ,в соседнем помещении, стоит АРМ и управляет совсем другими устройствами. к нему надо будет подключится. Возможно, если понадобятся ещё дискретные входы , добавим по одному модулю на ПЛК. Как видно из рисунка-панель является мастером по отношению к ПЛК, преобразователь подчиненным к ПЛК. Но не в этом суть моего вопроса, а в том, как подключить к АРМ несколько ПЛК. Если читать про кодесис сервер, то там вроде как можно настроится на несклько устройств. И всё-таки есть вопросы которые написал выше. А может вариант с ОРС сервером и не прокатит -я не знаю.
И ещё. всё-таки все подключаемые модули модбас должны настраиваться одинакого? Для модуля обмена с Панелью свои настройки, а для обмена с преобразователем свои...
А вообще вариант с добавлением ещё одного ПЛК интересен.
Ethernet отсутствует. Если скажете "надо" - буду организовывать. Только подскажите, что для этого может понадобиться.
Если надо какие-нибудь хабы. Значит буду их пытаться внедрить. Я собственно говоря за советом и обратился...
Скажите пожалуйста, а почему в пультовой 6 панелей, а не, скажем, один планшетный ПК? Может стоит поставить еще один комп с SCADA системой, которая уже стоит в основной комнате? Или есть специальные требования?
Ну и хотелось бы получить ответы на все остальные вопросы - это может быть важным.
С точки зрения протокольного подключения все как раз просто:
Если заводится все будет через Ethernet - используется либо CoDeSys OPC сервер, естественно один для всех 6 контроллеров. Если данных будет передаваться много - возможно стоит посмотреть в сторону Lectus OPC или другого ModBus TCP OPC сервера
Если по RS485 - тогда точно либо Lectus либо другой ModBus OPC сервер.
Вопрос как оптимальнее физику дотянуть...
Если по RS485
Ну принципе да. Есть требования. Я и предлагал сначала ПК поставить со Master Scada. Но мне сказали нет(снижают цену),да и нужно-то всего по три сигнала (аналоговых) с каждого. Текущая производтельность, за смену и общая производительность. Но мне показалось это извращением тянуть на пульт ещё 200 м кабеля для аналоговых сигналов. Т.е. данных всего 18 переменных и СКАДА у них, по-моему, WinCC .
Вот и думаю уже, может действительно, проще всего рядом с панелями поставить ещё один ПЛК и сделать его мастером по отношению к шести панелям? По 232 интерфейсу. А с него уже на СКАДУ по 485. Т.е. схема получиться шесть ПЛК-> шесть панелей-> ПЛК (шесть слйвов -> шесть мастеров (они же слейвы)-> один мастер(в подчинении шесть панелей) ). Или это тоже извращение?
Вопрос попутный. Получается (из вашего ответа) , что CoDeSys OPC сервер работает только по Ethernet? Modbus он не поддерживает?
:eek: :eek: :eek:
Вот сейчас вообще удивили...
Если Вам нужно на панели показывать 3 значения с каждого контроллера - зачем Вам 6 панелей???
Контроллеры в слэйв. Одна панель. Мастер. И усе
Пожалуй с промежуточным контроллером может получится оптимально (учитывая стоимость кабелей).
6хПЛК (ModBus Slave) - - RS485 - - 1хПЛК (ModBus Master).
И уже с этого подключаете 6 :) панелей, а Ehernet заводите в комп со SCADA системой.
Или еще лучше
6хПЛК (ModBus Slave) - - RS485 - - 1хСП270 (ModBus Master-шлюз-ModBus Slave) - - RS485 - -АС3М - ПК. СП270 может ретранслировать данные с одного порта на другой. СП270 больше и нагляднее, и по деньгам все-равно получается дешевле, чем 6 ИП320.
Сразу возник еще один вопрос: А Вам точно 6 ПЛК надо???
CoDeSys OPC работает только по своему протоколу Gateway (протокол для программирования), без привязки к интерфейсу. Соответственно так как Gateway в ПЛК1ХХ поддержан только на Ethernet и RS232 Debug, то только по ним данный OPC сервер и работает.
Да не удивляйтесь. В каждую панель будет передаваться куча переменных. Это пользовательские настройки, как то, задание производительности, выбор режима авт/ручной, пуск/стоп, текущая производительность, суммарная и за смену, обнуление сум. производительности. А также будет возможность задавать различные конфигурационные переменные для дозатора, как-то диаметр барабана, параметры энкодера, толщина ленты. длина взешиваемой платформы, максимальный предел тензодатчика.
Сервисные функции:
Предусматривается возможность проведения процедуры калибровки
, установки нуля, измерения среднего веса ленты за N оборотов и т.д. и т.п.
И конечно, всё это предлагалось изначально завести на ПК. Но наши заморские товарищи захотели, чтобы всё было раздельно, а с каждого дозатора на комп заводились только три переменные. И что б панели были.
Вопрос снимаю - что значит надо было сразу все тайны рассказывать, а то тянуть приходится :)
Тогда возвращаемся к такому варианту:
ПЛК110-30. Один из интерфейсов RS485 (ModBus Slave)идет на свою панель. Второй интерфейс RS485 (ModBus Slave) вешается на общую линию, которая и пойдет к ПК.
У ПК - один АС3-М ну или АС4, ну или Екон131, чтобы в комп завести.
В Питере на силовых машинах очень похожий проект. Работает уже несколько лет. Но только там панель прям у станка, рядом с контроллером, и комплектов... несколько побольше. В комп заводят по Ethernet (уж слишком много данных).
Попутный вопрос и отстану.У ПЛК 110-30 есть возможность подключить энкодер к дискретным входам? И насколько он хорошо работает?