PDA

Просмотр полной версии : ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)



Страницы : 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

вапросик
06.11.2013, 14:31
день добрый,форумяне!

сейчас осваиваю изделие ОВЕН ПЛК-63 и возник ?

в описании на библиотеку Work_Mode в приложении Б приведены коды на символы ЖКИ,
однако-в примерах функций ShowReal() и ShowString() показаны сами строки или числовые значения,

как непосредственно указывать коды в этих функциях - можно привести простые примерчики?

capzap
06.11.2013, 14:43
хорошо, а описание самих блоков?
Ну не знаю я английский язык, учил в детстве немецкий,да и после учебы применять его негде было,забыл я его.

У Вас КДС на русском? Открываете справку онлайн и ищите внизу дерева стандартные библиотеки

kolyan
06.11.2013, 14:49
день добрый,форумяне!

сейчас осваиваю изделие ОВЕН ПЛК-63 и возник ?

в описании на библиотеку Work_Mode в приложении Б приведены коды на символы ЖКИ,
однако-в примерах функций ShowReal() и ShowString() показаны сами строки или числовые значения,

как непосредственно указывать коды в этих функциях - можно привести простые примерчики?

Например, нужно вывести на экран символ "стрелка вверх".
По таблице находите её код: А1.
И в строке это будет выглядеть:

ShowString(0, 15, 0,'$A1' );

В моём примере, символ "строка вверх" будет выведен в 15-м столбце нулевой строки экрана.

вапросик
06.11.2013, 15:08
теперь понял=======все просто.

oka859
06.11.2013, 15:43
нашел, спасибо

kolyan
06.11.2013, 18:22
Здравствуйте!

Связка: ПЛК-73М + радиомодем "Спектр-433" в прозрачном режиме (радиоудлинитель RS-485) + радиомодем "спектр-433 IO" с 4-мя входами и 4-мя выходами на борту.
Задача: с помощью ПЛК-73 опрашивать входы (Функция 02 Modbus, адрес 0..3) и управлять выходами (функция 15 Modbus, адрес 0..3) удалённого радиомодема "спектр-433 IO".
Во вложении - пример.
Проблема в том, что связь между ПЛК и "Спектр-433IO" нормальная, аварии связи нет, но не получается ни управлять выходами модема ни получать данные со входов. Чувствую, что проблема в расшифровке содержимого буффера чтения и в неправильной записи в буффер передачи. Но нигде толком не нашёл, как работать с именно с функциями 02 и 15 Modbus, в плане буфферов.
Если кто в курсе, помогите, пожалуйста!
Желательно, простым примером.

Ни у кого вариантов нет?...

zendo057
06.11.2013, 20:13
как бы необходимо очень осторожно использовать ТР при множественном его использовании, своевременно сбрасывать,

А как сбросить.Переслать ноль? .Компилятор не принимает.

capzap
06.11.2013, 20:15
tp ( in:=false, pt:=T#0s );
как то так должно сработать и не совсем понятно причем тут компилятор, куда Вы ноль присваиваете?

Коля О
07.11.2013, 01:28
Доброго времени суток уважаемые форумчане. Прошу подсказать решение одной проблемки. Читаю регистры импортного частотника по Модбасу в формате WORD - например частота 37,5Hz читается как 375 и т.д. В мануале на частотник написано что запятую мол поставите в уме, мне то все понятно а вот операторы тупят по черному. Подскажите пожалуйста как мне преобразовать эти данные чтобы была запятая. Данные пока вывожу в визуализацию КДС.

RV9WFJ
07.11.2013, 07:06
rHz:=WORD_TO_REAL(wHz)*0,1

RV9WFJ
07.11.2013, 07:12
Ни у кого вариантов нет?...Вы ModBus.lib используете. Тогда там особо разницы нет между 01,02,03,04 кроме номера команды и между 10,15,16 аналогично. Вы все равно работаете с регистрами а не с битами, соответственно из полученного регистра получаем биты а перед записью из битов формируем один регистр.

oka859
07.11.2013, 12:12
подскажите, мне нужен таймер с задержкой на включение и задержкой на выключение, с входами пуск и стоп. где мне его найти? также нужен блок Триггер, с 2мя значениями константы,где его найти . например давление воды мне нужно на выходе в пределах 6-7 градусов. при падении -превышении заданных параметров система останавливается. какой блок мне использовать?

kolyan
07.11.2013, 12:21
Вы ModBus.lib используете. Тогда там особо разницы нет между 01,02,03,04 кроме номера команды и между 10,15,16 аналогично. Вы все равно работаете с регистрами а не с битами, соответственно из полученного регистра получаем биты а перед записью из битов формируем один регистр.

Большое спасибо за ответ!

Очень напрягает, что в описании библиотеки ModBus.lib нигде нет описания самого принципа работы с буффером.
Написано просто, что это буффер Array [0..255] of Byte.
А как работать с данным буффером, как правильно в него записывать и из него читать - непонятно.
Ведь если про это нигде нельзя прочитать, то как же можно уяснить принцип работы?

P.S. Вопрос к модераторам: если можно, дайте ссылочку, где можно почитать про работу с данным буффером.

oka859
07.11.2013, 17:33
собрал почти полную схему на подобии функциональных блоков (Шнайдер зелио) ( как по ссылке которую выложил раньше) и столкнулся с проблемой,
1) верхнее поле значения переменных. я не врубаюсь, как и что тут писать, зачем это делать, если я уставку уже приписал к блоку.
2) это когда создал блок, и после редактирования верхней строки выскакивает окошко объявления переменной. выберите класс, тип. объясните, зачем?

Коля О
07.11.2013, 18:40
rHz:=WORD_TO_REAL(wHz)*0,1
Спасибо большое! Я чего-то сам затупил, начал думать как разложить регистр на биты и там где-то тулить запятую.

kolyan
07.11.2013, 20:10
Большое спасибо за ответ!

Очень напрягает, что в описании библиотеки ModBus.lib нигде нет описания самого принципа работы с буффером.
Написано просто, что это буффер Array [0..255] of Byte.
А как работать с данным буффером, как правильно в него записывать и из него читать - непонятно.
Ведь если про это нигде нельзя прочитать, то как же можно уяснить принцип работы?

P.S. Вопрос к модераторам: если можно, дайте ссылочку, где можно почитать про работу с данным буффером.

Господа из техподдержки, жду Вашего совета...

capzap
07.11.2013, 20:24
Господа из техподдержки, жду Вашего совета...

ну посмотрите пример http://kipshop.ru/Primeri/DevicesOwen/02_PLC1xx+%20SI30_Modbus_Lib.zip
в нем конечно не написан ответ на Ваш вопрос, но есть много объясняющих моментов

И взывать к помощи тех.поддержки я бы стал если бы на сайте не нашел нужной информации, а её уж тут предостаточно, заходите на http://www.owen.ru/catalog/67395347
открывайте любой архив библиотек ОВЕН и читайте документ Описание библиотеки ФБ для работы с Modbus.pdf, который Вы видимо прочитали но не доконца и в конце идут примеры, как из буфера получить инты и реалы

kolyan
08.11.2013, 12:06
ну посмотрите пример http://kipshop.ru/Primeri/DevicesOwen/02_PLC1xx+%20SI30_Modbus_Lib.zip
в нем конечно не написан ответ на Ваш вопрос, но есть много объясняющих моментов

И взывать к помощи тех.поддержки я бы стал если бы на сайте не нашел нужной информации, а её уж тут предостаточно, заходите на http://www.owen.ru/catalog/67395347
открывайте любой архив библиотек ОВЕН и читайте документ Описание библиотеки ФБ для работы с Modbus.pdf, который Вы видимо прочитали но не доконца и в конце идут примеры, как из буфера получить инты и реалы

Спасибо за ответ!
Всё давно перечитано, но ответа ясного нет. Инты и реалы мне не нужны, а нужны функции № 02 (чтение статуса дискретных входов) и 15 (запись дискретных ячеек).
Если я правильно понимаю, то данные в буффере для разных модбас команд распределяются по-разному, оттого и вопрос возник. С помощью Лектуса ОРС сервера и Мастер скады всё прекрасно опрашивается и работает.
А с ПЛК-73 - не получается.

P.s. Я никогда не сетовал на якобы плохую документацию "Овен", но есть один пробел - это описание библиотеки Modbus.lib.
Примеры есть, согласен, но только для определенных команд, в основном - для инт и реал.
И мало того - в этих примерах напрочь отсутствуют пояснения, а каким же всё-таки образом происходит получение данных из буффера, голый код - и всё.

capzap
08.11.2013, 12:31
Ну и возьмите тот же ИНТ, соберите в него все дискретные сигналы и отправте, по сути ни чего не меняется, по линии связи передается такой же набор байт по длинне. Если нет какого то специфичного оборудования, то нужно использовать только 3 и 16 функции, меньше головной боли

kolyan
08.11.2013, 15:07
Ну и возьмите тот же ИНТ, соберите в него все дискретные сигналы и отправте, по сути ни чего не меняется, по линии связи передается такой же набор байт по длинне. Если нет какого то специфичного оборудования, то нужно использовать только 3 и 16 функции, меньше головной боли

В паспорте на радиомодем указано, что запись в дискретные выходы осуществляется функцией № 15, а чтение с дискретных входов - функцией № 02.
capzap и RV9WFJ, Вам большое спасибо за участие, буду пытаться разбираться.

Хотя, очень удивлён отсутствием ответа на данный мой вопрос модераторов...
Казалось бы, чего может быть проще двух примеров (пускай даже просто примеров, без объяснения сути).

Людям на форуме и более простые вещи (которые подробнейшим образом разжеваны и в хэлпе КДС и в книгах) - без проблем разъясняют, да ещё и с готовыми примерами (как вызвать таймер и.т.п.).
А здесь - вещи, описания которых НЕТ в руководстве к библиотеке.
Ну, да ладно, как - нибудь справимся.
Тема закрыта.

capzap
08.11.2013, 15:20
В паспорте на радиомодем указано, что запись в дискретные выходы осуществляется функцией № 15, а чтение с дискретных входов - функцией № 02.
capzap и RV9WFJ, Вам большое спасибо за участие, буду пытаться разбираться.

Хотя, очень удивлён отсутствием ответа на данный мой вопрос модераторов...
Казалось бы, чего может быть проще двух примеров (пускай даже просто примеров, без объяснения сути).

Людям на форуме и более простые вещи (которые подробнейшим образом разжеваны и в хэлпе КДС и в книгах) - без проблем разъясняют, да ещё и с готовыми примерами (как вызвать таймер и.т.п.).
А здесь - вещи, описания которых НЕТ в руководстве к библиотеке.
Ну, да ладно, как - нибудь справимся.
Тема закрыта.

радиомодем всего лишь устройство передачи данных, что за прибор у вас с модбасовскими дискретными входами/выходами
И почему модераторы должны что то по модбас отвечать, это не ими созданный протокол http://ru.wikipedia.org/wiki/Modbus
вторая функция подразумевает передачу нескольких бит, сколько - это указывается в самом запросе, в ответе идет уже отсеянный массив байт только данных, которые Вам всё равно придется расщеплять с помощью той же .Х

kolyan
08.11.2013, 15:43
радиомодем всего лишь устройство передачи данных, что за прибор у вас с модбасовскими дискретными входами/выходами
И почему модераторы должны что то по модбас отвечать, это не ими созданный протокол http://ru.wikipedia.org/wiki/Modbus
вторая функция подразумевает передачу нескольких бит, сколько - это указывается в самом запросе, в ответе идет уже отсеянный массив байт только данных, которые Вам всё равно придется расщеплять с помощью той же .Х

1). Радиомодем такой: http://www.rateos.ru/spectr433IO.shtml

2). Про модбас я их и не спрашиваю (хотя понимаю, что есть прямая связь с самим протоколом), а спрашиваю про библиотеку Modbus.lib.
А конкретно - правила получения данных из буффера.
КДС тоже не они создали, но отвечают, когда спрашиваешь.

3). Буду разбираться. Спасибо.

pozdn
10.11.2013, 13:24
Пытаюсь реализовать программу на FBD для примера ”Управление освещением в комнате”. (На входе установлены два дискретных датчика: один снаружи (ex), другой внутри комнаты (in). Когда срабатывает сначала внешний датчик, затем внутренний, это означает, что человек зашел в комнату. Когда срабатывает сначала внутренний датчик, затем внешний, это означает, что человек вышел из комнаты.) Необходимо считать количество людей в комнате. Код ниже.
10693

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

capzap
10.11.2013, 13:31
в КДС вообще то есть счетчики зачаем самостоятельно то реализовывать сложение/вычитание

pozdn
10.11.2013, 15:46
в КДС вообще то есть счетчики зачаем самостоятельно то реализовывать сложение/вычитание
Со счетчиком считает нормально, а как сделать без счетчика?

