Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: lecsa от 26 Января 2017, 11:58:14

Название: Языки программирования контроллеров
Отправлено: lecsa от 26 Января 2017, 11:58:14
С разрешения админов, начал новую тему по самостоятельному изучению языков программирования контроллеров.
Так как я в языках полный ноль то приходится делать первые шаги.
 Если у кого возникнет желание помочь то я думаю будет очень здорово.
Если еще будут желающие то буду только рад.
Название: Re: Языки программирования
Отправлено: lecsa от 26 Января 2017, 12:15:22
Продолжу. Имею ПЛК73М от Овена. Кодесис 2.3, таргет 2.16. Термопару (К). токовые выходы 4...20мА, релейные. Также подъедит 3х ходовой клапан с управлением 4..20мА

Скажу сразу, использовать только ПЛК, ТРМ и другие регуляторы не учитываются, т.к ПЛК у нас валяются 10 штук. И начальство хочет только ПИД!

 Подвигло меня на изучение, опытное задание на работе, да и давно хотел постичь минимум с работой ПЛК (непосредственно написать код)
 Задача.
Есть термопласт автомат. У него имеется пресс-форма и гидравлическое управление ( остальное упускаю ). Для этого нужно охлаждение (циркуляция воды с заданной температурой).
  Пресс-форма должна иметь минимальную температуру, которую может производить холодильник (5-6 гр), так же в момент остановки, пресс-форма должна охлаждаться повышенной температурой (20-25 гр) для того чтоб не образовывался конденсат на ней).

 Гидравлика. Гидравлическое масло, да и вообще система, любит постоянную температуру. У нас это 48 гр.

 Теперь сама задача.
Нужно создать 2 ПИД регулятора,  вывод температуры на ЖКИ каждого из каналов, уставки рабочей температуры, уставку при остановки работы пресс-формы. Ну при полете мысли еще чем нибудь дополнить, типа аварии по холодильнику.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 26 Января 2017, 14:14:40
Изучать простые операции желания не возникло, взял трепать сразу ПИД на языке CFC

 CFC относительно понятный язык, особо если если раньше программировали ПР (программированное реле).
