Сброс это обычная перезагрузка.
Вид для печати
Связь прерывается после того как проект запишется.
Подскажите над реализацией таймера со сбросом.
В oscat есть TP_1 но он использует внутри блока T_PLC_MS, только вот незадача, где ж его взять без ПЛК ?
:confused::confused::confused:
Там же где и TP_1 - в библиотеке OSCAT
Упреждая вопрос -где взять T_PLC_US? Там же где и TP_1 и T_PLC_MS - в библиотеке 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;
Код: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;
petera, нашел, что-то в первый раз прогрлядел и подумал это функция самого ПЛК
з.ы. попробую и с TIME еще.
capzap точно работает, спасибо за наводку. и доп функций не надо в принципе
Добрый вечер. Прошу помощи в реализации алгоритма. Имеем два помещения, в каждом по одной лампе и по три проходных выключателя. Как реализовать выключение всех ламп одним выключателем "kn7" (см. схему).
Вложения не читаются.
Т.е. всего 2 лампы и 6 выключателей?Цитата:
Имеем два помещения, в каждом по одной лампе и по три проходных выключателя.
Т.е. это уже 7-й выключатель, который предназначен только для выключения?Цитата:
Как реализовать выключение всех ламп одним выключателем "kn7" (см. схему).
Выключатели в виде кнопки?
---
k1,k2,k3 - выключатели (кнопки) в помещении 1
k1,k2,k3 - выключатели (кнопки) в помещении 2
k7 - выключатель всех лампочек
lamp1 - лампочка в помещении 1
lamp2 - лампочка в помещении 2
Да все правильно. Спасибо за подсказку.
Добрый вечер. Уважаемые форумчане, подскажите пожалуйста, в связке "ПЛК160+Панель оператора" влияет ли на время цикла программы кто будет мастером а кто слейвом
не влияет.
Большое спасибо!
Здравствуйте!
Подскажите, пожалуйста, в чём подвох, вот такое выражение на ST компилируется без замечаний Вложение 11324 а на LD с предупреждениемВложение 11325.
Спасибо.
добрый день, подскажите пожалуйста литературу для самостоятельного изучения языка программирования ST???
Предупреждение это не ошибка:)
Обе конструкции будут работать одинаково, подвоха нет.
Просто строка на языке LD это фрагмент релейной схемы и предполагает в начале комбинацию "контактов", а завершается "катушкой". Эта "катушка" принимает значение результата логических операций состояния "контактов".
Так как Ваш POU KALIBR_POU не имеет булевого выхода, то компилятор и выдает предупреждение, а за одно сообщает, что результату выполнения логических операций между контактами этой строки будет присвоено значение True. Только это значение не будет присвоено ни кому, т.к. строка не заканчивается "катушкой"
Прочитайте книгу http://prolog-plc.ru/pb1 может сами разберетесь с ответом на свой вопрос,а то он не совсем понятен
Здравствуйте!
При программировании плк63, столкнулся с проблемой - не получается изменять значение переменной с контроллера (работаю с CFC), для этого, на сколько я понял, нужен блок "ReadDisplay". С переменными coilpos, linepos - разобрался, size - количество считываемых знаков, а вот mode - выбор экрана пока не очень понятно - видимо не во всех режимах экрана можно изменять переменные.
Подскажите, пожалуйста, как работать с этим блоком и как управлять переменной через контроллер?
Спасибо!
Подскажите как будет выглядеть ФБ на языке СFС с таким режимом работы?
fL13 – Светильник настенный галоген 220V.
Режим работы: Вкл/выкл от выключателя fKN13 в любое время на 100%.
Вкл. от датчика движения fD1 на 50% с 21-00часов до 07-00 часов. (время настраиваемое).
Выкл. по второму датчику fD2 на втором этаже с 21-00часов до 07-00 часов. (время настраиваемое).
При движении в обратном направлении от fD2 к fD1 алгоритм тот-же.
Будет выглядеть как квадратик с ножками слева и справа.Цитата:
Подскажите как будет выглядеть ФБ на языке СFС с таким режимом работы?
Формулируйте :
Не могли бы Вы написать мне такую-то программу ?
Скачайте диск "NAVIGATOR PLC". http://kipshop.ru/CoDeSys/Navigator_PLC_DVD_v3.iso
Там всё есть.
Ну, а конкретно по Вашему вопросу - во вложении пример с того же диска (только на ST).
Объясняю задачу: управление поворотным краном через плк63 с жки дисплеем, положение крана 0...100% (0...10В), значение задается с контроллера кнопкой "<" и ">" так же в %-тах естественно. как то так! Рассматривал примеры написанные ST но я в нем не силен и понимаю только отдельные элементы. Поэтому нужен пример в CFC.
Боюсь долго ждать будете пример на CFC так как на ST это гораздо проще.
Жаль, так понял что в CFC вообще блоков работы с кнопками нет.
а как будет выглядеть код на ST для простенькой задачи: изменение значения переменной Х от 0 до 100 с клавиатуры контроллера плк63?
если кому не сложно, хотя бы в общих чертах опешите пожалуйста программу!
заранее спасибо!
http://www.owen.ru/forum/showthread.php?t=13573 а здесь вообще ничего подходящего нет?
как раз эти файлы и изучаю, похожее есть ( потихоньку "перевариваю" то что там написано :D)...
p.s. разобрался, все оказалось еще проще: во вкладке "конфигурация плк" есть переменная под названием "клавиатура" типа байт, вот с ней и надо работать, при нажатии кнопки или сочетании кнопок, эта переменная меняет свое значение, для каждой кнопки это значение константа, при сочетании клавиш константы складываются, остается лишь вычленить нужные значение, например блоком EQ (=) (как в моем варианте - этого было достаточно) или любым подходящим.
Спасибо за наводки на инфу и за помощь!
В 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
Далее можете обращаться к значениям кнопок из любого места просто Key.Up Key.Down и т.д.Цитата:
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;
Что касается CFC, то никто не сказал что это невозможно, просто это не самый короткий путь.
Если выложите, что у вас уже есть то будет проще давать советы, а то пока это выглядит как "напишите за меня программу".
Вот ФБ который при нажатии на кнопку + или - добавляет или убавляет значение переменной указатель на которую передается этому ФБ:
Цитата:
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;
И остается Вам только вывести эту переменную на экран, как это сделать есть тут:
Вот мой вариант программы на CFC как управлять задвижкой с кнопок и через дискретные входы плк63, единственное, при нажатии и кнопок "< >" не только изменяется положение задвижки, но и переключаются экраны:D (думаю проблема решаема)
В вашем варианте при нажатии на кнопку +/- и ее удержании за 1 сек положение задвижки будет меняться на 50%. Выводы на экран желательно разносить по циклам, иначе моргать будет. Если вам достаточно одного экрана можете просто отключить остальные, или вызывать при каждом нажатии кнопок функцию SetWorkScreen(ScreenNumber:=0);
Добрый вечер. Поделитесь пожалуйста опытом, кто-нибудь ставил КДС на планшет под Виндовс и какой был результат
ИП-320. на экране №1 определил две кнопки. хочу сделать так, чтобы при нажатии на 1-ю кнопку устанавливался бит в "1"в плк в определенной переменной и одновременно происходил переход на экран №2. а при нажатии на 2-ю кнопку - также бит в "1" в другой переменной и переход на экран № 3. Я так понял, что в конфигураторе ип-320 можно или присвоить какое-то значение переменной, или выполнить переход на другой экран. А мне надо одновременно выполнить и то, и другое. Спасибо всем, кто откликнется без мании величия. И я пока только в CFC понимаю.
В визуализации нужно собрать цепь нажав стоп и ворота, нажать "ручной", потом подготовить для автоматической работы станка нажав "формы вниз" , формы открыть и дорны вниз. Затем нажать авто и старт. на панели хочу реализовать выбор ручного и автоматического режима с переходом на соответствующий экран