PDA

Просмотр полной версии : Программирование ПЛК100



Def-Def
27.05.2012, 20:16
Здравствуйте! Помогите пожалуйста начинающему программисту!!! Мне нужно запрограммировать ПЛК-100, задача состоит в том, чтобы пятью входами ПЛК управлять пятью выходами. Выходы это будут лампочки)). При замыкании 1-ого ключа должны загореться 2 и 4 лампочки, 2-ой ключ 1 и 4 лампочки, 3-ий ключ 3 и 4 лампочки, 4-ый ключ 2-5 лампочки, 5-ый ключ 1 и 5 лампочки. Сложность состоит в том, что если я хочу замкнуть например сразу 4 ключ, то сначала должны сработать 1,2,3 ключи потом так сказать 4, проще говоря чтобы был перебор. Если я хочу выключить все лампочки, то если я находился на 5 ключе допустим, чтобы перебор пошел назад до первой позиции и только потом вся система так сказать отключилась. Также если я хочу перейти например со 2-го ключа к 5-му,должен тоже произойти перебор и назад также. Хотел бы узнать еще на каком языке программирования это лучше осуществить. И подходит ли здесь ПЛК-100.

capzap
27.05.2012, 20:45
Вам преподавали в учебном заведении по информатике, такие понятия как анализ и синтез логических схем. Нарисуйте для себя таблицу истинности для своей задачи, сперва без переходов отработайте, а когда все будет исправно работать, начнете добавлять условия, что то типа того: "если включенный тумблер больше/меньше текущего состояния, то в настоящей итерации к состоянию прибавить/уменьшить единицу, далее проверить условие не сравнялось ли текущее состояние с тем которое должно быть при включенном тумблере", по анализу/синтезу лучше всего использовать CFC, а для переходов плюс задержка по времени лучше организуется на ST

rovki
27.05.2012, 21:43
Здравствуйте! Помогите пожалуйста начинающему программисту!!! Мне нужно запрограммировать ПЛК-100, задача состоит в том, чтобы пятью входами ПЛК управлять пятью выходами. Выходы это будут лампочки)). При замыкании 1-ого ключа должны загореться 2 и 4 лампочки, 2-ой ключ 1 и 4 лампочки, 3-ий ключ 3 и 4 лампочки, 4-ый ключ 2-5 лампочки, 5-ый ключ 1 и 5 лампочки. Сложность состоит в том, что если я хочу замкнуть например сразу 4 ключ, то сначала должны сработать 1,2,3 ключи потом так сказать 4, проще говоря чтобы был перебор. Если я хочу выключить все лампочки, то если я находился на 5 ключе допустим, чтобы перебор пошел назад до первой позиции и только потом вся система так сказать отключилась. Также если я хочу перейти например со 2-го ключа к 5-му,должен тоже произойти перебор и назад также. Хотел бы узнать еще на каком языке программирования это лучше осуществить. И подходит ли здесь ПЛК-100.
Это абстрактная задача или есть реальное применение -первый вопрос ?.Второй вопрос- вам обязательно ее реализовывать на ПЛК ,потому как и ПР предостаточно ?И вы не сказали с какой частотой (задержкой) должны меняться комбинации ,при переходе с 1 на 5 ключ ,например .:rolleyes:
Я могу вам сделать проект на ПР ,а Вы потом переложите его в кодесис для ПЛК на FDB.
Разбейте весь алгоритм на блоки и реализуйте по частям .Например ,выходной блок -шифратор ,который преобразует унитарный код с ключей в нужное состояние выходов (лампочек) .Для этого достаточно 5 двухвходовых элементов "ИЛИ".....
Если это какая то задачка для диплома или еще чего подобного ,то я пас...

lara197a
28.05.2012, 08:44
Функция CASE вам в помощь.
(см. справку)

Def-Def
28.05.2012, 09:12
Это абстрактная задача или есть реальное применение -первый вопрос ?.Второй вопрос- вам обязательно ее реализовывать на ПЛК ,потому как и ПР предостаточно ?И вы не сказали с какой частотой (задержкой) должны меняться комбинации ,при переходе с 1 на 5 ключ ,например .:rolleyes:
Я могу вам сделать проект на ПР ,а Вы потом переложите его в кодесис для ПЛК на FDB.
Разбейте весь алгоритм на блоки и реализуйте по частям .Например ,выходной блок -шифратор ,который преобразует унитарный код с ключей в нужное состояние выходов (лампочек) .Для этого достаточно 5 двухвходовых элементов "ИЛИ".....
Если это какая то задачка для диплома или еще чего подобного ,то я пас...