В кодесис добавил библиотеку с пидом, сконфигурировал задействованые входа и выходы,  прикрутил на глаз уставки ПИД, вывел тренд и тд. Вообщем ФБ "ПИД" заработал в симуляторе.
 
 Хотел выложить фото скина но что то не нашел как это сделать. :(
Название: Re: Языки программирования контроллеров
Отправлено: Andrey1883 от 26 Января 2017, 14:31:42
Хотел выложить фото скина но что то не нашел как это сделать. :(

Можно, например, через вот этот хостинг (http://itmages.ru/)
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 26 Января 2017, 20:14:07
Ну попробую вставить.
(http://storage7.static.itmages.ru/i/17/0126/h_1485451131_3274330_d7a4888c6a.jpg)

Ну и сам проект, для тех кто хочет сам поиграться https://yadi.sk/d/660A3nFk3B5vGR
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 10 Февраля 2017, 01:18:12
Может я и старый, но мне на ST в codesys все что сложнее простого писать значительно удобнее...

Типа контроля систем отопления и ГВС котельни... Мой любимый паравоз: 60AI(4-20ма), 64AI(pt1000), 28АО(0-10), 176DI, 48DO,  2хRS485(12х2 насоса), 2xETH(каплер, скада, плк1(чилера), плк3(котлы), плк4(счетчики)). :)
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 12 Февраля 2017, 18:42:00
Приветствую, т.е вы ST знаете?
  Я как начинающий только пытаюсь в нем разобраться.
У меня получилось написать на ST (тело) +CFC (пид), с выводом на ЖКИ и регулировкой уставки на ЖКИ.
Хотел реализовать "аварии" на CFC но блок как то некорректно срабатывал. Пока дальше копаю
 Я согласен  Вами что ST намного универсальней, его надо только понять.
Если что, то можно Вам задать вопросы?
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 13 Февраля 2017, 17:31:08
Приветствую, т.е вы ST знаете?
  Я как начинающий только пытаюсь в нем разобраться.
У меня получилось написать на ST (тело) +CFC (пид), с выводом на ЖКИ и регулировкой уставки на ЖКИ.
Хотел реализовать "аварии" на CFC но блок как то некорректно срабатывал. Пока дальше копаю
 Я согласен  Вами что ST намного универсальней, его надо только понять.
Если что, то можно Вам задать вопросы?
Та да, можна, но отвечать буду по факту наличия времени... ST - по сути тот-же паскаль, что и эта скада. Ну и это... Я в 2.3 версии зависаю, т.к. мои контроллеры 3-ей не понимают :)
В кодесисе ГЛАВНОЕ разобраться с необходимой структурой данных и понять что такое FB и как оно работает. Например блок "Таймер" (TON) стоит прописывать НЕ в программах (var Timer:TON;), а сразу в глобальной структуре:
TYPE aaa:
STRUCT
   Timer1   : TON:=(PT:=t#5s);
   ....
END_STRUCT
END_TYPE
далее его надо где-то в последней программе вызвать: ааа.Timer1();

В будущем, ежели нам этот ФБ будет нужен, то достаточно дать старт aaa.Timer1.IN:=true и проверить исполнение aaa.Timer1.Q

Что не так с авариями и как они должны вообще срабатывать?
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 13 Февраля 2017, 21:59:38
Спасибо большое за ответ, конечно я понимаю формат "наличие времени", я то же изучаю ST при наличии времени :).  Среда кодесис2.3., 3ю даже и не ставил. 15 февраля буду на работе, выложу свою непонятку с блоком ошибки.
Название: Re: Языки программирования контроллеров
Отправлено: a_sergeevich от 14 Февраля 2017, 08:03:07
Подключайтесь https://www.youtube.com/channel/UCxT0ngJYg3YvQzVy_zElTrw/videos как раз канал по обучению программирования ПЛК.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 14 Февраля 2017, 14:00:28
Спасибо, на днях я уже скачал всю пачку  :) Смотрел первые несколько серий, пока там на CFC, хотелось бы более на ST.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 16 Февраля 2017, 17:24:16
Приветствую .
Возникла проблема, сижу туплю.
Пид регулятор, переменная sp1(*уставка*) - глобальная и прописана в SubMenu конфигураторе ПЛК.
Вспомнил что все же нужно ее сделать RETAIN, что операторам меньше работы было.
Теперь капец. Ошибка 3703 (два раза объявлено).
Может надо эту переменную сделать VAR_OUT sp1 RETAIN и в конфигураторе ПЛК обозвать так же sp1?

Еще вопрос, как находить переменные с 2м объявлением?
Пролез по локальным, по глобальным, двух индификаторов не встретил . Как вы их ищите?
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 16 Февраля 2017, 20:13:00
Приветствую .
Возникла проблема, сижу туплю.
Пид регулятор, переменная sp1(*уставка*) - глобальная и прописана в SubMenu конфигураторе ПЛК.
Вспомнил что все же нужно ее сделать RETAIN, что операторам меньше работы было.
Теперь капец. Ошибка 3703 (два раза объявлено).
Может надо эту переменную сделать VAR_OUT sp1 RETAIN и в конфигураторе ПЛК обозвать так же sp1?

Еще вопрос, как находить переменные с 2м объявлением?
Пролез по локальным, по глобальным, двух индификаторов не встретил . Как вы их ищите?

Один из вариантов поиска Проект->Глобальный поиск, выбираете всё и жмёте ОК, ищите что нужно будет поиск по всему проекту.

Переменная уставка в SubMenu какой тип имеет оперативный или конфигурационный? Чтобы сохранялось в конфигураторе нужен тип Конфигурационный.  Как часто меняется уставка оператором и откуда? Из меню конфигурации или из рабочего режима?
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 16 Февраля 2017, 20:56:45
Мде... Я конфигуратором вообще не пользуюсь (кроме входов-виходов и иногда модбас)...

просто на закладке "глобал-вариейбл":

VAR_GLOBAL RETAIN PERSISTENT
  SomeSruct : typeSomeStruct;
END_VAR
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 16 Февраля 2017, 21:05:37
Приветствую .
Возникла проблема, сижу туплю.
Пид регулятор, переменная sp1(*уставка*) - глобальная и прописана в SubMenu конфигураторе ПЛК.
Вспомнил что все же нужно ее сделать RETAIN, что операторам меньше работы было.
Теперь капец. Ошибка 3703 (два раза объявлено).
Может надо эту переменную сделать VAR_OUT sp1 RETAIN и в конфигураторе ПЛК обозвать так же sp1?
Это не наш метод, но когда все плохо, то можна присваивать значение ретейн переменной в нужную переменную в начале проги. А ежели вдруг значение измениось, то в обратную сторону в ее конце.

Про указатели пока не буду, там для новичка все еще хужее :)