amn
10.11.2013, 16:19
Пытаюсь реализовать программу на FBD для примера ”Управление освещением в комнате”. (На входе установлены два дискретных датчика: один снаружи (ex), другой внутри комнаты (in). Когда срабатывает сначала внешний датчик, затем внутренний, это означает, что человек зашел в комнату. Когда срабатывает сначала внутренний датчик, затем внешний, это означает, что человек вышел из комнаты.) Необходимо считать количество людей в комнате. Код ниже.

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

Попробуйте использовать этот ФБ. Думаю для вашего случая он подойдет. Там внутри есть комментарии по его работе. Возможно надо будет подправить. Написан на CFC это практически то же самое, что и FBD, только лучше:).

petera
10.11.2013, 21:46
Что-то никто не любит программировать на SFC:confused:
10697

pozdn
10.11.2013, 22:20
amn и petera,большое спасибо за реальные примеры, но хотелось бы разобраться почему не работает такая простая программа.

amn
10.11.2013, 22:37
Есть еще один момент. Вполне может быть такая ситуация, когда человек подошел к комнате (пересек внешний датчик), а потом передумал входить и вернулся. А после этого из комнаты вышел человек. Как вы думаете в этом случае счетчик правильно посчитает? Да, он посчитает в другую сторону. Поэтому я бы датчики установил на небольшом расстоянии друг от друга так, чтобы человек при прохождении мимо них перекрывал бы сразу оба датчика. Тогда можно будет предусмотреть в программе эту ситуацию.

petera
10.11.2013, 22:50
amn и petera,большое спасибо за реальные примеры, но хотелось бы разобраться почему не работает такая простая программа.
Посмотрите в своей программе на строки 0003 и 0004.
Если был переход на метку m1, то сначала выполнится строка 0003 (people:=people-1), а затем выполнится строка 0004 (people:=people+1) и значение переменной people не изменится.
Если уж используете переходы в программе, то делайте правильно. Т.е после строки 0003 нужен безусловный переход, что бы строка 0004 не выполнялясь

petera
10.11.2013, 23:28
Есть еще один момент. Вполне может быть такая ситуация, когда человек подошел к комнате (пересек внешний датчик), а потом передумал входить и вернулся. А после этого из комнаты вышел человек. Как вы думаете в этом случае счетчик правильно посчитает? Да, он посчитает в другую сторону. Поэтому я бы датчики установил на небольшом расстоянии друг от друга так, чтобы человек при прохождении мимо них перекрывал бы сразу оба датчика. Тогда можно будет предусмотреть в программе эту ситуацию.
Вариант с учетом "передумал входить/выходить"
10699

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

UPD
Вложение можно скачать здесь https://drive.google.com/open?id=0B1ENDtxOet_iaGtDVVRRcVI2UVU

pozdn
11.11.2013, 22:26
Посмотрите в своей программе на строки 0003 и 0004.
Если был переход на метку m1, то сначала выполнится строка 0003 (people:=people-1), а затем выполнится строка 0004 (people:=people+1) и значение переменной people не изменится.
Если уж используете переходы в программе, то делайте правильно. Т.е после строки 0003 нужен безусловный переход, что бы строка 0004 не выполнялясь
Вот теперь стало понятно. Спасибо за подсказку и примеры программ.

Коля О
11.11.2013, 22:29
Добрый вечер. Подскажите пожалуйста кто-нибудь реально ли "прописать" измерение косинус Фи с показаний датчика активного тока и датчика напряжения. Суперточность значения не имееет, нужно для определения включения ступеней компенсации

RV9WFJ
12.11.2013, 07:50
Модули МЭ110 без проблем выдают этот параметр http://www.owen.ru/catalog/95153403

Igor.m
14.11.2013, 13:57
Подскажите что такое скрипт? Для чего он нужен? Можно ли его создать в CoDeSys?

capzap
14.11.2013, 14:08
Подскажите что такое скрипт? Для чего он нужен? Можно ли его создать в CoDeSys?
http://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D 0%B9_%D1%8F%D0%B7%D1%8B%D0%BA

kip.kkz
14.11.2013, 15:28
Подскажите, пожалуйста, что можно сделать, какие настройки поизменять. Есть трм151, регулирует по взвешенной сумме. Показания входа1 плавают в пределах +-. Из-за чего плавает вычисленное значение и трм постоянно дает сигналы больше-меньше, пытаясь выйти на уставку. Как можно уменьшить чувствительность к уставке или входа1?

Коля О
14.11.2013, 18:49
Модули МЭ110 без проблем выдают этот параметр http://www.owen.ru/catalog/95153403

Спасибо, хороший модуль, но, к сожалению, датчик тока и датчик напряжения (с выходом 0-10В) у меня на оборудовании уже стоят, оба подведены к аналоговым входам ПЛК-160

Igor.m
15.11.2013, 13:02
Как преобразовать время из конструкций TimeAndDate в форат TOD или DT? (чтобы собрать отдельные часы, минуты, секунды в одну кучу вот в такой формат ЧЧ:ММ:СС, а потом проводить операции сравнения над переменными TOD или DT)

Валенок
17.11.2013, 01:11
Наглядно - через строки, быстро - рассчитать абсолютную секунду

yurmik
19.11.2013, 15:47
где скачать библиотеку Work_Mode ?

melky
19.11.2013, 16:00
yurmik должна быть на дисках от ПЛК63, 73

http://www.owen.ru/catalog/67395347

Библиотеки ОВЕН для 63/73 ПЛК

Александр82
19.11.2013, 20:46
Добрый день уважаемые гуру !!! У меня есть один маленький вопрос. Есть плк110-60м два аналоговых модуля МВ110-8А, есть OPC Lektus(демо версия) есть скада. Но не могу связать все вмести. Настроил подключение через хаб плк с пк. С модулем аналогового ввода все получилось а вот с плк с дискретными входами тупик может есть у кого проект готовый по изучать. С УВАЖЕНИЕМ Александр за ранее спасибо.

RV9WFJ
20.11.2013, 07:37
Так в каком месте то у вас не получается с дискретными входами: ПЛК-Lectus или Lectus-SCADA? И собственно поподробнее что делали, что ожидали увидеть, что увидели. Иначе никто вам не поможет.

melky
20.11.2013, 10:07
Подскажите есть ли в CodeSys обратная связь, аналогичная OwenLogic ?

Ryzhij
20.11.2013, 11:19
Да, конструкции с обратной связью могут быть использованы в POU на языке CFC (непрерывные функциональные схемы).
А вот язык функциональных блоковых диаграмм (FBD) такой фичи не имеет, хотя и очень похож.

Александр82
20.11.2013, 11:27
Lektus не видет регистры, ПЛК лектус. Но связь с пк есть IP взял стандартный 10.0.6.10 В лектусе тоже его прописал но как подсчитать регистры не пойму нужен просто пример. До этого пробывал через АС-3 по rs485 связался с МВ110-8а все удалось и все понятно. А с плк тупик.

Ryzhij
20.11.2013, 11:42
...но как подсчитать регистры не пойму нужен просто пример. До этого пробывал через АС-3 по rs485 связался с МВ110-8а все удалось и все понятно. А с плк тупик.Для начала пропишите эти регистры в конфигурации ПЛК. Вот какие пропишите, такие и будут.

YuriBel
20.11.2013, 11:50
В ПЛК нужно создать modbus slave, привязать его к TCP, добавить в него нужное количество регистров, привязать к ним нужные переменные. А из Лектуса уже опрашивать эти регистры. Как считать их адреса, читайте в руководстве по конфигурированию контроллера.

Александр82
20.11.2013, 11:51
А где в конфигурации входов прописывается и регистра ?

Александр82
20.11.2013, 12:01
Я создал modbus slave. Привязал его к TCP создал 16DI а где регистры прописывать ?

Александр82
20.11.2013, 12:38
Спасибо буду пробовать я понял в чем проблема !!!!

melky
20.11.2013, 12:52
Ryzhij подскажите куда в CFC тыкнуть, чтобы получить обратную связь ?

По крайней мере в том виде, как это реализовано в OwenLogic вроде никак, или я ошибаюсь ?

petera
20.11.2013, 13:20
Ryzhij подскажите куда в CFC тыкнуть, чтобы получить обратную связь ?

По крайней мере в том виде, как это реализовано в OwenLogic вроде никак, или я ошибаюсь ?
:confused::confused::confused: Взять и соединить выход со входом.
10785

YuriBel
20.11.2013, 14:54
а где регистры прописывать ?
Адреса регистров нужно прописывать в Лектусе, а здесь их надо сосчитать с учетом выравнивания, как это описано в руководстве по конфигурированию контроллера. В вашем случае первые 2 регистра будут иметь адреса 0-an22 и 1-an1. после них идут битовые наборы, адреса битов в них будут от 32 и дальше, но это битовое адресное пространство, а читать данные в OPC побитно довольно разорительно, тут наверное лучше оперировать с регистрами и разбирать-собирать биты на верхнем уровне.

melky
20.11.2013, 15:07
http://www.owen.ru/forum/showthread.php?t=12691&p=123800&viewfull=1#post123800

petera в таком виде как у rovki в OwenLogic не получается. А соединяя вход и выход надо добавлять элементов. Получилось так.
Я так понимаю, что OwenLogic по команде "Обратная связь" все это делает без участия пользователя. Выпоняя некий механизм обработки ?
Аналог R тригера от rovki на CodeSys

И F тригер на элементах тоже получился

capzap
20.11.2013, 18:57
http://www.owen.ru/forum/showthread.php?t=12691&p=123800&viewfull=1#post123800

petera в таком виде как у rovki в OwenLogic не получается. А соединяя вход и выход надо добавлять элементов. Получилось так.
Я так понимаю, что OwenLogic по команде "Обратная связь" все это делает без участия пользователя. Выпоняя некий механизм обработки ?
Аналог R тригера от rovki на CodeSys

И F тригер на элементах тоже получился

Вы серьезно что ли еще не "врубились", что КДС появился раньше Лоджика и совершенно отличается, ни каких обратных связей не надо, есть окно объявлений переменных, где задаете переменные проекта и они гарантированно сохранят свое значение до следующего цикла (если это ФБ а не функция)
А то что у Вас на рисунках, так только когда Вы выполните соответствие порядку, Ваша схема работать не будет

melky
20.11.2013, 21:04
capzap, насколько помню, оно соответствует порядку. данную операцию выполнял. rovki уже объяснил, что понятие "Обратная связь" для OwenLogic это задержка сигнала на 1 цикл.

Отсюда вопрос, можно ли в CodeSys выполнить простым методом аналогичную задержку сигнала на 1 цикл ?

Валенок
20.11.2013, 22:49
capzap, насколько помню, оно соответствует порядку.
Не соответствует - просто такая фича. Сделайте "по потоку" и всё ёк. В сравнительно крупном проекте случайно сделав "по потоку", потеряет эту фичу и придется разрывать, снова по потоку, снова соединять. На любителя. Наглядней и понятней через промежуточную переменную, она неявно есть и в Вашем случае и в лоджике.

amn
20.11.2013, 23:04
capzap, насколько помню, оно соответствует порядку. данную операцию выполнял. rovki уже объяснил, что понятие "Обратная связь" для OwenLogic это задержка сигнала на 1 цикл.

Отсюда вопрос, можно ли в CodeSys выполнить простым методом аналогичную задержку сигнала на 1 цикл ?


VAR_INPUT
in:BOOL;
END_VAR
VAR_OUTPUT
q:BOOL;
END_VAR
VAR
a:BOOL;
END_VAR

q:=a;
a:=in;

Может кто проще придумает?:)

melky
20.11.2013, 23:29
amn и как это будет работать внутри схемы CFC ? банально применительно к варианту R тригера ?

amn
20.11.2013, 23:54
melky в схеме rovki "R-триггер", там где надо сделать задержку сигнала на один цикл вставляете этот ФБ (между NOT и AND)

capzap
21.11.2013, 09:29
melky в схеме rovki "R-триггер", там где надо сделать задержку сигнала на один цикл вставляете этот ФБ (между NOT и AND)

Поставте на вход блока И вместо 75 блока переменную b и эффект будет тем же

melky
21.11.2013, 09:43
capzap Проверил только что, эффекта НОЛЬ, как R тригер оно уже не работает.
переменная c для отлова состояния, она никогда в 1 не становится при таком варианте.
При инверсии b при a=1 выход начинает менять состояние с 0 на 1 и обратно, что тем более не соответствует R тригеру.

amn ваш вариант работает. Извиняюсь, сперва не добавил инверсию...

capzap
21.11.2013, 11:08
В этом случае может и не работает,но то что состояние переменнаой на выходе блока,на вход этого же блока поступит с опаздыванием на один цикл, это однозначно и рисовать линию связи не обязательно