Это реальная задача, нужно обязательно реализовать ее на ПЛК, время задержки 1 секунда, при переходе на каждую позицию. Был бы очень вам признателен, если бы вы сделали его на ПР,потом бы я его переложил конечно в кодесис.

Yegor
28.05.2012, 12:24
http://images.devs-on.net/Image/D7k169RfEr3CULuL-CoDeSysselector.png

Так как не указан способ выключения всех лампочек, предлагаю реализовать это самостоятельно. Нужно лишь добавить секцию в блок «Номер ключа > INT», которая будет устанавливать 0. От описанного в комментарии побочного эффекта можно избавиться введением проверки на равенство номера текущего состояния номеру конечного на выходе триггера. Привязать таймер к замыканиям ключей можно так же сравнением текущего и конечного состояния в «обратной связи» таймера.

capzap
28.05.2012, 13:23
:) эх, Анатолий и Егор не понимаете Вы сути происходящего, какое же это тогда программирование ПЛК, это получиться копирование, сдаст он эту работу, получит галочку в зачет, а знаний не прибавиться, а потом и летают турбины по Саяно-Шушенской :)

Yegor
28.05.2012, 13:37
Да я для себя больше делал — руку набиваю. Свой проект уже аки ком в горле. В следующий раз при подозрениях на «зачёты» не буду так альтруизничать. А пока удаляю проектный файл. Готов предоставить при более полном описании реальной задачи или ближе к июлю когда студенческая пора пройдёт :-D

Def-Def
28.05.2012, 14:22
Да я для себя больше делал — руку набиваю. Свой проект уже аки ком в горле. В следующий раз при подозрениях на «зачёты» не буду так альтруизничать. А пока удаляю проектный файл. Готов предоставить при более полном описании реальной задачи или ближе к июлю когда студенческая пора пройдёт :-D
Спасибо тебе большое. Я не студент, задача реальная. Кроме SIEMENS LOGO! ничего не программировал, а тут срочно нужно было в CoDeSys решить задачу.

Валенок
28.05.2012, 18:05
Не раскрыта тема про >1 ключа одновременно

rovki
28.05.2012, 18:18
Если это реальная задача ,то зачем ее решать за 10руб ,когда можно за 3 .А проект я сделал на ПР в тот же час ,но не выкладывал ....
только принтскрин могу.Можно и попроще ,но за отдельную плату :D
смысл схемы- на выходе шифратор унитарный код в код лампочек ,на его входе счетчик в унитарном коде с верхней и нижней уставкой счета .есть стек ,на две ячейки в котором сохраняется текущее и предыдущее значение номера нажатого ключа .И есть преобразователь унитарного кода ключей в целочисленный код ,который запоминается в стеке ,всякий раз при замыкании любого ключа ....Да нажимать можно только один ключ одновременно ...
Понравился вариант Егора .

Валенок
28.05.2012, 18:30
Да нажимать можно только один ключ одновременно ...

Дядька рядом стоит и не разрешает больше одного жать ?

rovki
28.05.2012, 18:54
НЕ а ,кнопки разнесены на расстояние больше чем между пальцами одной руки:D :D
А иначе нужно приоритеты вводить ,что то же не проблема ,но не было в ТЗ:) ,либо самое простое ставить переключатель галетный .

Валенок
28.05.2012, 22:08
,кнопки разнесены на расстояние больше чем между пальцами одной руки:D :D
А если к стене прислонился 2мя руками. На кнопки попал :confused:
Может проигнорить ?

rovki
28.05.2012, 22:12
Вторую руку??Тогда галетник

Валенок
28.05.2012, 22:14
ну можно и так. пока не отпустят первую

Def-Def
29.05.2012, 13:41
Люди добрые помогите пожалуйста!!!!!!как реализовать в схеме Егора,чтобы 5 лампочка была стоповая, т.е. при нажатии на кнопку стоп загоралась только одна пятая лампочка, а все остальные гасли.

Yegor
29.05.2012, 16:31
Говорю же просто нулевую секцию добавь и маску на нулевой индекс поставь соответствующую.

http://images.devs-on.net/Image/mQKnmQd8DHQS3ILc-CoDeSysblinkerp.png


Понравился вариант ЕгораСпасибо, буду стараться.

lara197a
29.05.2012, 16:57
Конечно все это вышеперечисленное интересно но:
Писал еще во 2-м сообщении, возьмите и согласно булевой математике присвойте лампочки(кнопки) пятибитному числу(11111). Переводите комбинацию от все выключено(00000) до все включено (11111) через инженерный калькулятор в dec. получите 32 варианта.
Используя функцию САSE запишие их.

CASE Var1 OF
Value1: Instruction
......Value31: Instruction 1;
END_CASE
Куда проще?
А как это можно на ПР написать? Теоретически можно, но вот практически?