И, это... А нельзя вместо sp1 просто вписать название нужной переменной из ретейна?
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 16 Февраля 2017, 22:54:14

просто на закладке "глобал-вариейбл":

VAR_GLOBAL RETAIN PERSISTENT
  SomeSruct : typeSomeStruct;
END_VAR

 Ух, задача для хвоста :) Попробую разобраться в этой наскальной надписи и ее применения  :)


И, это... А нельзя вместо sp1 просто вписать название нужной переменной из ретейна?

А так я пробовал, ругается чертяка :-[
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 16 Февраля 2017, 23:06:56
Один из вариантов поиска Проект->Глобальный поиск, выбираете всё и жмёте ОК, ищите что нужно будет поиск по всему проекту.

Переменная уставка в SubMenu какой тип имеет оперативный или конфигурационный? Чтобы сохранялось в конфигураторе нужен тип Конфигурационный.  Как часто меняется уставка оператором и откуда? Из меню конфигурации или из рабочего режима?

Переменная имеет тип "Операционный". Меняется на панели ПЛК при выборе "конфигурация"-......

Не, можно конечно по "умолчанию" выставить уставки и голову не греть, но так как я вдобавок "изучаю" то хочется разобраться :)

 А еще варианты есть? Я наверное проект выложу. Я его лепил по образу "обучающего" + гнул под свои потребности. Так вроде бы все работает, за исключением RETAINa. Может раздолбете его в пух и перья  ;D
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 17 Февраля 2017, 15:46:15
Переменная имеет тип "Операционный". Меняется на панели ПЛК при выборе "конфигурация"-......
 А еще варианты есть? Я наверное проект выложу. Я его лепил по образу "обучающего" + гнул под свои потребности. Так вроде бы все работает, за исключением RETAINa. Может раздолбете его в пух и перья  ;D

Если я правильно вас понял чтобы поменять уставку вы на ПЛК73 зажимаете кнопку ВВОД появляется меню там ищете Конфигурация потом вашу переменную и меняете уставку? Если это так то достаточно просто выбрать тип конфигурационный для переменной в SubMenu. (Желательно почитайте инструкцию к ПЛК73 по отличию оперативных от конфигурационных параметров)

Если хотите поизвращаться есть более тупой но рабочий вариант с оперативными параметрами.
Цитировать
PROGRAM PLC_PRG
VAR
   START: BOOL;
   SP1: UINT; (*ПЕРЕМЕННАЯ В SUBMENU*)
END_VAR
VAR RETAIN
   SP1_RET: UINT;
END_VAR

(*В первом цикле программы после старта записываем переменную из ретайна в переменную из SubMenu*)
IF NOT START THEN
   SP1:=SP1_RET;
   START:=TRUE;
END_IF

(*После в каждом цикле присваиваем значение переменной из SubMenu в Ретайн переменную
можно добавить условие по изменению значения и т.д.
IF SP1_RET<>SP1 THEN*)
SP1_RET:=SP1;


Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 17 Февраля 2017, 17:57:06
Огромное спасибо Вам TOPans и Teodor

Вот вычитал ::)

Введенные с передней панели ПЛК или по сети значения конфигурационных па-раметров сохраняются в EEPROM, и при выключении питания будут сохранены.

Значения оперативных параметров сохраняются в ОЗУ, и при выключении пита-ния последнее значение параметра не будет сохранено. При включении питания зна-чение параметра примет значение, установленное по умолчанию.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 18 Февраля 2017, 10:23:03
Кстати, вот сам проект. Посмотрите, может нормальные прогеры делают не так?
Я еще недопонимаю как выстроить "правильную иерархию" т.е есть какая то стандартная иерархия типа: тех задание (уставки с панели, пид регулятор, аварии... и тд.), потом уже самому додумывать что еще надо чтобы работало КАК НАДО!

 Вы как уже бывалые, какие стандартные или обязательные функции в проектах используете (понятно ,что есть зависимость от направления проекта)?
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 18 Февраля 2017, 21:56:41

VAR_GLOBAL RETAIN PERSISTENT
  SomeSruct : typeSomeStruct;
END_VAR

Это типа такого, т.е таблица в каких режимах работает сохранение переменной.
И самое главное :)

Внимание:

* Если локальная переменная объявлена как VAR RETAIN, то она будет размещена в энергонезависимой области как глобальная.

* Если локальная переменная функционального блока объявлена VAR RETAIN, то все его данные целиком помещаются в  энергонезависимую область памяти, но обслуживаться как VAR RETAIN будет только данная переменная.