melky
21.11.2013, 11:25
capzap пробовал и так и эдак. Хоть линией, хоть переменная b. Поведение совершенно не соответствует R тригеру.
Просто изучаю CodeSys по большей части перетаскивая проектики, макросы из сред ПР от Овен, Logo, ZelioLogic.
Мне привычнее CFC, это как схема компьютера, наглядная и понятная, за исключением того, что не умеет работать паралельно много разных веток, как в реальном изделии на той же логике ТТЛ к примеру.
При этом на ST можно реализовать больше и проще, с одной стороны я с ним разберусь (чужая программа), а вот написать свою с большим пребольшим трудом. Для меня это из разряда владения английским, понимать понимаю, сказать не могу :)

capzap
21.11.2013, 13:19
capzap пробовал и так и эдак. Хоть линией, хоть переменная b. Поведение совершенно не соответствует R тригеру.
Просто изучаю CodeSys по большей части перетаскивая проектики, макросы из сред ПР от Овен, Logo, ZelioLogic.
Мне привычнее CFC, это как схема компьютера, наглядная и понятная, за исключением того, что не умеет работать паралельно много разных веток, как в реальном изделии на той же логике ТТЛ к примеру.
При этом на ST можно реализовать больше и проще, с одной стороны я с ним разберусь (чужая программа), а вот написать свою с большим пребольшим трудом. Для меня это из разряда владения английским, понимать понимаю, сказать не могу :)

Ну есть же в КДС эти тригеры, зачем самому то делать, а более сложные вещи лежат в oscad.de


PS мой вариант

melky
21.11.2013, 13:39
capzap понять работу тех или иных вещей проще на чем-то простом, ну и тема обратной связи выплыла из темы по ПР. Так, чисто для тренировки :)

Валенок
21.11.2013, 20:42
Все 3 варианта из #2535,#2538 ведут себя по разному. Который правильный то ?

amn
21.11.2013, 21:23
Правильный тот, который работает как R_TRIGER. Если в варианте #2538 поставить инверсию перед блоком MOVE то он и будет правильный.

melky
21.11.2013, 21:29
Валенок а они все неправильные, при a=1 выход b=1 а не срабатывает по переднему фронту и отключается. (только что попробовал)

Седня пробовал переделать один макрос от AI где есть "обратная связь" в OwenLogic - не получилось, ведет себя неадекватно по сравнению с простыми элементами типа R и F тригера. Так что совсем непонятно, как работает ПР110(114) и как там точно реализована эта обратная связь.....

Да, действительно, если стоит инверсия, то работает как и R тригер

capzap
22.11.2013, 05:51
Все 3 варианта из #2535,#2538 ведут себя по разному. Который правильный то ?

А что надо было еще и правильно написать :) я то всё пытался показать что никаких линий вести не надо,просто состояние переменной последнего блока передастся в следущем цикле блока выше

Валенок
22.11.2013, 09:05
Думал что здесь нахаляву узнаю таки - что такое R-тригер ? )))) Даже в ответах шифруют. Наверно супер штука.
Кстати для melky#2535 - отличие этих вариантов не только инверсия, там есть более принципиальная разница.

melky
22.11.2013, 09:49
Валенок, да я просто на R и F тригерах тренировался :) Но не все так просто. В OwenLogic вообще непонятно как работает реле, потому что положение FB не сильно то влияет на исполнение кода, в отличие от CodeSys, тут чуть неправильный порядок и программа работает совсем иначе. Немного усложняет перенос макросов с ПР. Или вообще переделывать алгоритм или растягивать FB так, чтобы они работали в необходимой последовательности.

Игнат Левагин
26.11.2013, 14:39
Добрый день.
Моя проблема заключается в том, что я не могу объявить SFC-флаги в CoDeSys v3.5. При объявлении переменной SFCInit в области объявлений (как в CoDeSys v2.3) компилятор выдаёт предупреждение: "Использование переменной SFC-флага 'SFCReset' отключено!". В меню "Вид" - "Properties" - "Установки SFC" поля для галочек не доступны.
В чём может быть проблема?

Денис_Гуливатенко
26.11.2013, 17:08
Объясните пожалуйста как работает чтение из буфера (код из примеров и полезностей: 08. Примеры программ и полезности\Samples_plc63-73\07_ModBus_And_OwenNet\ Modbus запись Int и Real (FBD).pro)


IF cmpl THEN
IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
END_IF
master1:=1; (*переходим к выполнению следующего ФБ*)
END_IF
К чему там OR, там же нет никаких условий?

amn
26.11.2013, 18:01
Объясните пожалуйста как работает чтение из буфера (код из примеров и полезностей: 08. Примеры программ и полезности\Samples_plc63-73\07_ModBus_And_OwenNet\ Modbus запись Int и Real (FBD).pro)


К чему там OR, там же нет никаких условий?

Модбас имеет свойство менять местами байты в регистре. При чтении из буфера сразу меняем их местами.

BYTE_TO_WORD(BUFFER[1]) - содержимое младшего байта. Берется из 1-го элемента массива буфера (8 бит), BYTE_TO_WORD меняет тип переменной на WORD (16 бит). В результате старшие 8 бит будут нули.

SHL(BYTE_TO_WORD(BUFFER[0]),8) - содержимое старшего байта. Берется из 0-го элемента массива буфера (8 бит), меняем тип переменной на WORD (16 бит). В результате старшие 8 бит будут нули. Оператором SHL сдвигаем биты влево на 8 позиций, оставшиеся биты справа заполняются нулями. В результате старшие 8 бит имеют значение, а младшие 8 бит будут нули.

OR - это булева операция. Она применяется к двум получившимся значениям побитно. В результате получается сарший байт имеет значение 1-го элемента массива буфера, младший байт имеет значение 0-го элемента массива буфера.

Денис_Гуливатенко
26.11.2013, 18:07
Спасибо! Теперь все понятно!

Денис_Гуливатенко
29.11.2013, 17:39
Где взять расшифровку ошибок к библиотеке ModBus?

amn
29.11.2013, 19:04
из библиотеки modbus.lib в разделе объявления переменных функционального блока MB_UNI_IO
(* MODBUS Exception Codes *)
EXC_NO: BYTE:= 16#00; (* NO EXCEPTION *)
EXC_HW: BYTE := 16#FE; (* HARDWARE ERROR *)
EXC_TO: BYTE := 16#FF; (* TIMEOUT ERROR *)

Стандартные коды ошибок Модбас есть еще в Википедии
http://ru.wikipedia.org/wiki/Modbus

kukla100
01.12.2013, 15:09
Всё таки как правильно свой проект запихивать в ПЛК что бы после выключения кодесис не кричал, что в ПЛК нет программы?

amn
01.12.2013, 15:32
посмотрите по этой ссылке
http://www.owen.ru/forum/showthread.php?t=15933&p=120853&viewfull=1#post120853

yaroslavcik
05.12.2013, 16:41
Здравствуйте!

Хочу соединить плк 150 через Ethernet для отладки прошивки, так и не нашел какой кабель для этого нужен и его распайку. Есть что то подобное в каталоге для плк304/8, но сама таблица вводит в заблуждение (таблица не соответствует рисунку распайки).

Где можно увидеть правильную распайку кабеля ?!

Спасибо!

petera
05.12.2013, 16:51
Здравствуйте!

Хочу соединить плк 150 через Ethernet для отладки прошивки, так и не нашел какой кабель для этого нужен и его распайку. Есть что то подобное в каталоге для плк304/8, но сама таблица вводит в заблуждение (таблица не соответствует рисунку распайки).

Где можно увидеть правильную распайку кабеля ?!

Спасибо!
Идете в любую ближайшую компьютерную лавку и покупаете стандартный патчкорд нужной вам длины.

capzap
05.12.2013, 17:08
Если комп древний,то в википедию на слово витая пара,там есть картинки.
И вопрос, Вы реально разъем хотите паять или это игра слов

yaroslavcik
05.12.2013, 17:11
не так выразился, есть кабель и есть специальная обжимка для RJ.

Ноут новый, кабель собрал, сейчас буду пробовать все это дело соединить...


ЗЫ все заработало!

Igor.m
12.12.2013, 08:54
Подскажите пожалуйста будет ли работать следующая связка : (Диспетчерская) ПК - ПЛК - ПМ01 - - - - - - - (объект) ПМ01-МОДУЛЬ ВВОДА/ВЫВОДА?

Николаев Андрей
12.12.2013, 10:55
Только в режиме CSD, когда ПЛК "дозванивается".

Igor.m
12.12.2013, 11:12
Спасибо, понятно. А нужен ли на сим-карте постоянный IP ? и еще вопрос- объектов до которых ПЛК должен дозваниваться 5, будет ли тогда токая схема работать, по очереди дозваниваясь на 5 точек, самый удаленный объект от ДП на расстоянии около 15км, справится ли ПМ01?

RV9WFJ
13.12.2013, 09:02
У вас сотовый телефон справляется когда расстояние до объекта 15 км? Ваш вопрос звучит примерно так же. Если объектов 5 то логичнее использовать GPRS, тогда или ПЛК на каждый объект или модем не ПМ01 а с прозрачным портом (они дороже).

Igor.m
13.12.2013, 10:57
Если объектов 5 то логичнее использовать GPRS, тогда или ПЛК на каждый объект или модем не ПМ01 а с прозрачным портом (они дороже).

Почему либо ПЛК на каждый объект либо модем с прозрачным портом? Что значит - модем с прозрачным портом и как это реализовать?

Igor.m
13.12.2013, 11:33
Если объектов 5 то логичнее использовать GPRS

Почему логичнее в данном случае использовать GPRS?
Остается непонятным как связывать ПЛК с ПК на ДП, при том что к ПЛК еще модем подключен. Какие параметры связи в ОПС сервере прописывать чтобы ОПС-сервером опрашивались удаленные модемы?

RV9WFJ
14.12.2013, 07:29
А вам ПЛК на стороне ДП зачем? Он регулирующую функцию выполняет? Если нет то скорее всего он там лишний. Что касается прозрачного порта, то ПМ01 так не умеет, и Овен таких не делает. Поищите в интернете.
Если ПМ01 уже купили то можно и через CSD попробовать сделать, только опрос будет в цикле дозвонов. Т.е. диспетчер будет подключен в один момент времени к одному объекту. Т.е. примерно 40-90 сек на объект. Если такое вас устраивает и тариф безлимит на разговоры то можно и на CSD.
P.S. Если через GPRS то в ДП SIM со стат. IP обязательно, или на всех объектах.

Igor.m
14.12.2013, 12:04
Спасибо, все довольно популярно объяснили. А ПЛК на стороне ДП мне для того чтобы более менее оперативно подать управляющий сигнал на объект при аварии, а то что 40-90 сек на опрос объекта - вполне устроит.

Коля О
15.12.2013, 17:09
Добрый день. Подскажите пожалуйста как исправить глюк. КДС 2.3.9.38 на Винде7*86 в коментариях на русском пишет крокозяблы, комп старый XP не устанавливается вообще, а семерка с трудом. Кроме этой версии КДС другие не идут - вообщем все плохо. Нужно срочно доработать проэкт, подскажите что можно сделать

RV9WFJ
16.12.2013, 08:43
Думаю что в настройках CoDeSys просто шрифт по умолчанию сменить на тот, который нормально отображаться будет. P.S. Никогда не встречал компа где 7ка работает а XP нет :-)

Serush
16.12.2013, 11:32
библиотека Util в Codesys имеется, но операторы почему то не работают, в чем проблема?

Николаев Андрей
17.12.2013, 12:48
Надо подключить библиотеку

Ryzhij
17.12.2013, 14:51
Никогда не встречал компа где 7ка работает а XP нет :-)Среди ноутов мне такие попадались - у некоторых Toshiba надо было перешивать BIOS. Сам производитель об этом предупреждал.

melky
17.12.2013, 15:08
Думаю что в настройках CoDeSys просто шрифт по умолчанию сменить на тот, который нормально отображаться будет. P.S. Никогда не встречал компа где 7ка работает а XP нет :-)

Полно, после появления новых контроллеров винтов. Просто драйвера надо интегрировать в ХР для работы, а по умолчанию она работать не будет.

yurmik
19.12.2013, 16:23
Добрый день. Есть ли ограничение на количество программируемых объектах в визуализации (в свойствах объекта ставится галочка и присваивается имя объекта)?. Возникает проблема. При большом количестве этих объектов некоторые из них становятся неактивными.

Димон1
20.12.2013, 13:55
извините за тупой вопрос, но как полностью очистить ПЛК

drvlas
20.12.2013, 15:31
как полностью очистить ПЛКСпиртом :)

RV9WFJ
21.12.2013, 06:31
извините за тупой вопрос, но как полностью очистить ПЛКCDS->Меню->Онлайн->Сброс(заводской)

