PDA

Просмотр полной версии : Программа работает - нет выхода на Outputs (DO1) (Выход1)



dr_alf
05.09.2012, 11:43
Программа на контроллер ПЛК 73 М.
Среда программирования CoDeSys, язык реализации LD.

PROGRAM PLC_PRG
VAR_INPUT
d1 AT %IX0.0.0.0: BOOL;
END_VAR
VAR_OUTPUT
led AT %QB0.4.4: BOOL;
out AT %QD0.1.0: BOOL;
END_VAR

Замыкаю концевик (переменная d1) на дискретном входе(D|1).
Засвечивается светодиод К1(переменная led) на панели контроллера.
На выходе DO1 (out) собрана электрическая цепь с лампочкой, которая никак не хочет засвечиваться.

При работе программы переменные d1, led, out меняют свое значение с FALSE на TRUE.

Kirill
05.09.2012, 11:46
Тут вопрос к тому, какую цепь вы собрали на выходе.
Если в программе все засвечивается и изменяет свои значения, значит внутри все в порядке.
Обратите внимание, что 4 выхода ПЛК73 - транзисторные ключи, а не обычные контакты реле.

kgsh82
05.09.2012, 11:57
Сходу ошибка: out - тип REAL, led - BYTE.

Зачем в PLC_PRG входные и выходные переменные? Это ведь не функциональный блок. Компилятор не ругается, но кому Вы их передавать будете? Обзовите переменные в конфигурации.
Код на ST примерно такой:
IF di1 THEN
led:=1;
out:=1.0;
END_IF

dr_alf
05.09.2012, 12:08
Тут вопрос к тому, какую цепь вы собрали на выходе.
Если в программе все засвечивается и изменяет свои значения, значит внутри все в порядке.
Обратите внимание, что 4 выхода ПЛК73 - транзисторные ключи, а не обычные контакты реле.
В режиме онлайн в программе CoDeSys, вкладка "Ресурсы" ->"Конфигурация ПЛК" ->"Configuratio[FIX] ->"Outputs[FIX] ->Выбираю "Выход1" и в окне "Запись переменной" выставляю "1" -лампочка засвечивается, "0" гаснет. И с самого контроллера с меню также включается. А с программы никак, может я программу как-то не так составил?

dr_alf
05.09.2012, 12:17
Сходу ошибка: out - тип REAL, led - BYTE.

Зачем в PLC_PRG входные и выходные переменные? Это ведь не функциональный блок. Компилятор не ругается, но кому Вы их передавать будете? Обзовите переменные в конфигурации.
Код на ST примерно такой:
IF di1 THEN
led:=1;
out:=1.0;
END_IF

Я в программировании пока что не очень силен, нужно будет помедитировать :) Спасибо за подсказку, буду пробовать.

kgsh82
05.09.2012, 12:20
Я в программировании пока что не очень силен, нужно будет помедитировать :) Спасибо за подсказку, буду пробовать.

Задачу опишите подробнее - подскажем

dr_alf
05.09.2012, 14:05
Так работает (на ST):
PROGRAM PLC_PRG
VAR
di AT %IX0.0.0.0: BOOL;
led AT %QB0.4.4: BOOL;
out AT %QD0.1.0: REAL;
END_VAR
===========================
IF di=1 THEN
led:=1;
out:=1.0;
END_IF
IF di=0 THEN
led:=0;
out:=0.0;
END_IF

Замкнут концевик - светится светодиод и светится лампочка (в общем это и есть задача).
Разомкнут концевик - все отключено
Как реализовать эту программу на языке LD или FBD.

Kirill
05.09.2012, 14:36
попробуйте так на ld
(см вложение)

dr_alf
05.09.2012, 15:23
Kirill, kgsh82 спасибо все заработало, задача решена, принцип мне ясен.