* Если локальная переменная функции объявлена VAR RETAIN, то это не дает никакого эффекта. Переменная не будет помещена в энергонезависимую область памяти! Аналогичное объявление PERSISTENT также не дает желаемого эффекта!

Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 28 Февраля 2017, 12:51:36
Пока есть одно основательное замечание... PLC_PRG не надо использовать как место для свалки кода.

Создавайте по программе/ФБ для каждой задачи/подзадачи. А вот уже эти программы и вызывайте из PLC_PRG типа myProg(); Если в подпрограмме необходимо задать параметры (VAR_INPUT) то собсно myProg(Param1,Param2...). Только не забывайте, что локальные переменные программы не зависят от того кто и зачем ее вызвал. Программы есть только 1 экземпляр. Если есть несколько независимых паралельных процессов (например обработка аварий), то лучше пользоваться функциональными блоками.

Например, инициализация. Создайте PLC_INIT и там разберитесь с предстартовой подготовкой, а ее замените строкой  PLC_INIT().

IF NOT starting THEN - так вы сами себя запутываете. Инициализируйте ее в TRUE  и скидывайте :)

Два регулятора в одном блоке - некрасиво смотрятся. 2 отдельных програмки позволят нагляднее понять что и когда вы делаете. Например ваш DECODE_FLOAT выполняется 2 раза. А если блоков будет 30? Потому интереснее было бы сотворить ФБ У которого были бы входящие и выходящие параметры, которые уже и расписать по нужным переменным.

Тут мы вспоминаем о структуре данных. В DataTypes определить структуры для входов и выходов из ПИД регулятора, создать структуру пид-регулятор с входами-выходами, создать струкруру регулятор с обозначенным в ней ФБ пид-регулятора и структурой пид-регулятор.  Создать структуру регуляторы из массива структур регулятор... :)

Теперь, мы можем, например, создать прогу- "управление", там запустить в цикле фб нужных пид регуляторов, передав ему в VAR_IN_OUT всю структуру входов/выходов.

Дальше мы навсегда забываем о существовании данных блоков и программ. Просто меняем переменные в структурах, зависимо от того чего хотим добиться уже в совсем других программах.