capzap
23.12.2013, 20:01
кусочек визуализации: управление цветом объекта

Kovich
24.12.2013, 11:56
Здравствуйте, 5 лет занимаюсь диспетчеризацией на системах Асуд 248, Сатурн. И тут появился первый проект, в котором от нас требуют программы не обычные предназначенные именно для этих систем, а универсальную Мастер скаду. В общем плюс к этому добавились Овены. На объекте у меня стоят Плк 100 и Плк 160. На данный момент от меня пока что требуется только сменить ip адреса в них, но и тут возникла проблема... Скачал я Кодесис установил таргеты, даже библиотеки и проекты мне дали для моих корпусов. На тех плк которых я знал какие ip уже поставили до меня,я смог спокойно подключиться по Ethernet и через кодесис прописать свои ip. Но на тех на которых ip я не знаю, пытаюсь подключиться по usb кабелю, и по кабелю Rs232. Скорость в настройках компьютера и программы на свой ком порт указываю одинаковыми, но в итоге при попытке подключения пишет "ошибка связи #0" Подскажите пожалуйста мне чайнику в чём может быть проблема.

Ryzhij
24.12.2013, 13:10
Посмотреть IP ПЛК можно через ГиперТерминал, подключившись к контроллеру через отладочный порт Debug по RS232.
Об этом есть в РЭ.
Этому посвящён видео-урок на диске "Navigator_PLC_DVD" (http://kipshop.ru/CoDeSys/Navigator_PLC_DVD_v3.iso) ( Navigator_PLC_DVD_v3\09. Видео инструкции\08 Просмотр данных о ПЛК через Гипертерминал.avi)

Удачи!

Medved
24.12.2013, 14:15
Добрый день! В вопросах програмирования новичек. Есть два проекта.. При заливке первого все работает отлично.. При заливке второго .. проект записывается но через некоторое время выходит сообщение "ошибка связи #0 произошло отключение" при повторной компеляции проекта выходит сообщение " невозможно создать символьный файл..... SDB" В чем проблема? Как вылечить?

Kovich
25.12.2013, 00:05
Посмотреть IP ПЛК можно через ГиперТерминал, подключившись к контроллеру через отладочный порт Debug по RS232.
Об этом есть в РЭ.
Этому посвящён видео-урок на диске "Navigator_PLC_DVD" (http://kipshop.ru/CoDeSys/Navigator_PLC_DVD_v3.iso) ( Navigator_PLC_DVD_v3\09. Видео инструкции\08 Просмотр данных о ПЛК через Гипертерминал.avi)

Удачи!
Я извиняюсь но в видео говорится нажать кнопку сброс на плк. Значит ли это что у меня полетит вся установленная прошивка до меня и всякие настройки?

Ryzhij
25.12.2013, 06:11
Никто никуда не улетит. У очистки ПЛК процедура несколько иная.
Не нравится "сброс" - снимите и подайте питание. Но "сброс" кошернее и даже безопаснее.

RV9WFJ
25.12.2013, 07:58
Я извиняюсь но в видео говорится нажать кнопку сброс на плк. Значит ли это что у меня полетит вся установленная прошивка до меня и всякие настройки?Сброс это обычная перезагрузка.

RV9WFJ
25.12.2013, 08:01
Добрый день! В вопросах програмирования новичек. Есть два проекта.. При заливке первого все работает отлично.. При заливке второго .. проект записывается но через некоторое время выходит сообщение "ошибка связи #0 произошло отключение" при повторной компеляции проекта выходит сообщение " невозможно создать символьный файл..... SDB" В чем проблема? Как вылечить?Связь в момент заливки рвется или уже после при просмотре состояния переменных? Еще попробуйте для начала перед компиляцией нажать очистить все.

Medved
25.12.2013, 10:59
Связь прерывается после того как проект запишется.

melky
26.12.2013, 18:33
Подскажите над реализацией таймера со сбросом.
В oscat есть TP_1 но он использует внутри блока T_PLC_MS, только вот незадача, где ж его взять без ПЛК ?

capzap
26.12.2013, 18:37
Подскажите над реализацией таймера со сбросом.
В oscat есть TP_1 но он использует внутри блока T_PLC_MS, только вот незадача, где ж его взять без ПЛК ?
замените на TIME()

petera
26.12.2013, 20:03
Подскажите над реализацией таймера со сбросом.
В oscat есть TP_1 но он использует внутри блока T_PLC_MS, только вот незадача, где ж его взять без ПЛК ?
:confused::confused::confused:
Там же где и TP_1 - в библиотеке OSCAT

FUNCTION T_PLC_MS : DWORD
VAR CONSTANT
DEBUG : BOOL := FALSE;
N : INT := 0;
OFFSET := 0;
END_VAR
VAR
TEMP : DWORD := 1;
END_VAR
T_PLC_MS := TIME_TO_DWORD(TIME());
IF DEBUG THEN
T_PLC_MS := SHL(T_PLC_US,N) OR SHL(TEMP,N)-1 + OFFSET;
END_IF;
Упреждая вопрос -где взять T_PLC_US? Там же где и TP_1 и T_PLC_MS - в библиотеке OSCAT

FUNCTION T_PLC_US : DWORD
VAR CONSTANT
DEBUG : BOOL := FALSE;
N : INT := 0;
OFFSET := 0;
END_VAR
VAR
TEMP : DWORD := 1;
END_VAR
T_PLC_US := TIME_TO_DWORD(TIME())*1000;
IF DEBUG THEN
T_PLC_US := SHL(T_PLC_US,N) OR SHL(TEMP,N)-1 + OFFSET;
END_IF;

melky
26.12.2013, 23:02
petera, нашел, что-то в первый раз прогрлядел и подумал это функция самого ПЛК
з.ы. попробую и с TIME еще.

capzap точно работает, спасибо за наводку. и доп функций не надо в принципе

olegteh
29.12.2013, 19:47
Добрый вечер. Прошу помощи в реализации алгоритма. Имеем два помещения, в каждом по одной лампе и по три проходных выключателя. Как реализовать выключение всех ламп одним выключателем "kn7" (см. схему).

amn
29.12.2013, 22:18
Добрый вечер. Прошу помощи в реализации алгоритма. Как реализовать выключение всех ламп одним выключателем "kn7" (см. схему).

Вложения не читаются.


Имеем два помещения, в каждом по одной лампе и по три проходных выключателя.

Т.е. всего 2 лампы и 6 выключателей?


Как реализовать выключение всех ламп одним выключателем "kn7" (см. схему).

Т.е. это уже 7-й выключатель, который предназначен только для выключения?

Выключатели в виде кнопки?

---

k1,k2,k3 - выключатели (кнопки) в помещении 1
k1,k2,k3 - выключатели (кнопки) в помещении 2
k7 - выключатель всех лампочек
lamp1 - лампочка в помещении 1
lamp2 - лампочка в помещении 2

smk1635
29.12.2013, 22:55
Добрый вечер. Прошу помощи в реализации алгоритма. Имеем два помещения, в каждом по одной лампе и по три проходных выключателя. Как реализовать выключение всех ламп одним выключателем "kn7" (см. схему).

Если это имели ввиду.

olegteh
29.12.2013, 23:45
Да все правильно. Спасибо за подсказку.

Коля О
02.01.2014, 23:00
Добрый вечер. Уважаемые форумчане, подскажите пожалуйста, в связке "ПЛК160+Панель оператора" влияет ли на время цикла программы кто будет мастером а кто слейвом

Валенок
02.01.2014, 23:07
не влияет.

Коля О
02.01.2014, 23:26
Большое спасибо!

Александр Ушаков
10.01.2014, 05:19
Здравствуйте!
Подскажите, пожалуйста, в чём подвох, вот такое выражение на ST компилируется без замечаний 11324 а на LD с предупреждением11325.
Спасибо.

Ренат)
10.01.2014, 13:17
добрый день, подскажите пожалуйста литературу для самостоятельного изучения языка программирования ST???

petera
10.01.2014, 13:37
Здравствуйте!
Подскажите, пожалуйста, в чём подвох, вот такое выражение на ST компилируется без замечаний 11324 а на LD с предупреждением11325.
Спасибо.
Предупреждение это не ошибка:)
Обе конструкции будут работать одинаково, подвоха нет.
Просто строка на языке LD это фрагмент релейной схемы и предполагает в начале комбинацию "контактов", а завершается "катушкой". Эта "катушка" принимает значение результата логических операций состояния "контактов".
Так как Ваш POU KALIBR_POU не имеет булевого выхода, то компилятор и выдает предупреждение, а за одно сообщает, что результату выполнения логических операций между контактами этой строки будет присвоено значение True. Только это значение не будет присвоено ни кому, т.к. строка не заканчивается "катушкой"

smk1635
10.01.2014, 15:06
добрый день, подскажите пожалуйста литературу для самостоятельного изучения языка программирования ST???

Игорь Викторович Петров, "Программируемые контроллеры. Стандартные языки и приёмы прикладного программирования".

Александр Ушаков
11.01.2014, 08:26
Предупреждение это не ошибка:)
Обе конструкции будут работать одинаково, подвоха нет.
Просто строка на языке LD это фрагмент релейной схемы и предполагает в начале комбинацию "контактов", а завершается "катушкой". Эта "катушка" принимает значение результата логических операций состояния "контактов".
Так как Ваш POU KALIBR_POU не имеет булевого выхода, то компилятор и выдает предупреждение, а за одно сообщает, что результату выполнения логических операций между контактами этой строки будет присвоено значение True. Только это значение не будет присвоено ни кому, т.к. строка не заканчивается "катушкой"

petera, спасибо, Вам за разьяснения.

Ренат)
11.01.2014, 10:33
Игорь Викторович Петров, "Программируемые контроллеры. Стандартные языки и приёмы прикладного программирования".
спасибо ))))

Ренат)
11.01.2014, 10:41
Игорь Викторович Петров, "Программируемые контроллеры. Стандартные языки и приёмы прикладного программирования".

а не подскажите, что более подробно рассматривает именно язык St ?

capzap
11.01.2014, 11:04
а не подскажите, что более подробно рассматривает именно язык St ?

Прочитайте книгу http://prolog-plc.ru/pb1 может сами разберетесь с ответом на свой вопрос,а то он не совсем понятен

yaroslavcik
12.01.2014, 19:33
Здравствуйте!

При программировании плк63, столкнулся с проблемой - не получается изменять значение переменной с контроллера (работаю с CFC), для этого, на сколько я понял, нужен блок "ReadDisplay". С переменными coilpos, linepos - разобрался, size - количество считываемых знаков, а вот mode - выбор экрана пока не очень понятно - видимо не во всех режимах экрана можно изменять переменные.

Подскажите, пожалуйста, как работать с этим блоком и как управлять переменной через контроллер?

Спасибо!

olegteh
12.01.2014, 20:37
Подскажите как будет выглядеть ФБ на языке СFС с таким режимом работы?

fL13 – Светильник настенный галоген 220V.
Режим работы: Вкл/выкл от выключателя fKN13 в любое время на 100%.
Вкл. от датчика движения fD1 на 50% с 21-00часов до 07-00 часов. (время настраиваемое).
Выкл. по второму датчику fD2 на втором этаже с 21-00часов до 07-00 часов. (время настраиваемое).
При движении в обратном направлении от fD2 к fD1 алгоритм тот-же.

ASo
12.01.2014, 21:05
Здравствуйте!

При программировании плк63, столкнулся с проблемой - не получается изменять значение переменной с контроллера (работаю с CFC), для этого, на сколько я понял, нужен блок "ReadDisplay". С переменными coilpos, linepos - разобрался, size - количество считываемых знаков, а вот mode - выбор экрана пока не очень понятно - видимо не во всех режимах экрана можно изменять переменные.

Подскажите, пожалуйста, как работать с этим блоком и как управлять переменной через контроллер?
А теперь - поподробнее.
Какую переменную, с какого экрана?

Валенок
12.01.2014, 21:51
Подскажите как будет выглядеть ФБ на языке СFС с таким режимом работы?

Будет выглядеть как квадратик с ножками слева и справа.

Формулируйте :
Не могли бы Вы написать мне такую-то программу ?

kolyan
12.01.2014, 22:11
Здравствуйте!

При программировании плк63, столкнулся с проблемой - не получается изменять значение переменной с контроллера (работаю с CFC), для этого, на сколько я понял, нужен блок "ReadDisplay". С переменными coilpos, linepos - разобрался, size - количество считываемых знаков, а вот mode - выбор экрана пока не очень понятно - видимо не во всех режимах экрана можно изменять переменные.

Подскажите, пожалуйста, как работать с этим блоком и как управлять переменной через контроллер?

Спасибо!

