Здравствуйте!
Каким образом можно изменять из программы значение конфигурационного пользовательского параметра (переменной), чтоб оно сохранялось в энергонезависимой памяти и соответственно менялось при отображении на ЖКИ контроллера.
Спасибо.
Вид для печати
Здравствуйте!
Каким образом можно изменять из программы значение конфигурационного пользовательского параметра (переменной), чтоб оно сохранялось в энергонезависимой памяти и соответственно менялось при отображении на ЖКИ контроллера.
Спасибо.
Спасибо большое. Речь действительно о ПЛК 63.Цитата:
Если речь идёт о ПЛК63/73, то необходимо использовать ФБ из биб-ки ARM7_specific_01
Только как-то там все не просто с этими адресами и указателями. (подразумеваю пример из описания библиотеки ARM7_specific_01) Почему значение параметра хранится как массив? Я так понимаю, что обращение к адресам необходимо для преобразование пременной в байтовый массив? Где вообще можно поподробнее прочитать про указатели и адреса и как их использовать и для чего? А то вообще непонятно это как-то.
Можно еще сделать оперативный с инициализацией из ретайна при старте и сохранением в ретайн.
Конечный эффект - тот же
Здесь посмотрите http://www.owen.ru/forum/showthread.php?t=6761
Я для этого функцию написал. Вызывать примерно так:
wHash, wIndex думаю понятно что такое.Код:SaveParameter(ptWord:=ADR(<Имя переменной со значением которое необходимо записать>), wHash:=wHash, wIndex:=wIndex);
Какие фб в КДС отвечают за сдвиг, наклон характеристики датчика
У кого есть подробная инструкция по созданию функционального блока????
Задача: Научится Создавать ть ФБ в виде одного блока с внешним входом и выходом, внутри которого зашиты некоторые математические операции.
Сложности: Делаю все как по справке (хотя справка довольно скудная),
1. Файл /создать/ новый ФБ/ рисую схему на языке СFC
2. сохраняю как внутряняя библиотека
3. Далее в програме пытаюсь добавить ФБ Окно/менеджер библиотек/добавить библиотека - ищю добавляю, выбираю ее но она пустая не программы ни блока ни показывает
Вам не надо делать внутреннюю библиотеку.
В левой части окна (там где присутствует 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) и вставьте свой ФБ.
Как сделать чтобы значение счетчика CTU сохранялось при выключения питания? Не могу разобраться. Хочу чтобы данные передавались с ПЛК110 на панель. Данные передаются, но при перезагрузке обнуляется счет.
А сам CTU-то - ретайн ?
Кто-нибудь знает, почему функция SIZEOF() в симуляторе выдает правильное значение, а в ПЛК100 совсем другое?
Вложение 12220
Это в ПЛК100
Вложение 12221
А это в симуляторе
В ПЛК - правильно. А при создании симулятора почему-то забыли про выравнивание структур/фб под кварту.
Здравствуйте! Помогите новичку!
Когда с датчика приходит 4-20 ма на ТРМ , ТРМ показывает проценты или температуру?
Вы веткой форума ошиблись.
По вашему вопросу - вы сами задаете в настройках нижнюю и верхнюю границу, что туда напишете то и будет показывать.
Здравствуйте, прошу помощи у знатоков. Нужно, чтобы переменная b была равна TRUE 10сек, затем переходила в FALSE на 5 сек, и так по циклу. У мну получилось вот это (во вложении). Но загвозка в том, что цикл должен начинаться с b:=TRUE, а не с b:=FALSE.
util.lib/blink
Спасибо, добрый человек!
Добрый день,
Подскажите, пожалуйста, на контроллере ПЛК110-30 какую максимальную частоту меандра можно получить на быстрых дискретных выходах?
Из описания не совсем понял. Время переключения из 0 в 1 и обратно 0,02 мс. при этом мин. цикл программы 250 мкс.
Ребята!!! Помогите разобраться пожалуйста! Только-только начал изучать Codesys, представляю скриншот программы, вопросы следующие:
DI1 - включение попеременной работы "кнопок включения насосов 1 и 2"
даю TRUE на DI1 - все в норме, цикл идет как надо, насосы работают попеременно. даю FALSE на DI1 - цикл продолжается. Как бороться с этим???? Мне нужно чтоб насосы отключились (цикл прекратился). Я понимаю, что причина в том что нижний триггер подает 1 на блок OR, тем самым цикл продолжает работать. Я не знаю какой другой блок можно применить (AND, =, EG и т.п. - не подходят) и не знаю как можно отключить или подать 0 на триггер (какой командой/действием?)
Заранее спасибо за ответы!!!
Скриншот у Вас не загрузился. Может это хотели?
Вложение 12237
Вложение 12238
Вот моя пародия программы))
Прикольно, Blink в Codesys и в OwenLogic работают по разному :)
В первом цикл начинает с true а во втором с false :) да еще и в первом при входе Enable равным false состояние выхода сохраняется а во втором нет.
Надо будет запомнить при переносе из одной среды в другую. ОВЕНу за это незачет.
Подскажите пожалуйста каким образом обратиться непосредственно к количеству циклов:
Хотелось бы на входе CU счётчика задать количество циклов.
Если я вас правильно понял, вам нужно количество циклов ПЛК, прошедших с какого-то определённого момента? Проще простого - заведите переменную типа DWORD, и увеличивайте её на 1, т. е. например строчкой kolvo:=kolvo+1; в программе PLC_PRG (если писать на ST), обнуляя её в нужный момент.
Валенок нет, но автор OwenLogic, который появился гораздо позже CodeSys и библиотеки Util.lib
Ещё один повод не юзать всякие там таймеры и генераторы, а писать вручную с помощью одной-единственной функции TIME(). На ST - всего пара-тройка строк. Чем меньше всяких сторонних функций, тем больше устойчивость проги к багам. Принцип минимализма тут очень кстати.Цитата:
Прикольно, Blink в Codesys и в OwenLogic работают по разному
В первом цикл начинает с true а во втором с false да еще и в первом при входе Enable равным false состояние выхода сохраняется а во втором нет.
Надо будет запомнить при переносе из одной среды в другую. ОВЕНу за это незачет.
Boris_K не обязательно, просто надо читать справку по используемым функциям перед употреблением. Ну и к тому же когда человек работает с одной средой, ему нет необходимости запоминать такие нюансы о разности поведения в разных средах.
Правда хорошо, что это не касается, AND, OR, XOR, NOT и так далее, а то было бы забавным :)
Вот именно, человек может просто забыть что функция может по-разному работать, к тому же, перепутать несколько входов весьма просто. А тут ты сам пишешь и всё видишь как оно работает. Или оформляешь в виде собственной функции, которая лично тебе приятнее и понятнее.
Boris_K не все умеют писать на ST, кому-то понятнее именно CFC, кто схемы умеет читать, но при этом не программер...
Валенок нет, я предполагаю, что производя контроллеры и программируемые реле один производитель мог пойти по одному пути, сделав ОДИНАКОВО и это было бы разумнее.
Здесь неоднократно обсуждалось что для в util.blinkе весьма неудобно работает enable. И если примочка в КДС делается двумя строчками, то в OL - это сложнее. Вопрос - накой перетягивать гимор из чужой среды в свою ?
А как работает блинк в других средах ?
Валенок надо будет посмотреть как в других средах. Тоже интересно.
Посмотрел в Zelio Logic, там вообще нет Blink, есть таймер Li который можно настроить на работу аналогично Blink в OwenLogic но при этом в настройках можно менять с какого состояния начать работу при Enable=1
с true или false, при EN=0 счет сбрасывается.