ton2(in:=TRUE,pt:=t#1000ms);   - очень плохая привычка....

   ton1: TON :=(PT:=t#1s);
   ton2: TON :=(PT:=t#1s);
Избавит вас от указания PT каждый раз.

Вместо ton2(in:=TRUE,pt:=t#1000ms);   просто ton2.IN:=TRUE;
и в самом конце - ton2();

Зачем такие сложности? Пока вы не вызовете ФБ, никакие изменения в его вн. переменные роли не играют. Исполняется ФБ раз за цикл, посему к-во его вызовов не изменит факта работы, а путаницу внести может. Например тот же таймер надо сбросить для рестарта. Сброс-установка In двумя вызовами в одном цикле, сброса НЕ произведет, а принять решение о остановке таймера могут и несколько независимых событий.

Сори что сумбурно, просто тут надо на пальцах показывать. :) По вашему конкретному проекту точечно не помогу т.к. не имею ни таргетов, ни либ от вашего ПЛК :)
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 28 Февраля 2017, 16:03:46
Я еще недопонимаю как выстроить "правильную иерархию" т.е есть какая то стандартная иерархия типа: тех задание (уставки с панели, пид регулятор, аварии... и тд.), потом уже самому додумывать что еще надо чтобы работало КАК НАДО!

Иерархию желательно строить соответственно структуры реального объекта и действий над ним.

Например вот из живого проекта:
 glBoilerroom.HWS.Block_CD.NodeT31_T32.Pump.head2.PumpStatus.Direction

Котельня - ГВС - Ветка - Узел - Насос - Голова - Параметр - Направление

Весьма наглядно демонстрирует что это вообще за параметр и что с ним дальше делать: Направление вращения второй головы насоса узла Т3'-T3" ветки СД системы ГВС котельни. ... Проверяем все ли правильно (не перепутаны ли фазы) и либо просто отправляем параметр в скаду, либо ставим насос в аварию.

Отдельно строим иерархии данных сторонних устройств (например регистры для скады)
Устройства - устройство[экземпляр] - тип регистра (R/RW) - регистры.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 03 Марта 2017, 10:36:29
Спасибо за развернутый ответ. Чувствуется акула программирования, я только головастик. Мне бы пока разобраться с примитивом.

 Вот допустим, продолжаю мытарства с RETAIN. Панель запоминает в конфигурации значения переменных а если вводить через визуализацию, то нет (не запоминает) пишет по моему оперативно. Варианты которые были тут выше с записью из ретаина в оперативные панели,  пока у меня не срабатывают. Наверное ваш вариант с указателями надо изучить.

 Вот мне скинули наводку:

Смысл в том, что в окне визуализации нужно будет вводить значения не в конфигурационную переменную, а в промежуточную. Затем промежуточную переменную с помощью функции "SAVE_PARAMETER" записывать в конфигурационную переменную.

 Я пока завис на промежуточной оперативной, так и не нашел как ее создать. Начал копать в сторону макроса с MOVE, чтоб в него писать временное значение, но когда прикручиваю "SAVE_PARAMETER" то возникают ошибки " невозможно преобразовать один формат данных в формат "SAVE_PARAMETER" . проблема именно с форматом "SAVE_PARAMETER" .
 Так что как то так.
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 03 Марта 2017, 20:11:33
Вот допустим, продолжаю мытарства с RETAIN. Панель запоминает в конфигурации значения переменных а если вводить через визуализацию, то нет (не запоминает) пишет по моему оперативно. Варианты которые были тут выше с записью из ретаина в оперативные панели,  пока у меня не срабатывают.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 03 Марта 2017, 20:26:53
TOPans
Я это читал, уже закрылся на этот вопрос но тут старшие товарищи опять меня взбодрили  ;D

http://www.owen.ru/forum/showthread.php?t=10555&page=585    мои рыдания с сообщения 5844 
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 21 Марта 2017, 14:42:11
Возник вопрос по сети.
 У моего ПЛК 73 есть 2 порта RS (485/232 по Модбас, Овен) , в конфигурации имеются настройки.
Теперь мне нужно считывать/записывать значения переменных через ОПС на скаду.
 Теперь вопрос:  Как организовать сие действие? Какого то представление в последовательности я не нашел.
В других контроллерах (ПЛК110) там можно в конфигурации создать ветвь МОДБАС и в нее добавить переменные. А в мой переменные в RS не добавить  (просто порт)
 Мои мысли такие: Надо из библиотеки в программе создать МОДБАС  и каким то образом прикрутить переменные. Смотрел по примерам (ПЛК110) они используют ARRAY
 т.е массив. 
 У меня еще не переварился массив. Как я понял - это блок в котором я могу создать минипрограмму, присвоить входы/выходы и обращаться к ним. Вот только то что в квадратных скобках я так и не допонял. Это какая то разрядность (кол -во столбцов?)
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 21 Марта 2017, 21:56:59
Я ПЛК73 в связке с ОПС не использовал но думаю тут всё просто.
По факту в ПЛК73 ветвь SubMenu и есть "аналог" ветви Modbus Slave из ПЛК110.
Но здесь необходимо чётко указывать нужно ли видеть переменную по модбас или нет .т.е. нужно поставить галочку Протокол модбас и в соответствии с диапазоном задать адрес переменной. Для переменных типа UINT диапазон 344-511. Для Real 90-286. На картинках более понятно будет.
Также есть возможность чтения всех переменных одним махом т.е. группой но есть проблема в описании к ПЛК очень криво всё описано методом тыка определили что групповое чтение начинается с адреса 4182.
Изначально все порты в ПЛК73 сконфигурированы как Slave вам только в параметрах RS1 и RS2(настраиваете тот к которому подключен ОПС) необходимо задать скорость, чётность и адрес который вам необходим. Далее просто опрашиваем через ОПС ПЛК73 по адресам которые мы выставили на переменных.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 22 Марта 2017, 10:36:27
Спасибо, я что то до этого не допер. Теперь понятно.
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 22 Марта 2017, 12:45:59
Как же все у овена через ж... зад... Насколько в Ваго это проще... Открыл мастера, добавил девайс, добавил диапазоны данных для чтения/записи, частоту опроса. Мастер сгенерил код, переменные/массивы ВСЕ. Надо считать, считал, надо записать записал.

Я тут часто не мог понять о чем вы вообще :) Пока не увидел 110 барана в действии. Это кошмар...

Кста, есть 110 баранчик и МВ110-8А модули (пока 3). В конфигураторе прописываются девайсы и их переменные/регистры. Есть там возможность считать все данные с модуля одним массивом вордов? Дабы обойтись 3-мя запросами вместо 56*3?
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 23 Марта 2017, 09:35:01
Кста, есть 110 баранчик и МВ110-8А модули (пока 3). В конфигураторе прописываются девайсы и их переменные/регистры. Есть там возможность считать все данные с модуля одним массивом вордов? Дабы обойтись 3-мя запросами вместо 56*3?

Скорее всего можно если там регистры идут последовательно, но для этого нужно использовать библиотеку Modbus.lib и руками прописывать обмен.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 23 Марта 2017, 22:19:58
Я ПЛК73 в связке с ОПС не использовал но думаю тут всё просто.
По факту в ПЛК73 ветвь SubMenu и есть "аналог" ветви Modbus Slave из ПЛК110.
Но здесь необходимо чётко указывать нужно ли видеть переменную по модбас или нет .т.е. нужно поставить галочку Протокол модбас и в соответствии с диапазоном задать адрес переменной. Для переменных типа UINT диапазон 344-511. Для Real 90-286. На картинках более понятно будет.
Также есть возможность чтения всех переменных одним махом т.е. группой но есть проблема в описании к ПЛК очень криво всё описано методом тыка определили что групповое чтение начинается с адреса 4182.
Изначально все порты в ПЛК73 сконфигурированы как Slave вам только в параметрах RS1 и RS2(настраиваете тот к которому подключен ОПС) необходимо задать скорость, чётность и адрес который вам необходим. Далее просто опрашиваем через ОПС ПЛК73 по адресам которые мы выставили на переменных.

 Сегодня пол дня прикручивал опсосы, сперва мастерОПС (так и не смог его прикрутить к плк), потом обсос от Овена.
 Для простоты накидал примитивный проект, IN - OUT). Сконфигурировал в SUBMENU (bool).
 Сперва по модбасу RTU (OPC OWEN)(выставил адрес )режим  конфигурационный.  Теги не читаются но пишет GOOD и порт открывает. Так же пробовал по протоколу Овена - имя и индекс, фиг вам!