Скачайте диск "NAVIGATOR PLC". http://kipshop.ru/CoDeSys/Navigator_PLC_DVD_v3.iso
Там всё есть.
Ну, а конкретно по Вашему вопросу - во вложении пример с того же диска (только на ST).

amn
12.01.2014, 23:28
Подскажите как будет выглядеть ФБ на языке СFС с таким режимом работы?

fL13 – Светильник настенный галоген 220V.
Режим работы: Вкл/выкл от выключателя fKN13 в любое время на 100%.
Вкл. от датчика движения fD1 на 50% с 21-00часов до 07-00 часов. (время настраиваемое).
Выкл. по второму датчику fD2 на втором этаже с 21-00часов до 07-00 часов. (время настраиваемое).
При движении в обратном направлении от fD2 к fD1 алгоритм тот-же.

Хотел написать про квадратик с ножками слева и справа, но Валенок опередил. :)
Ограничение по времени поищите в форуме, недавно где-то был хороший пример на языке ST.

yaroslavcik
13.01.2014, 11:06
Объясняю задачу: управление поворотным краном через плк63 с жки дисплеем, положение крана 0...100% (0...10В), значение задается с контроллера кнопкой "<" и ">" так же в %-тах естественно. как то так! Рассматривал примеры написанные ST но я в нем не силен и понимаю только отдельные элементы. Поэтому нужен пример в CFC.

RV9WFJ
14.01.2014, 06:37
Боюсь долго ждать будете пример на CFC так как на ST это гораздо проще.

yaroslavcik
14.01.2014, 17:29
Жаль, так понял что в CFC вообще блоков работы с кнопками нет.
а как будет выглядеть код на ST для простенькой задачи: изменение значения переменной Х от 0 до 100 с клавиатуры контроллера плк63?

если кому не сложно, хотя бы в общих чертах опешите пожалуйста программу!

заранее спасибо!

capzap
14.01.2014, 17:58
Жаль, так понял что в CFC вообще блоков работы с кнопками нет.
а как будет выглядеть код на ST для простенькой задачи: изменение значения переменной Х от 0 до 100 с клавиатуры контроллера плк63?

если кому не сложно, хотя бы в общих чертах опешите пожалуйста программу!

заранее спасибо!http://www.owen.ru/forum/showthread.php?t=13573 а здесь вообще ничего подходящего нет?

yaroslavcik
14.01.2014, 18:11
как раз эти файлы и изучаю, похожее есть ( потихоньку "перевариваю" то что там написано :D)...

p.s. разобрался, все оказалось еще проще: во вкладке "конфигурация плк" есть переменная под названием "клавиатура" типа байт, вот с ней и надо работать, при нажатии кнопки или сочетании кнопок, эта переменная меняет свое значение, для каждой кнопки это значение константа, при сочетании клавиш константы складываются, остается лишь вычленить нужные значение, например блоком EQ (=) (как в моем варианте - этого было достаточно) или любым подходящим.

Спасибо за наводки на инфу и за помощь!

RV9WFJ
15.01.2014, 08:17
В Global_Variables добавляем:

wKeyboard AT %IB0.4.2: BYTE;
Далее создаем программный болк:

PROGRAM Key
VAR
RunStop: BOOL;
Alt: BOOL;
Esc: BOOL;
Up: BOOL;
Down: BOOL;
Enter: BOOL;
END_VAR


DispModes:=Get_Display_Mode();
IF DispModes=WORK_MODE OR DispModes=SINGLE_MODE THEN
RunStop:=wKeyboard.5;
Alt:=wKeyboard.7;
Esc:=wKeyboard.6;
Up:=wKeyboard.3;
Down:=wKeyboard.2;
Enter:=wKeyboard.4;
ELSE
RunStop:=FALSE;
Alt:=FALSE;
Esc:=FALSE;
Up:=FALSE;
Down:=FALSE;
Enter:=FALSE;
END_IF;
Далее можете обращаться к значениям кнопок из любого места просто Key.Up Key.Down и т.д.
Что касается CFC, то никто не сказал что это невозможно, просто это не самый короткий путь.
Если выложите, что у вас уже есть то будет проще давать советы, а то пока это выглядит как "напишите за меня программу".

RV9WFJ
15.01.2014, 08:27
Вот ФБ который при нажатии на кнопку + или - добавляет или убавляет значение переменной указатель на которую передается этому ФБ:

FUNCTION_BLOCK UpDown
VAR_INPUT
PointerVar: POINTER TO WORD; (*Указатель на переменную для коррекции*)
LowerLimit: WORD; (*Нижняя граница шкалы*)
UpperLimit: WORD; (*Верхняя граница шкалы*)
END_VAR
VAR_OUTPUT
END_VAR
VAR
ScrolTime: TIME:= T#500ms; (*Период*)
UpTOF:TOF;
UpRTrig: R_TRIG;
DownTOF:TOF;
DownRTrig: R_TRIG;
END_VAR


UpTOF(IN:=bIpUp AND NOT bIpDown AND NOT UpTOF.Q, PT:=ScrolTime);
UpRTrig(CLK:=UpTOF.Q);
IF UpRTrig.Q THEN
IF PointerVar^<UpperLimit THEN
PointerVar^:=PointerVar^+1;
ELSIF PointerVar^=UpperLimit THEN
PointerVar^:=LowerLimit;
END_IF;
END_IF;

DownTOF(IN:=bIpDown AND NOT bIpUp AND NOT DownTOF.Q, PT:=ScrolTime);
DownRTrig(CLK:=DownTOF.Q);
IF DownRTrig.Q THEN
IF PointerVar^>LowerLimit THEN
PointerVar^:=PointerVar^-1;
ELSIF PointerVar^=LowerLimit THEN
PointerVar^:=UpperLimit;
END_IF;
END_IF; В вашем случае
bIpUp:=Key.Up;
bIpDown:=Key.Down;

И остается Вам только вывести эту переменную на экран, как это сделать есть тут (http://kipshop.ru/Primeri/Samples_plc63-73/01_Ind_Mode_and_Work_Mode.zip):

yaroslavcik
15.01.2014, 19:35
Вот мой вариант программы на CFC как управлять задвижкой с кнопок и через дискретные входы плк63, единственное, при нажатии и кнопок "< >" не только изменяется положение задвижки, но и переключаются экраны:D (думаю проблема решаема)

RV9WFJ
16.01.2014, 09:54
В вашем варианте при нажатии на кнопку +/- и ее удержании за 1 сек положение задвижки будет меняться на 50%. Выводы на экран желательно разносить по циклам, иначе моргать будет. Если вам достаточно одного экрана можете просто отключить остальные, или вызывать при каждом нажатии кнопок функцию SetWorkScreen(ScreenNumber:=0);

Коля О
16.01.2014, 21:48
Добрый вечер. Поделитесь пожалуйста опытом, кто-нибудь ставил КДС на планшет под Виндовс и какой был результат

Dimooon
16.01.2014, 22:29
ИП-320. на экране №1 определил две кнопки. хочу сделать так, чтобы при нажатии на 1-ю кнопку устанавливался бит в "1"в плк в определенной переменной и одновременно происходил переход на экран №2. а при нажатии на 2-ю кнопку - также бит в "1" в другой переменной и переход на экран № 3. Я так понял, что в конфигураторе ип-320 можно или присвоить какое-то значение переменной, или выполнить переход на другой экран. А мне надо одновременно выполнить и то, и другое. Спасибо всем, кто откликнется без мании величия. И я пока только в CFC понимаю.
В визуализации нужно собрать цепь нажав стоп и ворота, нажать "ручной", потом подготовить для автоматической работы станка нажав "формы вниз" , формы открыть и дорны вниз. Затем нажать авто и старт. на панели хочу реализовать выбор ручного и автоматического режима с переходом на соответствующий экран

Sergey666
17.01.2014, 00:27
Добрый вечер. Поделитесь пожалуйста опытом, кто-нибудь ставил КДС на планшет под Виндовс и какой был результат

Стоит КДС2.3 на китаезе безымянной (Pad100) с Вин7 , год назад купленном ч-з интернет:) , отлично и СОМ и TCP , для пусконаладки или как вспомогательный ПК само-то.

RV9WFJ
17.01.2014, 08:39
У панели ИП320 в настройках можно активировать регистр SetScreen, соответственно в него можно записывать номер экрана при необходимости его смены. Соответственно при изменении состояния бита при нажатии кнопки на панели в CoDeSys нужно написать обработку события в которой записать в регистр панели ИП320 SetScreen номер нужного вам экрана.
Лучше всего параллельно еще и читать номер экрана из соседнего регистра и записывать в регистр SetScreen до того момента пока номер экрана не станет нужным нам.

etruscilla
17.01.2014, 16:39
Возникла маленькая проблема с Codesys. На предприятии перешли на Codesys 2.3.9.35. А он несколько не такой, как 2.3.9.16. Появились какие-то интересные группы переменных в Конфигурации ПЛК. Может мне кто-то помочь разобраться с группой Flag variables? Эти переменные (всякие %MW и %MB) вообще реально передать панели или они сугубо внутренние и к ним нельзя обратиться извне? Если можно, то расскажите, какая у них адресация.

Коля О
17.01.2014, 19:10
Sergey666, спасибо что поделились опытом!

tanatholog
20.01.2014, 13:27
Здравствуйте, форумчане!
Помогите новичку с очень большой буквы Н.
Рисую схему для управления аквариумной электроникой.
Алгоритм дорабатываю, но воткнулся в проблему. Никак не могу завязать релейные выходы к схеме.11462
Видно, что они срабатывают, но на физических выходах контакта нет.114631146411465

petera
20.01.2014, 14:30
Здравствуйте, форумчане!
Помогите новичку с очень большой буквы Н.
Рисую схему для управления аквариумной электроникой.
Алгоритм дорабатываю, но воткнулся в проблему. Никак не могу завязать релейные выходы к схеме.11462
Видно, что они срабатывают, но на физических выходах контакта нет.114631146411465
У Вашего контроллера выходы со встроенным ШИМ. И соответственно тип выходной переменной REAL
11467
Допустимый диапазон для управления выходом 0,0 ... 1,0(REAL). Для простого управления ВКЛ/ВЫКЛ выходом нужно присваивать выходам 1,0 для ВКЛ и 0,0 для ВЫКЛ реле.
Для этого сделайте так
11468
11469

tanatholog
20.01.2014, 16:14
У Вашего контроллера выходы со встроенным ШИМ. И соответственно тип выходной переменной REAL
11467
Допустимый диапазон для управления выходом 0,0 ... 1,0(REAL). Для простого управления ВКЛ/ВЫКЛ выходом нужно присваивать выходам 1,0 для ВКЛ и 0,0 для ВЫКЛ реле.
Для этого сделайте так
11468
11469

Спасибо! Будет ещё миллион вопросов, видимо. Не получается грамотно сделать "будильник"- запуск в определённое время суток, которое можно было б задавать с панели. Да и вообще вывод и управление с жки пока темный лес для меня.Маркировка плк такая-РРРРУУ-М. Как я понял, 4 релейных выхода и2 с шим.

petera
20.01.2014, 16:29
Спасибо! Будет ещё миллион вопросов, видимо. Не получается грамотно сделать "будильник"- запуск в определённое время суток, которое можно было б задавать с панели. Да и вообще вывод и управление с жки пока темный лес для меня.Маркировка плк такая-РРРРУУ-М. Как я понял, 4 релейных выхода и2 с шим.
4 релейных выхода с ШИМ и два аналоговых 0-10В

СергейБ
24.01.2014, 09:51
Всем доброго времени суток. С ПЛК100 и codesys общаюсь впервые. Задача следующего характера. Есть ПК и ПЛК100, связь ethernet. Необходимо с ПЛК100 выдрать состояние Старт/Стоп и переслать на ПК. Подскажите как это сделать?

Ryzhij
24.01.2014, 13:22
Поясните, пожалуйста
состояние Старт/Стоп в Вашей терминологии это что?
Состояние самого ПЛК или состояние механизма (системы), которым управляет ПЛК?

СергейБ
26.01.2014, 16:56
Состояние самого ПЛК. Собственно говоря эти биты или этот бит, будет говорить о работоспособности линиии связи и плк.

СергейБ
26.01.2014, 17:02
Собственно говоря, я точно знаю что такие биты есть. Плк-браузер их обрабатывает. Мне необходима их адресация, либо способ получить эту адресацию.

capzap
26.01.2014, 18:02
Собственно говоря, я точно знаю что такие биты есть. Плк-браузер их обрабатывает. Мне необходима их адресация, либо способ получить эту адресацию.

И что Вы видите в браузере? Можно картинками прокомментировать свои вопросы

ЗЫ самое удобное,для просмотра на ПК какой либо информации это использование протокола передачи данных,например модбасТСР, останется только настроить конфигурацию и для ПК найти клиента

Sergey666
26.01.2014, 18:42
Состояние самого ПЛК. Собственно говоря эти биты или этот бит, будет говорить о работоспособности линиии связи и плк.

ПЛК выполняет программу , если программы нет он не работает и без программы (простейшая ";" ) даже кодесисом не подключиться.
Теперь, в "СТОПе" ПЛК все равно конфигурацию исполняет , при этом программа не выполняется .
Для контроля связи используются спец флаги (биты) в средствах коммуникации :pс ПЛК (ОРС сервер и др ) , для контроля выполнения программы используется передача от ПЛК постоянно меняющегося числа .
Вот как-то так , а ПЛК браузер тут не при делах .

СергейБ
27.01.2014, 06:39
И что Вы видите в браузере? Можно картинками прокомментировать свои вопросы

ЗЫ самое удобное,для просмотра на ПК какой либо информации это использование протокола передачи данных,например модбасТСР, останется только настроить конфигурацию и для ПК найти клиента

1156411565

Состояние плк меняется, при старте/стопе плк, не зависимо аппаратно это или программно.

СергейБ
27.01.2014, 06:42
Для контроля связи используются спец флаги (биты) в средствах коммуникации :pс ПЛК (ОРС сервер и др )

понял, благодарю.

Yanis
31.01.2014, 11:48
Здравствуйте, ищу пример передачи переменной типа String по modbus

RV9WFJ
01.02.2014, 07:57
Здравствуйте, ищу пример передачи переменной типа String по modbusВот пример вывода 4х динамических строк на ИП320 (ПЛК Слейв - ИП320 Мастер). Из кода выкинул все лишние ФБ, поэтому компилироваться наверно не будет. Но для того чтобы понять логику работы думаю подойдет.

Yanis
03.02.2014, 09:26
Вот пример вывода 4х динамических строк на ИП320 (ПЛК Слейв - ИП320 Мастер). Из кода выкинул все лишние ФБ, поэтому компилироваться наверно не будет. Но для того чтобы понять логику работы думаю подойдет.

Огромное спасибо.

drvlas
03.02.2014, 10:43
Вот пример вывода 4х динамических строк на ИП320....для того чтобы понять логику работы думаю подойдет.Да, достаточно.
Полюбовался на добротно сделанную программу. Получил эстетическое удовольствие (и покормил свой комплекс неполноценности, попутно). Спасибо!
При открытии проекта отрезалась конфигурация ПЛК. Но карта памяти все отражает.

Позвольте мне переспросить, верно ли я понял главные моменты, связанные с выводом стрингов на панель (как звучит, а?).
Итак, есть возможность вывести на экран ИП320 произвольную информацию в виде строк до 16 символов (откуда она берется, я не вник). Вы делаете:
1) строку обрезаете-дополняете всегда до 16 символов
2) начиная с 54-го адреса регистра (для строки 1) укладываете в регистр по 2 символа, доставая их из строки через обычную функцию MID. Собственно, укладываете в область обмена, откуда оно полетит в ИП320.
Остальное ИП320 умеет делать сама (благодаря Вам, я обнаружил у нее тип данных ASCII-текст)
Я ничего не упустил?

И еще вопросик, чисто из любопытства: так как я не понял, откуда у Вас в программе берутся произвольные строки, то интересно, они действительно по жизни произвольные? Или можно было бы обойтись и динамическим текстом, а Вы просто из любви к искусству сделали универсально?

Валенок
03.02.2014, 11:16
Там прямая произвольная строка. Если мастерить динамическую - нужно сразу все варианты предусматривать, что не всегда реально. И перегружать при любой доработке. Произвольные строки могут быть, например, из архива. Того самого ))
PS
На ИП, с какого-то, прямой текст - только если панель-мастер 8(

drvlas
03.02.2014, 11:29
Если мастерить динамическую - нужно сразу все варианты предусматривать, что не всегда реально. И перегружать при любой доработкеТаки да, Учитель! Стою на этих граблях уже 3+ года. И думаю, что просто так устроена земля, что ходить нужно по граблям :)
То есть, вот, посмотрел мысленным взором на историю своих пепепрошивок панелей - бляха-муха! да почти все связано исключительно с тем, что изменяется список в динамическом тексте! В силу того, что проект развивается, в основном, в других модулях системы (ПЛК, АЦП), панель рассматривается как всего лишь мелочь. Но эту мелочь приходится перешивать, когда изменение программы в ПЛК коснется текстов...
Надо с этой мыслью переспать. Я в шоке. Пошел спать :)

RV9WFJ
04.02.2014, 08:43
Да, достаточно.
При открытии проекта отрезалась конфигурация ПЛК. Но карта памяти все отражает.
Установка таргета на ПЛК110-30.Р.М вам поможет

Есть возможность вывести на экран ИП320 произвольную информацию в виде строк до 16 символов (откуда она берется, я не вник)
В моем случае на экран выводится портянка из динамического (с натяжкой) массива строк и далее кнопками вверх вниз организован скроллинг на 4х строках панели. По идее можно вывести текст любой длины пока в ПЛК память не закончится. Поскольку сам массив к теме отношения не имеет то я его выкинул кажется из примера.

Вы делаете:
1) строку обрезаете-дополняете всегда до 16 символов
2) начиная с 54-го адреса регистра (для строки 1) укладываете в регистр по 2 символа, доставая их из строки через обычную функцию MID. Собственно, укладываете в область обмена, откуда оно полетит в ИП320. Именно так, в ModBus Slave Создаете много переменных типа "2 байта" и заполняете их. Есть ньюанс - байты в слове надо местами менять (кажется так).


Остальное ИП320 умеет делать сама (благодаря Вам, я обнаружил у нее тип данных ASCII-текст)
Я ничего не упустил?

Да остальное панель сама делает

И еще вопросик, чисто из любопытства: так как я не понял, откуда у Вас в программе берутся произвольные строки, то интересно, они действительно по жизни произвольные? Или можно было бы обойтись и динамическим текстом, а Вы просто из любви к искусству сделали универсально?Вы меня прямо озадачили вопросом. Просто проект делался с общим кодом для ПЛК73 и ПЛК110. Вот и пришлось сделать максимально схожим - соответственно с выводом строк. А строки у меня на самом деле фиксированные. Но если задуматься то можно например выводить тексты SMS или еще что-то такое.

drvlas
04.02.2014, 09:59
Вы меня прямо озадачили вопросом. ... А строки у меня на самом деле фиксированные. Но если задуматься то можно например выводить тексты SMS или еще что-то такое.Хех, мы друг друга озадачили :)
Поясню развернуто, глядишь, кому и сгодится.
У меня есть "долгоиграющий" проект, мелкосерийное производство весовых дозаторов. И одна из наиболее стабильных частей - панель ИП320. То ли хорошо продумано, то ли как-то повезло (не хотелось бы себе слишком льстить), но все в ней устаканилось очень быстро, а дальше изменялось ПО ПЛК, модули ввода-вывода (в вариантах проекта), да модуль АЦП (самодельный). И единственное, из-за чего и панель приходилось менять - разные названия параметров (специальный экран работы с параметрами, где они просматриваются и редактируются). То есть, добавилось параметров - править ИП320, изменилось название или порядок следования - править ИП320... Особенно доставало, когда на объекте решил перепрошить ПО ПЛК - это можно и дистанционно делать, научился, а панель с ее RS-232 не так просто, аборигены теряются.
Разместив же у ПЛК таблицу текстов, связанных с номером параметра, я могу на экране работы с параметрами панели ИП320 оставить просто необходимые поля - и загружать туда от ПЛК что угодно. И прошивка ПЛК получается "условно вечная".
Вот только все версии ДО этой революции станут полностью несовместимые с ПОСЛЕреволюционными. Ну, революция, она такая... Впрочем, не будем о политике, а то меня понесет, еще и забанят

Игорь89
04.02.2014, 12:19
Добрый день! Помогите пожалуйста разобраться, как перевести контроллер ТРМ133М02 в дежурный режим и как запустить из программы на C#
С чтением данных разобрался. Пробовал записать значение в "STAT", не получается.



[DllImportAttribute("owen_io.dll", EntryPoint = "OpenPort", CallingConvention = CallingConvention.StdCall)]
public static extern int OpenPort(int n, int sped, int part, int bits, int stop, int vid);

[DllImportAttribute("owen_io.dll", EntryPoint = "ClosePort", CallingConvention = CallingConvention.StdCall)]
public static extern int ClosePort();

[DllImportAttribute("owen_io.dll", EntryPoint = "ReadIEEE32", CallingConvention = CallingConvention.StdCall)]
public static extern int ReadIEEE32(int adr, int adr_type, System.IntPtr command, ref float value, ref int time, int index);

[DllImportAttribute("owen_io.dll", EntryPoint = "SetMaxRetriesGlobal", CallingConvention = CallingConvention.StdCall)]
public static extern void SetMaxRetriesGlobal(int n);

[DllImportAttribute("owen_io.dll", EntryPoint = "ReadFloat24", CallingConvention = CallingConvention.StdCall)]
public static extern int ReadFloat24(int adr, int adr_type, System.IntPtr command, ref float value, int index);

[DllImportAttribute("owen_io.dll", EntryPoint = "ReadSInt", CallingConvention = CallingConvention.StdCall)]
public static extern int ReadSInt(int adr, int adr_type, IntPtr command, ref int param, int index);

[DllImportAttribute("owen_io.dll", EntryPoint = "WriteWord", CallingConvention = CallingConvention.StdCall)]
public static extern int WriteWord(int adr, int adr_type, IntPtr command, int value, int index);
Импорт dll выполнен так.

а вод так пытаюсь изменить режим
int adr = Convert.ToInt32(textBox1.Text); // адрес прибора
IntPtr command = Marshal.StringToCoTaskMemAnsi("STAT");
int value = Convert.ToInt32(textBox3.Text); // величина, которую будем записывать

try
{
int result = RS485.WriteWord(adr, 0, command, value, -1);
MessageBox.Show("процесс " + result.ToString() + "\n" + "значение " + value.ToString());
}
catch
{
MessageBox.Show("ошибка чтения данных");
}



при попытке записи возвращает 104-ю ошибку.

Может, есть еще какой нибудь способ запускать\останавливать вентмашину дистанционно?

petera
04.02.2014, 12:41
Хех, мы друг друга озадачили :)
Поясню развернуто, глядишь, кому и сгодится.
У меня есть "долгоиграющий" проект, мелкосерийное производство весовых дозаторов. И одна из наиболее стабильных частей - панель ИП320. То ли хорошо продумано, то ли как-то повезло (не хотелось бы себе слишком льстить), но все в ней устаканилось очень быстро, а дальше изменялось ПО ПЛК, модули ввода-вывода (в вариантах проекта), да модуль АЦП (самодельный). И единственное, из-за чего и панель приходилось менять - разные названия параметров (специальный экран работы с параметрами, где они просматриваются и редактируются). То есть, добавилось параметров - править ИП320, изменилось название или порядок следования - править ИП320... Особенно доставало, когда на объекте решил перепрошить ПО ПЛК - это можно и дистанционно делать, научился, а панель с ее RS-232 не так просто, аборигены теряются.
Разместив же у ПЛК таблицу текстов, связанных с номером параметра, я могу на экране работы с параметрами панели ИП320 оставить просто необходимые поля - и загружать туда от ПЛК что угодно. И прошивка ПЛК получается "условно вечная".
Вот только все версии ДО этой революции станут полностью несовместимые с ПОСЛЕреволюционными. Ну, революция, она такая... Впрочем, не будем о политике, а то меня понесет, еще и забанят
Ну так можно предложить услугу своим клиентам по апгрейду ПО панели и ПЛК, под каким-либо предлогом, можно даже за умеренную оплату. Будет даже дополнительный доход.
А если не согласятся, то "отключим газ...", в смысле техподдержка с Вашей стороны прекратится.
А идея реализации такого динамического изменения текстов в панели мне тоже нравится.

drvlas
04.02.2014, 12:52
можно даже за умеренную оплатуТа ладно... Я люблю своих клиентов. Апгрейд делаю на шару, если присылают оборудование. В долгой перспективе это выгодно.

lenusan
04.02.2014, 13:41
Помогите, расскажите! Многое уже научился делать в CoDeSyS, но вот одно то, что нигде не нашел. Имеется ОВЕН ПЛК 100 на работе, необходимо посмотреть в нем программу и изменить там несколько параметров. К ПЛК подключаюсь через Ethernet, всё хорошо ноут видит ПЛК. Но я не могу понять как скачать (посмотреть) на ПЛК старую программу. Могу только загрузить свой новый проект в ПЛК, а вот как это сделать из ПЛК? Объясните пожалуйста