Потом начались эксперименты.
 Режим оперевативный - и вы а ляяя, опсос зачитал и записал  (ОВЕН). мастеропс так и несмог.
Из опытов понял что есть проблема с соединением и считыванием.  Допустим все читает, стоит отсоединиться  как начинаются проблемы с коннектом (ошибка 48) то теги BAD. Все как то неустойчиво. Ну да ладно.
 Если есть возможность, подкиньте рабочие конфигурации ОПС (у меня есть лектус , демки мастер опс 32 тега и кепсервис5, ОВЕНОПС-3)
Хотел прослушать порты но что то не одна прога не заработала. Если чем слушаете модбас то направте куда :)

Все таки как Вы говорили, придется оперативные считывать из RETAINа Потому как даже по сети в конфигурацию переменные не записать. 
 Буду дальше насиловать себе мозг, честно уже под устал, но цели достичь надо, для своего эго :)
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 24 Марта 2017, 13:27:15
Скорее всего можно если там регистры идут последовательно, но для этого нужно использовать библиотеку Modbus.lib и руками прописывать обмен.
Не, я имел в виду именно конфигуратор.  ;D

Ручками, это понятно, но не всегда удобно, (а иногда и невозможно, но то уже изврат с подьемом 485 на консольном разьеме через переходник). Я больше с Wago работаю. Там долгое время вообще конфигуратора не было, зато сделали шикарно.
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 24 Марта 2017, 16:27:06
Все таки как Вы говорили, придется оперативные считывать из RETAINа Потому как даже по сети в конфигурацию переменные не записать. 
 Буду дальше насиловать себе мозг, честно уже под устал, но цели достичь надо, для своего эго :)

Я к сожалению не использовал ОПС с ПЛК73 никогда но другими контроллерами опрашивали без проблем.
Вот нашёл пример на сайте ОВЕНа для работы с LectusOPC
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 24 Марта 2017, 16:37:43
Ручками, это понятно, но не всегда удобно, (а иногда и невозможно, но то уже изврат с подьемом 485 на консольном разьеме через переходник). Я больше с Wago работаю. Там долгое время вообще конфигуратора не было, зато сделали шикарно.