petera
04.02.2014, 13:58
Помогите, расскажите! Многое уже научился делать в CoDeSyS, но вот одно то, что нигде не нашел. Имеется ОВЕН ПЛК 100 на работе, необходимо посмотреть в нем программу и изменить там несколько параметров. К ПЛК подключаюсь через Ethernet, всё хорошо ноут видит ПЛК. Но я не могу понять как скачать (посмотреть) на ПЛК старую программу. Могу только загрузить свой новый проект в ПЛК, а вот как это сделать из ПЛК? Объясните пожалуйста
Прежде чем открыть проект из ПЛК нужно его туда поместить.
11716
После этого можно будет его открыть.
Меню "Файл-Открыть" и на появившемся окошке нажать кнопку "ПЛК"
11717
Только если проект будет изменен, то его текст опять "ручками" нужно будет загрузить в ПЛК.

ps-o
06.02.2014, 21:05
Уважаемые специалисты, дайте совет. Есть два транспортера, с двух сторон, к центру. Как реализовать алгоритм поочередного сброса предметов. На языке LD или CFC

capzap
06.02.2014, 21:11
ни как, нужны как минимум еще два датчика ... и избавиться от навязчивого требования поделиться кодом на каком то определенном языке

rovki
06.02.2014, 21:21
Уважаемые специалисты, дайте совет. Есть два транспортера, с двух сторон, к центру. Как реализовать алгоритм поочередного сброса предметов. На языке LD или CFC Так может вам сначала на ПР подучится

Николаев Андрей
07.02.2014, 08:27
Уважаемые специалисты, дайте совет. Есть два транспортера, с двух сторон, к центру. Как реализовать алгоритм поочередного сброса предметов. На языке LD или CFC

Подробнее опишите задачу.
Кто и куда едет. Как определить, чем скидывать.

ps-o
07.02.2014, 21:27
ни как, нужны как минимум еще два датчика ... и избавиться от навязчивого требования поделиться кодом на каком то определенном языке

Датчики конечно будут. Я не программист, а электронщик и LD и CFC для меня более понятны. И вообще то я предполагал, что есть какие то типовые решения этой проблемы. Думаю, во многих тех процессах существует такая задача

ps-o
07.02.2014, 21:28
Так может вам сначала на ПР подучится

У ПР маловато входов-выходов

ps-o
07.02.2014, 21:46
Подробнее опишите задачу.
Кто и куда едет. Как определить, чем скидывать.
Транспортеры загоняют деталь на лифт. Лифт опускается, деталь снимают, лифт поднимается вверх. Раздельно, слева или справа процесс реализован, но хотелось бы в автоматическом режиме, попеременно по одной детали слева, справа, слева, справа и т.11782д.

Чужой
09.02.2014, 19:16
ребят очень нужна ваша помощь....
как подружить ПЛК160 и ПЧ INVT CHF100A по rs485....
только сильно не пинайте... я еще только учусь...
если можно примерчик

Николаев Андрей
10.02.2014, 11:41
Надо запросить у продавца данного частотника информацию по сетевому обмену.
Но вообще гарантии работы с "странно брендовыми" частотниками давать сложно.

Чужой
10.02.2014, 14:17
ну может просто кто уже сталкивался....
досталась котельная на обслуживание без документации без схем.... без ничего короче :(
сейчас переписываю полностью программу а вот с этим адресами я не дружу совсем... :(
ребята может кто поможет... :confused: не безвозмездно (в разумных пределах)

capzap
10.02.2014, 14:35
ну может просто кто уже сталкивался....
досталась котельная на обслуживание без документации без схем.... без ничего короче :(
сейчас переписываю полностью программу а вот с этим адресами я не дружу совсем... :(
ребята может кто поможет... :confused: не безвозмездно (в разумных пределах)
находите документ chf100a_manual.pdf там начиная с 87 страницы идут коммуникационные протоколы, где дана таблица регистров модбас
адресация в восьмеричной системе(заканчивается на H)

Чужой
10.02.2014, 14:45
находите документ chf100a_manual.pdf там начиная с 87 страницы идут коммуникационные протоколы, где дана таблица регистров модбас
адресация в восьмеричной системе(заканчивается на H)

да читал я мануал... ну не разбираюсь я в этих регистрах адресах.... :(
у овена в мануале все разжевано для таких как я.....
помогите с адресами.... плиииииззззз :)

capzap
10.02.2014, 14:48
да читал я мануал... ну не разбираюсь я в этих регистрах адресах.... :(
у овена в мануале все разжевано для таких как я.....
помогите с адресами.... плиииииззззз :)

http://ru.wikipedia.org/wiki/Modbus

Что значит помочь, Вы же не называете что нужно

Чужой
10.02.2014, 14:50
темный лес для меня.... надо пару недель разбираться((
ну спасибо и на этом...

Чужой
10.02.2014, 14:58
11824 11825

вот что сюда нужно?

capzap
10.02.2014, 14:59
темный лес для меня.... надо пару недель разбираться((
ну спасибо и на этом...

http://www.owen.ru/forum/showthread.php?t=13584 примеры есть, представте только что это например не трм202 а Ваш ПЧВ, соответственно задать нужно свои адреса, которые в вышеобсуждаемом документе

Чужой
10.02.2014, 15:00
http://www.owen.ru/forum/showthread.php?t=13584 примеры есть, представте только что это например не трм202 а Ваш ПЧВ, соответственно задать нужно свои адреса, которые в вышеобсуждаемом документе

примеры все пересмотрел уже дней 5 на форуме зависаю((
мне не поняты эти адреса регистры ((

capzap
10.02.2014, 15:01
11824 11825

вот что сюда нужно?

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


И по поводу например команды управления, адрес её в десятичной системе будет 512, присвоив переменной канала например 1, должна отправиться команда вперед

Чужой
10.02.2014, 15:07
ребята ну вот мой "проект" для овена ПЧВ.... поправте плиииизззз.... 11826
мне вприципе надо "пуск" "стоп" и частоту задавать....



я уже как в песне.... "Все мозги разбил на части, все извилины заплел..."

petera
10.02.2014, 15:58
адресация в восьмеричной системе(заканчивается на H)
Символ Н в конце значения указывает шестнадцатеричную систему счисления, от Hexadecimal.
Для восьмеричной системы счисления было бы "О" вместо Н


И по поводу например команды управления, адрес её в десятичной системе будет 512, присвоив переменной канала например 1, должна отправиться команда вперед
По этому адрес регистра для команд управления 1000Н=4096(дес.), а не 512
адрес регистра статуса инвертора 1001Н=4097(дес.)

Чужой
10.02.2014, 17:35
Символ Н в конце значения указывает шестнадцатеричную систему счисления, от Hexadecimal.
Для восьмеричной системы счисления было бы "О" вместо Н

По этому адрес регистра для команд управления 1000Н=4096(дес.), а не 512
адрес регистра статуса инвертора 1001Н=4097(дес.)


так 512? или 4096? :confused:
и что туда писать?? 11830


1-вперед 2-назад, 5-стоп, 8-останов толчка......... :confused:

Чужой
10.02.2014, 17:47
тогда 2000Н (8192) задание частоты.... :confused:
0-10000 (0-100%), 11831


я правильно понимаю?

petera
10.02.2014, 21:24
так 512? или 4096? :confused:
и что туда писать?? 11830


1-вперед 2-назад, 5-стоп, 8-останов толчка......... :confused:
4096, кроме того кодесис позволяет использовать константы в различных системах счисления.
Т.е можно для 1000Н написать или 4096 или 16#1000.
И "1-вперед 2-назад, 5-стоп, 8-останов толчка." правильно.

Чужой
10.02.2014, 21:30
спасибо :) будем пробовать....

yaroslavcik
14.02.2014, 19:10
помогите поправить код в программе: суть - нашел ST код для отправки массива данных с плк63 в модуль му110-16р через rs485, а теперь нужно получит данные с модуля мв110-16д, соединение устанавливается а вот получить через него что то разумное не получается, ( номер устройства 6, 9600, mb-rtu). файл в архиве.

Что делаю не так?

p.s. я так понял, что это на выходе уже будет не массив данных, а 16 отдельных выходов, это так?

За ранее спасибо!

RV9WFJ
15.02.2014, 14:25
получит данные с модуля мв110-16д, соединение устанавливается а вот получить через него что то разумное не получается, ( номер устройства 6, 9600, mb-rtu).
За ранее спасибо!Посмотрите мой пример.

Логачев Николай
15.02.2014, 15:29
Добрый день уважаемые! Нужна помощь
ПЛК100-24КМ - МУ110-16К OWEN_GET_REAL
Сеть, в смысле RS485 работает, т.к. читать из МВ110-32 получается.
Замучила ошибка "Размер поля данных не соответствует ожидаемому" (49 или 0х31) Делаю так:
... get_DO( Enable:= Enabl,Addr:=17, AddrLen:=A8BIT, Name:= 'r.OE', Index:=0, RealType:=FLOAT24,
ComHandle:= Settings.Port, TimeOut:=TOut(20мс), Complete =>bCompl, Value=>rDO,
Error =>wErr );
затем в основном POU
ROutput(rDO => rReal_Test, wErr =>wErrRS); И rReal_Test =0 а wErrRS = 49
голова болит но ясность не наступает :-(

А ведь еще и писать надо туда ((

yaroslavcik
15.02.2014, 16:49
RV9WFJ спасибо за файл, если не сложно можете глянуть что у Меня получилось при переносе в мою программу Вашего текста, т.к. проблема не исчезла, просто думаю что где то есть мелкий косяк, который не виден не опытному пользователю (т.е. мне:() ФБ rs485DO. много вариантов перепробовал - мозг лопается! с модулем МУ так не возился.

Спасибо!

RV9WFJ
16.02.2014, 08:59
голова болит но ясность не наступает :-(
А ведь еще и писать надо туда ((Может стоит попробовать через ModBus опрашивать. Овен сам рекомендует этот протокол. По коду ничего не подскажу т.к. Овен не использую.

RV9WFJ
16.02.2014, 09:09
RV9WFJ спасибо за файл, если не сложно можете глянуть что у Меня получилось при переносе в мою программу Вашего текста, т.к. проблема не исчезла, просто думаю что где то есть мелкий косяк, который не виден не опытному пользователю (т.е. мне:() ФБ rs485DO. много вариантов перепробовал - мозг лопается! с модулем МУ так не возился.
Спасибо!Косяк есть и не мелкий. Вы в каждом ФБ пытаетесь открыть один и тот же порт и работать с ним параллельно. В примере работа с портом совсем не случайно сделана в виде программы а не ФБ. Выход из этой ситуации простой - вам надо слить два ваших ФБ в одну подпрограмму - первый будет с номером 0 в операторе CASE второй с номером 1. Часть программы открывающая порт будет только один раз! И такую подпрограмму вы должны вызывать из PLC_PRG.

yaroslavcik
16.02.2014, 09:58
т.е у меня будет 1 фб для открытия порта и 2 фб для модуля му и мв соответственно чисто для передачи и отправки данных, я правильно понял?


p/s/ разобрался, именно так и будет!

Логачев Николай
16.02.2014, 10:34
Может стоит попробовать через ModBus опрашивать. Овен сам рекомендует этот протокол. По коду ничего не подскажу т.к. Овен не использую.

А можно подробнее или ссылку где и почему рекомендуется? Хочется все таки разобраться, т.к. модулей много, они разные и местами интересные, поэтому вопрос выбора протокола краеугольный :-)
Спасибо что откликнулись

Логачев Николай
16.02.2014, 13:50
Добрый день уважаемые! Нужна помощь
ПЛК100-24КМ - МУ110-16К OWEN_GET_REAL
Сеть, в смысле RS485 работает, т.к. читать из МВ110-32 получается.
Замучила ошибка "Размер поля данных не соответствует ожидаемому" (49 или 0х31) Делаю так:
... get_DO( Enable:= Enabl,Addr:=17, AddrLen:=A8BIT, Name:= 'r.OE', Index:=0, RealType:=FLOAT24,
ComHandle:= Settings.Port, TimeOut:=TOut(20мс), Complete =>bCompl, Value=>rDO,
Error =>wErr );
затем в основном POU
ROutput(rDO => rReal_Test, wErr =>wErrRS); И rReal_Test =0 а wErrRS = 49
голова болит но ясность не наступает :-(

А ведь еще и писать надо туда ((

Кое что выяснил, разбираясь с протоколом OWEN. В данном случае не правильно работает функция OWEN_GET_REAL библиотеки OwenNet.lib
Запрос формируется корректно, прибор отвечает, а вот функция дает ошибку и не выдает результат на выход. Дальше буду пробовать использовать OWEN_UNI_IO, т.к. OWEN_GET_REAL оказалась просто обертка :-)

Все разрешилось очень просто. Оказывается либка не понимает, когда я хочу использовать индекс параметра, т.е. Index:=0xFFFF работает, а вот Index:=0 не работает. Хотя странно такое решение, т.к. в конфигураторе все ОК.

yaroslavcik
16.02.2014, 17:18
в общем ситуация получилась такая после экспериментов: (работаю в cfc) с блоками разобрался, модуль му отрабатывает нормально, а вот мв ни как не поддается - использую блок MB_RW_HOLD_REGS, вытащил даже битовую маску дикр. входов, но работают они как то сами по себе, первые 2 входа почему то пишет что замкнуты и постоянно то вкл, то выкл, если замкнуть какой то вход в модуле, то замкнутый вход отобразится в маске, но тоже будет "мигать" (надеюсь понятно объяснил))) В чем может быт причина такого "мигания" входов!? где косяк?

Sergey666
16.02.2014, 19:07
в общем ситуация получилась такая после экспериментов: (работаю в cfc) с блоками разобрался, модуль му отрабатывает нормально, а вот мв ни как не поддается - использую блок MB_RW_HOLD_REGS, вытащил даже битовую маску дикр. входов, но работают они как то сами по себе, первые 2 входа почему то пишет что замкнуты и постоянно то вкл, то выкл, если замкнуть какой то вход в модуле, то замкнутый вход отобразится в маске, но тоже будет "мигать" (надеюсь понятно объяснил))) В чем может быт причина такого "мигания" входов!? где косяк?

Косяк в вашем коде , это 100% , если мало опыта (да еще и работаете в cfc ) пользуйтесь конфигуратором , не надо слушать умников разных .

yaroslavcik
16.02.2014, 20:29
спасибо, уже использую готовые блоки, все равно косяк, где можно взять пример для блока MB_RW_HOLD_REGS, что бы из буфера считать битовую маску дланных (дискр. входы модуля), направьте в нужную сторону пожалуйста!

Спасибо!

capzap
16.02.2014, 20:33
спасибо, уже использую готовые блоки, все равно косяк, где можно взять пример для блока MB_RW_HOLD_REGS, что бы из буфера считать битовую маску дланных (дискр. входы модуля), направьте в нужную сторону пожалуйста!

Спасибо!а свой проект тут не пытались выложить или я что то пропустил?

Юрий Ганыч
17.02.2014, 00:18
Добрый день. Подскажите, почему не работает в он-лайн с окна визуализации управление ПЛК-160?

RV9WFJ
17.02.2014, 08:21
т.е у меня будет 1 фб для открытия порта и 2 фб для модуля му и мв соответственно чисто для передачи и отправки данных, я правильно понял?


p/s/ разобрался, именно так и будет!
Нет не правильно. В один момент времени у вас должна выполняться одна операция с пором. То что вы сейчас написали подразумевает опять параллельный опрос. Без оператора CASE вы не обойдетесь. А если использовать CASE то нет смысла использовать ФБ.

в общем ситуация получилась такая после экспериментов: (работаю в cfc) с блоками разобрался, модуль му отрабатывает нормально, а вот мв ни как не поддается - использую блок MB_RW_HOLD_REGS, вытащил даже битовую маску дикр. входов, но работают они как то сами по себе, первые 2 входа почему то пишет что замкнуты и постоянно то вкл, то выкл, если замкнуть какой то вход в модуле, то замкнутый вход отобразится в маске, но тоже будет "мигать" (надеюсь понятно объяснил))) В чем может быт причина такого "мигания" входов!? где косяк?

спасибо, уже использую готовые блоки, все равно косяк, где можно взять пример для блока MB_RW_HOLD_REGS, что бы из буфера считать битовую маску дланных (дискр. входы модуля), направьте в нужную сторону пожалуйста!
Спасибо!Вы используете не готовые блоки а чужие примеры. И почему-то упорно неправильно их объединяете. Используйте PLC Configuration - для вас будет намного проще.

RV9WFJ
17.02.2014, 08:28
спасибо, уже использую готовые блоки, все равно косяк, где можно взять пример для блока MB_RW_HOLD_REGS, что бы из буфера считать битовую маску дланных (дискр. входы модуля), направьте в нужную сторону пожалуйста!
Спасибо!Возможно у вас переменная записывается не только с окна визуализации но и со входов, кода программы.

yaroslavcik
17.02.2014, 08:56
RV9WFJ понял, порт не должен работать одновременно с несколькими модулями, поэтому нужен оператор CASE, который будет разрешать работу только одного блока.
в PLC Configuration задаются переменные, как его использовать (извиняюсь за тупой вопрос), назначить переменные PLC Configuration и использовать их как переменные для модулей?

Вот мой последний вариант программы...

capzap
17.02.2014, 09:25
RV9WFJ понял, порт не должен работать одновременно с несколькими модулями, поэтому нужен оператор CASE, который будет разрешать работу только одного блока.
в PLC Configuration задаются переменные, как его использовать (извиняюсь за тупой вопрос), назначить переменные PLC Configuration и использовать их как переменные для модулей?

Вот мой последний вариант программы...

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

yaroslavcik
17.02.2014, 11:46
Понял, так и сделаю! Что получилось, отпишусь...

Boris_K
20.02.2014, 11:00
Не могу найти биб-ку ComService для Кодесис 2. Есть только для 3 версии. Или её и юзать?

capzap
20.02.2014, 11:06
Не могу найти биб-ку ComService для Кодесис 2. Есть только для 3 версии. Или её и юзать?

Че её не найти то, она на диске идет, образа дисков есть и на сайте

Boris_K
20.02.2014, 11:20
Всё, нашёл, немного странно что в "Продукцию" библиотеки засунули. До этого искал в поддержке и на форуме.

Павел В.
20.02.2014, 14:36
В наличии CoDeSys 2.3.9.37
При открытии проекта, кодесис ругается на отсутствие четырех библиотек. По факту они присутствуют в C:\Program Files (x86)\3S Software\CoDeSys V2.3\Library, в проекте задан этот же путь. Подскажите что делать.

amn
20.02.2014, 16:49
В менедждере библиотек добавтьте нужную библиотеку Resources -> Library Manager -> нажать кнопку Insert на клавиатуре.

Павел В.
20.02.2014, 17:18
В менедждере библиотек добавтьте нужную библиотеку Resources -> Library Manager -> нажать кнопку Insert на клавиатуре.
Спасибо, сам это делал достаточно давно и уже забыл.

capzap
23.02.2014, 17:42
Тут спросили по поводу работы нескольких экземпляров ПИД-регуляторов. Все должно работать, во вложении один из примеров. Есть правда один момент в эмуляции библиотеки пидов не работают, они заточены под физическое устройство, но в этом случае и один ПИД тоже работать не будет

amn
23.02.2014, 19:28
capzap, Вы не тот пример прикрепили. Там про конфигурацию задач, а не про ПИД :)

capzap
23.02.2014, 19:50
capzap, Вы не тот пример прикрепили. Там про конфигурацию задач, а не про ПИД :)

Ну как бы я другому и отвечал

Vansmore
04.03.2014, 05:26
Здравствуйте!
Каким образом можно изменять из программы значение конфигурационного пользовательского параметра (переменной), чтоб оно сохранялось в энергонезависимой памяти и соответственно менялось при отображении на ЖКИ контроллера.
Спасибо.

kgsh82
04.03.2014, 11:08
Здравствуйте!
Каким образом можно изменять из программы значение конфигурационного пользовательского параметра (переменной), чтоб оно сохранялось в энергонезависимой памяти и соответственно менялось при отображении на ЖКИ контроллера.
Спасибо.

Если речь идёт о ПЛК63/73, то необходимо использовать ФБ из биб-ки ARM7_specific_01

Vansmore
04.03.2014, 23:28
Если речь идёт о ПЛК63/73, то необходимо использовать ФБ из биб-ки ARM7_specific_01
Спасибо большое. Речь действительно о ПЛК 63.
Только как-то там все не просто с этими адресами и указателями. (подразумеваю пример из описания библиотеки ARM7_specific_01) Почему значение параметра хранится как массив? Я так понимаю, что обращение к адресам необходимо для преобразование пременной в байтовый массив? Где вообще можно поподробнее прочитать про указатели и адреса и как их использовать и для чего? А то вообще непонятно это как-то.

Валенок
05.03.2014, 01:19
Можно еще сделать оперативный с инициализацией из ретайна при старте и сохранением в ретайн.
Конечный эффект - тот же

Vansmore
05.03.2014, 03:48
Можно еще сделать оперативный с инициализацией из ретайна при старте и сохранением в ретайн.
Конечный эффект - тот же

Да, спасибо, думаю этот вариант будет значительно проще для меня. Но все равно хотелось бы разобраться в этих адресах и указателях, для чего-то ведь они существуют.)

petera
05.03.2014, 06:56
Да, спасибо, думаю этот вариант будет значительно проще для меня. Но все равно хотелось бы разобраться в этих адресах и указателях, для чего-то ведь они существуют.)
Здесь посмотрите http://www.owen.ru/forum/showthread.php?t=6761

RV9WFJ
06.03.2014, 08:09
Я для этого функцию написал. Вызывать примерно так:

SaveParameter(ptWord:=ADR(<Имя переменной со значением которое необходимо записать>), wHash:=wHash, wIndex:=wIndex);
wHash, wIndex думаю понятно что такое.

kukla100
06.03.2014, 16:42
Какие фб в КДС отвечают за сдвиг, наклон характеристики датчика

kgsh82
06.03.2014, 18:14
Какие фб в КДС отвечают за сдвиг, наклон характеристики датчика
Зачем для этого ФБ городить? Ведь достаточно сложить и (или) умножить....

kukla100
06.03.2014, 19:49
Зачем для этого ФБ городить? Ведь достаточно сложить и (или) умножить....

Понял. спасибо.

Evgengold
07.03.2014, 13:13
У кого есть подробная инструкция по созданию функционального блока????

Задача: Научится Создавать ть ФБ в виде одного блока с внешним входом и выходом, внутри которого зашиты некоторые математические операции.

Сложности: Делаю все как по справке (хотя справка довольно скудная),
1. Файл /создать/ новый ФБ/ рисую схему на языке СFC
2. сохраняю как внутряняя библиотека
3. Далее в програме пытаюсь добавить ФБ Окно/менеджер библиотек/добавить библиотека - ищю добавляю, выбираю ее но она пустая не программы ни блока ни показывает

amn
07.03.2014, 14:02
Вам не надо делать внутреннюю библиотеку.
В левой части окна (там где присутствует PLC_PRG) в контекстном меню выбираете Add Object. Далее в открывшемся окне задаете имя, тип POU (Function Block) и выбираете язык (CFC).
Новый ФБ появляется в списке POUs в левом окошке.
Рисуете свою схему.

Взависимости от того, где будет описана переменная в области определения переменных, она будет входом блока или выходом.

FUNCTION_BLOCK qqq
VAR_INPUT
(*здесь описываете входные переменные*)
END_VAR
VAR_OUTPUT
(*здесь описываете выходные переменные*)
END_VAR
VAR
(*здесь описываете локальные переменные, доступные только внутри блока*)
END_VAR


Чтобы вставить ФБ в схеме надо вставить на холст BOX клацнуть по AND, далее воспользуйтесь ассистентом ввода (клавиша F2) и вставьте свой ФБ.

Flicker
07.03.2014, 22:15
Как сделать чтобы значение счетчика CTU сохранялось при выключения питания? Не могу разобраться. Хочу чтобы данные передавались с ПЛК110 на панель. Данные передаются, но при перезагрузке обнуляется счет.

capzap
07.03.2014, 22:27
Как сделать чтобы значение счетчика CTU сохранялось при выключения питания? Не могу разобраться. Хочу чтобы данные передавались с ПЛК110 на панель. Данные передаются, но при перезагрузке обнуляется счет.

Значит надо сделать ретайном то ПОУ в котором находится счетчик

Flicker
07.03.2014, 22:32
Значит надо сделать ретайном то ПОУ в котором находится счетчик

На выходе счетчика CV переменная WORD, галочку поставил ретайн - я так пробовал - не сохраняется.

Валенок
08.03.2014, 00:46
А сам CTU-то - ретайн ?

Flicker
08.03.2014, 09:57
А сам CTU-то - ретайн ?

Нет, вот теперь понятно в чем дело. Как всегда все просто)

amn
09.03.2014, 21:44
Кто-нибудь знает, почему функция SIZEOF() в симуляторе выдает правильное значение, а в ПЛК100 совсем другое?
12220
Это в ПЛК100
12221
А это в симуляторе

Валенок
10.03.2014, 01:24
В ПЛК - правильно. А при создании симулятора почему-то забыли про выравнивание структур/фб под кварту.

Иван Сиб Пор
10.03.2014, 15:05
Здравствуйте! Помогите новичку!
Когда с датчика приходит 4-20 ма на ТРМ , ТРМ показывает проценты или температуру?