К сожалению с Wago не доводилось работать...я так понимаю там внутренняя шина по которой происходит обмен, набрасываешь в конфигурации используемые модули и вуаля))) Но эта история не для ОВЕН. У них как и у большинства отечественных разработчиков идеи хорошие, но до конца дело доводить не хотят начинают другое что-то делать. В итоге номенклатуры миллион а работает не совсем удобно.
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 24 Марта 2017, 17:57:17
К сожалению с Wago не доводилось работать...я так понимаю там внутренняя шина по которой происходит обмен, набрасываешь в конфигурации используемые модули и вуаля))) Но эта история не для ОВЕН. У них как и у большинства отечественных разработчиков идеи хорошие, но до конца дело доводить не хотят начинают другое что-то делать. В итоге номенклатуры миллион а работает не совсем удобно.
За К-bus речь не идет, так все проще репы. Ткнул "поиск", оно все опросило и построило согласно порядка подключения, расписало регистры в памяти, только забирай или пиши. Из милионной номенклатуры раздражает то что ВСЕ входы-выходы в т.ч. АIO передаются вордами. Причем данные зависят от настройки модуля. 0-10 и 2-10 это один модуль, но 5в на первом - это условно 32000, то на втором 40000. Потому всеравно надо писать "приводящие" функции (мин, макс, инверсия), в которые заодно и коррекцию на провода заложить.

Но есть еще модуля 232/485 (на самом контроллере их нету, кроме uart консольного) или каплеры(MBTCP). Вот с ними работать уже нужен мастер, либо ручками. Один бок - если читать-пиать в мастере группами, то только ворды в массиве. Приводить до флоатов или чо там еще надо и наоборот, прийдется все-равно в ручную.

Чем оно лучше принципиально, так это FRAM вместо EEPROM(Больше, шустрее, надежнее... и дороже). А последние машинки вообще на АРМе с линухом. Грузится долго (все равно быстрее барана), зато летает. Я на заводе ловлю <2мс импульсы с датчиков оборотов в 1мс задаче и задерживаю их для основной задачи.
Название: Re: Языки программирования контроллеров
Отправлено: lecsa от 24 Марта 2017, 19:40:28
Все таки как Вы говорили, придется оперативные считывать из RETAINа Потому как даже по сети в конфигурацию переменные не записать. 
 Буду дальше насиловать себе мозг, честно уже под устал, но цели достичь надо, для своего эго :)

Я к сожалению не использовал ОПС с ПЛК73 никогда но другими контроллерами опрашивали без проблем.
Вот нашёл пример на сайте ОВЕНа для работы с LectusOPC

Благодарю, завтра по изучаю! ;)
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 25 Марта 2017, 08:08:56
За К-bus речь не идет, так все проще репы. Ткнул "поиск", оно все опросило и построило согласно порядка подключения, расписало регистры в памяти, только забирай или пиши. Из милионной номенклатуры раздражает то что ВСЕ входы-выходы в т.ч. АIO передаются вордами. Причем данные зависят от настройки модуля. 0-10 и 2-10 это один модуль, но 5в на первом - это условно 32000, то на втором 40000. Потому всеравно надо писать "приводящие" функции (мин, макс, инверсия), в которые заодно и коррекцию на провода заложить.

Но есть еще модуля 232/485 (на самом контроллере их нету, кроме uart консольного) или каплеры(MBTCP). Вот с ними работать уже нужен мастер, либо ручками. Один бок - если читать-пиать в мастере группами, то только ворды в массиве. Приводить до флоатов или чо там еще надо и наоборот, прийдется все-равно в ручную.

Чем оно лучше принципиально, так это FRAM вместо EEPROM(Больше, шустрее, надежнее... и дороже). А последние машинки вообще на АРМе с линухом. Грузится долго (все равно быстрее барана), зато летает. Я на заводе ловлю <2мс импульсы с датчиков оборотов в 1мс задаче и задерживаю их для основной задачи.

В общем я так понял у всех производителей хватает своих причуд. Просто у кого-то их меньше.
В целом конечно нас ПЛК от ОВЕНа устраивают, конечно хотелось бы поработать и с другими но от нашей бедности работаем с тем что можем себе позволить))) У ПЛК110 М02  память уже MRAM поэтому проблем с энергонезависимостью нету, но выработалась привычка писать все настройки в файл и он довольно шустрый его нагрузить чем-то довольно сложно. Чего нам не хватает так это внутренней шины между контроллером и модулями, пусть даже за дополнительные деньги.
Кстати вы с контроллерами МЗТА не сталкивались? Для меня там вообще ад! А цена как у ОВЕНа если не дороже. Но некоторые заказчики бьются головой об стену и ничего другого видеть не хотят.

В схожих конфигурациях по входам/выходам на сколько процентов Wago будет дороже ОВНА?
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 25 Марта 2017, 12:17:59
Кстати вы с контроллерами МЗТА не сталкивались? Для меня там вообще ад! А цена как у ОВЕНа если не дороже. Но некоторые заказчики бьются головой об стену и ничего другого видеть не хотят.

В схожих конфигурациях по входам/выходам на сколько процентов Wago будет дороже ОВНА?
МЗТА не наблюдал. У нас клиенты другие слегка, потому ВАГО и ханивел - это для бедных, кто сименса со шнайдером не тянет. 

Дороже овна значительно :)
Сама тушка(без IO) ок 400-600уе, модуля к ней 70-200уе. Опять-же, модуля можно и от барана брать, но это не то совсем.
НО! цена окупается простотой и компактностью. Я выше скидывал фото моего "любимчика":
(https://scontent-waw1-1.xx.fbcdn.net/v/t31.0-8/13002567_1111103595626186_3457497678451449721_o.jpg?oh=49b0eaacd34baaec4f7aae2338f98e7e&oe=595A1D4F)

1 рейка контроллер, вторая-третья рейки - еще один.

Так вот, у первого 16AI (4-20), 8AO(0-10), 32DI, 16DO, 24 AI(Pt1000) (в другом помещении его каплер висит, там еще больше)
второй - 52AI(4-20), 12AO(0-10), 176DI, 48DO, 88AI(Pt1000), 2 RS485. Пожзе его еще догрузили портами, т.к. добавилось датчиков и механизмов.

А теперь прикинем что это все на гОВНЕ  бы собиралось? Какого размера ему был бы нужен шкаф? Сколько проводов и человеко-часов сматывания проводки и прописывания всего этого железа? Как я уже и писал, на RSax висит еще 12х2 насоса, у каждого из которых еще по 70-100 параметров контрольных. Какой шанс что-то провтыкать в процессе сборки и потом ловить глюки? Все клемники - быстрозажимы, у барана под отвертку.

Есть и другие моменты... Например, на 8202модельку 2.3м программа с тремя десятками страниц визуализации заливается секунд 15-20 через инет. У ваго есть свои либы, которых, часто не встретишь у других, например для работы по HTTP и для парсинга XML. Вроде мелочь, а позволяет управлять контроллером напрямую с сайта или юзерской прилоги, а так-же вываливать в них данные. Работет с сетевыми переменными, что позволяет синхронизировать на нескольких контроллерах целые ветки структуры. Благодаря удобному мастеру, можно в к-ве каплера пользовать шо угодно. У нас, например есть свои платки 16 DIO, 48DO|16DI, 32DI c мбтсп. Их в мастере прописали однажды, теперь просто импортируем сколько надо. Контроллер голый в подвале, платки езером по щитам на допконтакты автоматов и к светильникам, в итоге, за копейки тотальный контроль освещения с точностью до светильника.
Название: Re: Языки программирования контроллеров
Отправлено: TOPans от 26 Марта 2017, 13:13:30
Дороже овна значительно :)
Сама тушка(без IO) ок 400-600уе, модуля к ней 70-200уе. Опять-же, модуля можно и от барана брать, но это не то совсем.
НО! цена окупается простотой и компактностью. Я выше скидывал фото моего "любимчика":

Спасибо за развёрнутый ответ!
Действительно получается очень компактно, удобно и красиво. Если не секрет, что это за проект вы реализовывали на фото?
Принтер для кембриков какой используете?
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 27 Марта 2017, 09:44:33
Принтер "феникс-контакт". Проект - котельня. На котельне литовские "мастера" налажали с гидравликой, потому пришлось отходить от штатного управления. В итоге контроллеры котлов управляют только горелками, и то так как мы их просим, а мощность, подмесы, добавление/изъятия из каскада, гарячий резерв, догрев воды с чилеров - это уже проблема моих контроллеров (там еще 2 есть, ханивел(лон к котлам) и валсена(RS и м-бас к счетчикам)). На котельне: 4 котла по 1.6 мВт, 3 ветки ГВС, 6 веток отопления, утилизация тепла с чилеров, автоматические фильтра, учет ресурсов и прочие мелочи.
Название: Re: Языки программирования контроллеров
Отправлено: Teodor от 14 Сентября 2017, 10:48:58
Пришла моя очередь тупить. Есть каплер 750-333 (профибас). Надо его протестить. Контроллер 750-8208 (мастер) еще не приехал, зато есть Siemens PC Adapter USB A2 и ни малейшего понимания что это такое вообще...

Его можно как то запользовать без симатика и прочей семеновской лабуды?