PDA

Просмотр полной версии : Грамотное управление двигателем



alex0608
22.02.2013, 15:10
Недавно разбираюсь с возможностями ПЛК 110
Уважаемые специалисты подскажите как правильно реализовать следующее:
Необходимо управлять (маломощьным 24В) двигателем постоянного тока через релейные выходы ПЛК, так чтобы реализовать 3 возможных состояния, покой, работа в одном направлении, работа в обратном.
Чисто теоретически понимаю как можно реализовать используя аж 4!:confused: релейных выхода ПЛК, но хочется узнать, как это грамотно сделать?
Так же хочется понять как управлять выходами что бы в момент переключений не сделать КЗ по питанию?
Спасибо за любые подсказки!

Dom13
22.02.2013, 17:23
четыре выхода
два выхода, и двигатель с двумя обмотками
два выхода и четыре реле

других вариантов наверное нет....

alex0608
22.02.2013, 17:46
Dom 13, Если, честно не совсем понял предложенные варианты...
Сразу оговорюсь, двигатель простой из которого выведены два провода питания. Промежуточных элементов не потребуется т.к. это микро-двигатель с малым током потребления. Значит получается 4 релейных выхода ПЛК - по-любому задействовать?
А как насчет кЗ по питанию, в моем понимании оно запросто может происходить если 4 реле перещелкнуть за один такт программы ПЛК? Разьве я неправ? Знатоки -подскажите...

capzap
22.02.2013, 17:49
Вам чтоб друг друга понять, видимо картинками надо общаться :) а так между переключением пар проводов можно в плк и паузу делать

Адрей
22.02.2013, 17:56
четыре выхода
два выхода, и двигатель с двумя обмотками
два выхода и четыре реле

других вариантов наверное нет....

Почему нет. 2 выхода два реле.

alex0608
22.02.2013, 17:58
Вам чтоб друг друга понять, видимо картинками надо общаться :) а так между переключением пар проводов можно в плк и паузу делать
Спасибо за дополнение capzap
Я как раз сам к этому неприятному решению пришел и немогу поверить, что такая на первый взгляд простая задача, решается настолько сложно, что нужно еще и таймеры какие нибудь использовать или тригеры возможно (кстати что посоветуете)?
Вот мне и хотелось бы прийти к неутешительному резюме - что то что мне чайнику пришло в голову, соответствует решению спецов, а именно использовать 4 релейных выхода, да еще и таймауты в программе организовывать...

alex0608
22.02.2013, 18:03
Почему нет. 2 выхода два реле.
Ну это вы имеете ввиду, в дополнительных реле помимо 2х выходных у плк?
Итого 4 полутся все равно. Это мне не хотелось бы тк, нужно их запитывать куда-то ставить и т.п. Лучше уж 4 выхода использовать в моем случае...
Все равно остается вопрос стем как их грамотно переключить? (Опять таки проблема коротышки питания)

Адрей
22.02.2013, 18:25
Ну это вы имеете ввиду, в дополнительных реле помимо 2х выходных у плк?
Итого 4 полутся все равно. Это мне не хотелось бы тк, нужно их запитывать куда-то ставить и т.п. Лучше уж 4 выхода использовать в моем случае...
Все равно остается вопрос стем как их грамотно переключить? (Опять таки проблема коротышки питания)
Ну не хотите ставить 2 дополнительных. Тогда используйте свободные дополнительные контакты тех же двух реле только внутри ПЛК.

petera
23.02.2013, 07:42
Сразу оговорюсь, двигатель простой из которого выведены два провода питания. Промежуточных элементов не потребуется т.к. это микро-двигатель с малым током потребления. Значит получается 4 релейных выхода ПЛК - по-любому задействовать?
А как насчет кЗ по питанию, в моем понимании оно запросто может происходить если 4 реле перещелкнуть за один такт программы ПЛК? Разьве я неправ?
Конечно Вы не правы.
КЗ будет если Вы в своей программе умышленно или по ошибке включите сразу 4 реле или не ту пару реле.
Программа в ПЛК выполняется циклически.
В каждом цикле ПЛК в программе последовательно выполняются операторы в строках с первой до последней, если нет операторов переходов.
А вот в физические выходы контроллера (реле) записывается та комбинация их состояний, которая получается после выполнения последней строки программы.
И записывается она один раз, в конце цикла. Это основы работы ПЛК.
Т.е. если в начале цикла было некоторое состояние реле ПЛК и Вы внутри программы, в одном цикле, сто раз поменяли их состояние, то выходы ПЛК за время одного цикла не будут сто раз менять свое состояние, а только один раз.

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

И вообще в начале всего была контактно-релейная схема автоматизации, которую изобрели в СССР в 30-ых годах.
Она и была реализована "буржуинами" в первых ПЛК в виде языка LD.
Если реле ПЛК имеют одну пару Н.Р. контактов, то в программе Вы можете использовать и Н.З контакты. И ни какие внешние реле не нужны.
Вот пример блокировки от КЗ при нажатии одновременно кнопок "Влево" и "Вправо"
http://toolson.net/ImageData/GifAnimation/588799.gif

Или то же самое на FBD, но без "мультика". Можете поверить мне на слово. Работает точно так же, как и на LD.:)
http://s019.radikal.ru/i624/1302/34/212d6b6639b0t.jpg (http://s019.radikal.ru/i624/1302/34/212d6b6639b0.png)

petera
23.02.2013, 09:42
Необходимо управлять (маломощьным 24В) двигателем постоянного тока через релейные выходы ПЛК, так чтобы реализовать 3 возможных состояния, покой, работа в одном направлении, работа в обратном.
Чисто теоретически понимаю как можно реализовать используя аж 4!:confused: релейных выхода ПЛК

Если жалко 4 реле ПЛК, то нужно использовать дополнительный блок питания или заменить существующий на другой с двумя выходными напряжениями.
http://s019.radikal.ru/i619/1302/1f/dbef8d386f10t.jpg (http://s019.radikal.ru/i619/1302/1f/dbef8d386f10.png)

rovki
23.02.2013, 09:54
Если контакты реле с переключением ,то нужно 2реле и ни каких КЗ.
И зачем тут ПЛК:confused:

rovki
23.02.2013, 10:10
Если жалко 4 реле ПЛК, то нужно использовать дополнительный блок питания или заменить существующий на другой с двумя выходными напряжениями.
http://s019.radikal.ru/i619/1302/1f/dbef8d386f10t.jpg (http://s019.radikal.ru/i619/1302/1f/dbef8d386f10.png)

в этом варианте нужно позаботится ,что бы 2 реле одновременно не сработали .;)

petera
23.02.2013, 16:57
в этом варианте нужно позаботится ,что бы 2 реле одновременно не сработали .;)
Нужно не забывать делать в программе элементарные вещи, например так
http://s006.radikal.ru/i214/1302/56/51de141730d8t.jpg (http://s006.radikal.ru/i214/1302/56/51de141730d8.png)
и все будет в порядке.
К.З. будет только если одно реле сломается, но если использовать схему с одним источником питания и 4 реле, то и здесь если одно реле сломается будет К.З.
А по науке вероятность выхода из строя одного реле из двух ниже, чем вероятность выхода одного реле из четырех.
Если блок питания нормальный, то и при К.З. ничего не случится.
Например МенВеловские блоки питания нормально себя чувствуют, если в качестве нагрузки использовать обычный гвоздь.
После устранения К.З. работают как нив чем не бывало.

Terrano1992
25.02.2013, 12:20
Вариант с двумя внешними реле, каждое из которых имеет одну переключающую группу контактов (т.е. в зависимости от состояния подключает свой вывод DC-моторчика либо к "плюсу", либо к "минусу"), по каким-то причинам не рассматривается? А зря... "Релейный H-bridge" - надежная схема, десятилетиями отработанная на автомобильных электростеклоподъемниках и сервоприводах "центрального замка".

petera
25.02.2013, 13:42
Вариант с двумя внешними реле, каждое из которых имеет одну переключающую группу контактов (т.е. в зависимости от состояния подключает свой вывод DC-моторчика либо к "плюсу", либо к "минусу"), по каким-то причинам не рассматривается? А зря... "Релейный H-bridge" - надежная схема, десятилетиями отработанная на автомобильных электростеклоподъемниках и сервоприводах "центрального замка".
Ни чего не имею против.:) Я с этим согласен.
Но был конкретный вопрос и конкретное желание

Ну это вы имеете ввиду, в дополнительных реле помимо 2х выходных у плк?
Итого 4 полутся все равно. Это мне не хотелось бы тк, нужно их запитывать куда-то ставить и т.п. Лучше уж 4 выхода использовать в моем случае...
Все равно остается вопрос стем как их грамотно переключить? (Опять таки проблема коротышки питания)
И как вариант было предложено техническое решение.
А еще, если применить одну МС -драйвер управления двигателем, то можно и при одном источнике питания использовать два выхода ПЛК и дополнительно иметь режим электронного торможения при остановке вращения моторчика.

Terrano1992
26.02.2013, 12:08
Конкретное желание понятно... Но в данном случае, как мне кажется, выгоднее потратиться на два внешних реле и получить сразу несколько преимуществ:
1) Экономим 2 выхода ПЛК;
2) Полностью исключаем возможность КЗ даже при неисправных реле или некорректном управлении ими - защищаться нужно только от токовой перегрузки моторчика;
3) Обходимся однополярным источником питания;
4) На халяву получаем динамическое торможение мотора (когда оба его вывода подключены к "минусу" или "плюсу", т.е. закорочены между собой). Вот тут нюанс - если по каким-то причинам желательно иметь торможение "свободным выбегом", то понадобится третье реле с NO контактом, включенное последовательно с мотором, и, вероятно, еще один выход ПЛК (либо дополнительные группы NO в первых двух реле, чтобы сделать на них функцию "И" для управления третьим).

petera
26.02.2013, 12:44
По моему топик-стартер давно ушел и все, что мы предлагаем ему уже не интересно. :)

alex0608
26.02.2013, 16:32
Если жалко 4 реле ПЛК, то нужно использовать дополнительный блок питания или заменить существующий на другой с двумя выходными напряжениями.

Спасибо за развернутый ответ!
Поскольку я в свое время много писал на паскале(delphi) взял для первых экспериментов язык ST
Из-за этого приведенные Вами конструкции пока не совсем понял. Однако то что вы описали по поводу тактов работы контролера вполне понятно. Собственно я так и представлял. Опасение у меня возникало что если даже при переключании зажигать правильные реле, все равно можно на некоторое время создать ситуацию при которой контакты реле, которое, например, посылало плюс (на один из контактов мотора) еще не разомкнулось, а реле которое подает минус уже успело замкнуть контакты. Я так понимаю такое возможно даже если в первом цикле ПЛК размыкали а во втором цикле замыкаем. Реле же имеет инерцию в конце концов. Или я неправ...
В любом случае возможно зря, но я создал небольшие таймеры задержки на отключения эмитирующие реальную инертную работу реле, и переключаю ориентируясь на их показания.
Работает;)

petera
26.02.2013, 17:50
Спасибо за развернутый ответ!
Поскольку я в свое время много писал на паскале(delphi) взял для первых экспериментов язык ST
Из-за этого приведенные Вами конструкции пока не совсем понял. Однако то что вы описали по поводу тактов работы контролера вполне понятно. Собственно я так и представлял. Опасение у меня возникало что если даже при переключании зажигать правильные реле, все равно можно на некоторое время создать ситуацию при которой контакты реле, которое, например, посылало плюс (на один из контактов мотора) еще не разомкнулось, а реле которое подает минус уже успело замкнуть контакты. Я так понимаю такое возможно даже если в первом цикле ПЛК размыкали а во втором цикле замыкаем. Реле же имеет инерцию в конце концов. Или я неправ...
В любом случае возможно зря, но я создал небольшие таймеры задержки на отключения эмитирующие реальную инертную работу реле, и переключаю ориентируясь на их показания.
Работает;)
То, что сделано на LD
http://s006.radikal.ru/i214/1302/56/51de141730d8t.jpg (http://s006.radikal.ru/i214/1302/56/51de141730d8.png)
полностью соответствует следующему на ST

K1:=to_Left AND NOT K2; (*Первая строка LD*)
K2:=to_Right AND NOT K1; (*Вторая строка LD*)
http://s45.radikal.ru/i107/1302/4d/70cc58276ee4t.jpg (http://s45.radikal.ru/i107/1302/4d/70cc58276ee4.png) http://s51.radikal.ru/i133/1302/81/7e4425d23f28t.jpg (http://s51.radikal.ru/i133/1302/81/7e4425d23f28.png)
http://s017.radikal.ru/i419/1302/91/4c6f685144aat.jpg (http://s017.radikal.ru/i419/1302/91/4c6f685144aa.png) http://s019.radikal.ru/i634/1302/6e/2a093e3f63d8t.jpg (http://s019.radikal.ru/i634/1302/6e/2a093e3f63d8.png)

Конечно мне нравиться ход Ваших мыслей, по поводу инерционности механической части реле. Нравиться то, что Вы уже на начальном этапе написания программы рассматриваете различные возможные состояния управляемого объекта, в том числе и не штатные ситуации.
Но лично мое мнение по поводу дополнительных таймеров это уже сверх перестраховка. Ни где подобного не видел и сам не делаю. Вроде все работает без проблем.
Конечно в изменение состояния реле будет происходить в соседних циклах работы ПЛК.
Но реле имеют задержку и на замыкание и на размыкание контактов, я думаю они будут примерно одинаковыми.
Ну или сделайте просто задержку переключения на один цикл. Зачем Вам таймеры городить?

Amko
26.02.2013, 18:51
Ставил эксперименты. Новые пускатели на 24В одной немецкой фирмы включаются в течении 80-100мс. Если пускатель старый (да еще и пыль/грязь внутрь попала), то выключается он уже с измеряемой задержкой.
Надо обязательно делать электрическую защиту, и я бы не поленился добавлять задержку переключения.

OrionK
27.02.2013, 09:56
Как вариант делайте механическую защиту - питание на второе реле проводите через нормально замкнутый контакт первого реле. По сути это то же самое, что описывает вторая строка LD только на механическом уровне.

petera
27.02.2013, 14:36
Как вариант делайте механическую защиту - питание на второе реле проводите через нормально замкнутый контакт первого реле. По сути это то же самое, что описывает вторая строка LD только на механическом уровне.
Ну не хотел он внешние реле применять, иначе зачем вся эта тема

Ну это вы имеете ввиду, в дополнительных реле помимо 2х выходных у плк?
Итого 4 полутся все равно. Это мне не хотелось бы тк, нужно их запитывать куда-то ставить и т.п. Лучше уж 4 выхода использовать в моем случае...

Когда писал первые программы на LD в Кодесисе, то не мог понять почему те приемы программирования, которые я использовал в LD программах для других ПЛК в Кодесис не работают.
Оказалось, что в "правильных" ПЛК программа выполняется по столбцам.
Сначала первый сверху вниз, затем второй, затем третий ну и т.д в зависимости от марки ПЛК столбцов может быть и 5 и 7. Последним выполняется столбец с катушками. По этому изменение состояния катушек в текущем цикле будет использовано в столбцах с контактами только в следующем цикле.
А в Кодесис каждая строчка LD выполняется слева на право. И состояние катушек, измененных в строках выше текущей, сразу учитываются в текущей.
Пришлось перестраиваться. Не знаю, что лучше, но для такой же LD программы, как эта
http://s006.radikal.ru/i214/1302/56/51de141730d8t.jpg (http://s006.radikal.ru/i214/1302/56/51de141730d8.png)
Для "правильного" контроллера между изменениями состояния К1 и К2 всегда будет пауза в один цикл.
http://s59.radikal.ru/i163/1302/7c/73b7e528ea9bt.jpg (http://s59.radikal.ru/i163/1302/7c/73b7e528ea9b.png) http://s40.radikal.ru/i090/1302/8d/8b73fdd35ac2t.jpg (http://s40.radikal.ru/i090/1302/8d/8b73fdd35ac2.png)
http://s57.radikal.ru/i157/1302/8f/63ca04b7eeb3t.jpg (http://s57.radikal.ru/i157/1302/8f/63ca04b7eeb3.png) http://s45.radikal.ru/i107/1302/9a/b84b40f35fbct.jpg (http://s45.radikal.ru/i107/1302/9a/b84b40f35fbc.png)

Olegis
28.02.2013, 14:00
Ну не хотел он внешние реле применять, иначе зачем вся эта тема

Когда писал первые программы на LD в Кодесисе, то не мог понять почему те приемы программирования, которые я использовал в LD программах для других ПЛК в Кодесис не работают.
Оказалось, что в "правильных" ПЛК программа выполняется по столбцам.
Сначала первый сверху вниз, затем второй, затем третий ну и т.д в зависимости от марки ПЛК столбцов может быть и 5 и 7. Последним выполняется столбец с катушками. По этому изменение состояния катушек в текущем цикле будет использовано в столбцах с контактами только в следующем цикле.
А в Кодесис каждая строчка LD выполняется слева на право. И состояние катушек, измененных в строках выше текущей, сразу учитываются в текущей.
Для "правильного" контроллера между изменениями состояния К1 и К2 всегда будет пауза в один цикл.
[
Позвольте не согласиться! Считаю, что ПЛК Овен как раз таки правильный и современный. Программу правильно надо выполнять именно по строкам(в частности для LD), а не по столбцам. Ну к примеру мне надо запомнить какой-то меркер(не выход ПЛК) в начале цикла, а в конце его уже сбросить. А выходы ПЛК будут сработаны в конце цикла работы ПЛК, но вначале читаются входа, выполняется программа. С выполнением по столбцам можно круто встрять. Зачем мне ждать следующего цикла, это ожидание всегда легко устроить программно, зачем тормозить весь процесс.

petera
28.02.2013, 15:23
Позвольте не согласиться! Считаю, что ПЛК Овен как раз таки правильный и современный. Программу правильно надо выполнять именно по строкам(в частности для LD), а не по столбцам. Ну к примеру мне надо запомнить какой-то меркер(не выход ПЛК) в начале цикла, а в конце его уже сбросить. А выходы ПЛК будут сработаны в конце цикла работы ПЛК, но вначале читаются входа, выполняется программа. С выполнением по столбцам можно круто встрять. Зачем мне ждать следующего цикла, это ожидание всегда легко устроить программно, зачем тормозить весь процесс.

Вообще-то я говорил про Кодесис, и ПЛК Овен тут не причем, версия LD Кодесиса будет так работать с любым ПЛК, который его (Кодесис) поддерживает, а это не только Овен.
На счет того, что LD в Кодесисе более правильный Вы не мне говорите, я приспособлюсь к любому варианту, а расскажите это тем японцам, которые делают FX или производителям других известных брендов.
К стати скриншоты были из ПО одного такого бренда. По круче Овена будет.
И в букварях по классическим ПЛК именно такой алгоритм работы LD описывается.
Каноническое описание LD определяет последний столбец, как столбец катушек и не важно какой там элемент маркер или выход ПЛК, все столбцы левее его это столбцы с контактами.
Канонический LD имитирует работу релейно-контактной схемы. И левая вертикальная шина является потенциальной, а правая имеет нулевой потенциал.

По этому, как и в реальной схеме ток протекает от левой шины к правой сразу через все столбцы с контактами и только затем может включить катушки, а не "бегает" по строчкам, что в реальной схеме не возможно.
Использование одной и той же катушки (не ее контактов, а именно самой катушки) в разных строках является для классического LD грубой ошибкой. Т.к. действительное состояние катушки определяется в самой последней строке, где она находится.

Olegis
28.02.2013, 16:52
А в Кодесис каждая строчка LD выполняется слева на право. И состояние катушек, измененных в строках выше текущей, сразу учитываются в текущей.
И это хорошо, дело в том что можно работать(прогонять программу) в режиме пошаговой отладки или по циклам. Поэтому у вас и поведение выходов физических отличается.


По этому, как и в реальной схеме ток протекает от левой шины к правой сразу через все столбцы с контактами и только затем может включить катушки, а не "бегает" по строчкам, что в реальной схеме не возможно.
Использование одной и той же катушки (не ее контактов, а именно самой катушки) в разных строках является для классического LD грубой ошибкой. Т.к. действительное состояние катушки определяется в самой последней строке, где она находится.

Правильно!Значит мы где друг друга не поняли.Но в Codesys сделано все как у всех и даже более универсально. В любом программируемом логическом контроллере(не в микроконтроллере) вначале читается образ входов, затем выполняется программа, затем только записывается образ выходов, и потом все сначала циклу.Возможно при пошаговой отладке можно войти в заблуждение(она не у всех реализована одинаково, именно визуализация отладки по шагам и по циклам),но в Codesys на LD и на FX также выполнение программы происходит не строчками, а цепями.Столбцы нужны для идентификации элемента цепи,например, цепь 001, в столбце A. Один строковый фрагмент-одна цепь, он отделен линиями. Но состояние выходов самого контроллера изменится только после выполнения программы. Японские контроллеры-все пошли от немецких. Там все также как и у всех ПЛК(не микропроцессор). В Codesys, как и у всех ПЛК, тот кто последний в конце программы изменил выход, то состояние и запишется в образ выходов, изменение состояние выхода по среди программы не вызовет его кратковременное срабатывание. Поэтому в Codesys есть опция: контроль множественной записи выхода.

К стати скриншоты были из ПО одного такого бренда. По круче Овена будет.
Функциональнее,чем Codesys(за спиной гигантский альянс производителей) или Step-7 вряд ли что пока придумали, у японцев очень продвинутые копии и аналоги!!!

petera
28.02.2013, 22:04
И это хорошо, дело в том что можно работать(прогонять программу) в режиме пошаговой отладки или по циклам. Поэтому у вас и поведение выходов физических отличается.


Правильно!Значит мы где друг друга не поняли.Но в Codesys сделано все как у всех и даже более универсально. В любом программируемом логическом контроллере(не в микроконтроллере) вначале читается образ входов, затем выполняется программа, затем только записывается образ выходов, и потом все сначала циклу.Возможно при пошаговой отладке можно войти в заблуждение(она не у всех реализована одинаково, именно визуализация отладки по шагам и по циклам),но в Codesys на LD и на FX также выполнение программы происходит не строчками, а цепями.Столбцы нужны для идентификации элемента цепи,например, цепь 001, в столбце A. Один строковый фрагмент-одна цепь, он отделен линиями. Но состояние выходов самого контроллера изменится только после выполнения программы. Японские контроллеры-все пошли от немецких. Там все также как и у всех ПЛК(не микропроцессор). В Codesys, как и у всех ПЛК, тот кто последний в конце программы изменил выход, то состояние и запишется в образ выходов, изменение состояние выхода по среди программы не вызовет его кратковременное срабатывание. Поэтому в Codesys есть опция: контроль множественной записи выхода.

Функциональнее,чем Codesys(за спиной гигантский альянс производителей) или Step-7 вряд ли что пока придумали, у японцев очень продвинутые копии и аналоги!!!
Я то Вас прекрасно понимаю, а вот Вы меня так и не поняли. Верней не поняли о чем я говорю. При чем здесь микропроцессоры/микроконтроллеры я о них не упоминал вовсе.

но в Codesys на LD и на FX также выполнение программы происходит не строчками, а цепями
Цепь в редакторе представляет из себя линейное соединение контактов и катушки, по чему я не могу назвать ее строкой программы? В чем разница в данном контексте между строкой и цепью?
И говорил я вовсе не о том когда в физические выходы ПЛК будет записан результат. А совсем про другое.
То, что в начале цикла опрашиваются физические входы ПЛК и запоминается их состояние до момента начала следующего цикла и то, что только после выполнения последней цепи LD полученный образ запишется в в физические выходы ПЛК мне объяснять не надо, я и сам это знаю. Посмотрите хотя бы пост#9 в этой теме http://www.owen.ru/forum/showpost.php?p=103215&postcount=9.
До Кодесиса я много лет писал программы для не Овеновских ПЛК и именно на LD.
Ну может не так сформулировал, как было нужно.

Действительно каждая цепь LD выполняется слева на право и в кодесисе и в каноническом ПЛК.
Но в Кодесисе если в конце цепи стоит катушка или маркер, а в следующей за ней цепи используются контакты этой катушки или маркера, то эта цепь получается продолжением предыдущей.
Это может повторяться и для следующей и следующей цепи.
И тогда фактически вся LD программа Кодесиса является одной длинной цепью.
Тогда не надо дурить народ и в редакторе представлять их как отдельные цепи даже если они и имеют разные порядковые номера.

В LD для канонического ПЛК для контактов берутся значения входов ПЛК из входного буфера-защелки и состояние контактов маркеров и контактов катушек(не путаь с физическими выходами) полученные из предыдущего цикла.

LD для канонического ПЛК полностью имитирует работу реальной релейно-контактной схемы. Где левая вертикальная шина является потенциальной, а правая имеет нулевой потенциал.
По этому, как и в реальной схеме ток протекает от левой шины к правой сразу по всем цепям(строкам) в столбцах которых на данный момент есть замкнутые контакты и включает катушки, а не "бегает" по строчкам, что в реальной электрической схеме не возможно.
И четыре картинки с описанием работы LD для "правильного" ПЛК http://www.owen.ru/forum/showpost.php?p=103614&postcount=22 не являются глюком имитации, а именно так тот ПЛК и работает.

И если взять две кнопки и два реле с Н.З контактами и собрать электрическую схему, как на LD
http://s006.radikal.ru/i214/1302/56/51de141730d8t.jpg (http://s006.radikal.ru/i214/1302/56/51de141730d8.png)
То эта схема будет в точности повторять работу LD для канонического ПЛК, а не для Кодесиса.
И для варианта LD канонического ПЛК ситуация, когда одно реле начинает размыкаться, а втрое в этот момент начнет замыкаться не возможна по определению.
Т.е. так, как советовали здесь бороться с КЗ с помощью внешних реле
http://www.owen.ru/forum/showpost.php?p=103219&postcount=11
http://www.owen.ru/forum/showpost.php?p=103505&postcount=16
А вот для такой же LD Кодесиса ситуация, когда одно реле начинает размыкаться, а втрое в этот момент начнет замыкаться будет всегда, если не предпринять дополнительных мер.

Olegis
28.02.2013, 23:58
Всё вы правильно говорите! Это все бесспорно.


А вот для такой же LD Кодесиса ситуация, когда одно реле начинает размыкаться, а втрое в этот момент начнет замыкаться будет всегда, если не предпринять дополнительных мер.
И это замечательно, что так есть. Просто существуют задачи, которые без этого свойства очень геморно сделать будет (или даже невозможно), обязательна нужна одновременность и даже синхронность. А вот пропустить нужное количество циклов не проблема. Т.е. в Codesys реализована некая универсальность, это не ошибка программистов-разработчиков Codesys или не правильный LD, этого желали многие автоматизаторы для своих не тривиальных задач.
Поэтому и пишут в мануалах, что программной блокировки не достаточно, нужна обязательная взаимная блокировка, выполненная физически на релейных контактах(или даже механическая связь между пускателями), да и ключи выходные могут пробиться, тогда блокировка в программе не спасет.

petera
01.03.2013, 04:31
Всё вы правильно говорите! Это все бесспорно.

И это замечательно, что так есть. Просто существуют задачи, которые без этого свойства очень геморно сделать будет (или даже невозможно), обязательна нужна одновременность и даже синхронность. А вот пропустить нужное количество циклов не проблема. Т.е. в Codesys реализована некая универсальность, это не ошибка программистов-разработчиков Codesys или не правильный LD, этого желали многие автоматизаторы для своих не тривиальных задач.
Поэтому и пишут в мануалах, что программной блокировки не достаточно, нужна обязательная взаимная блокировка, выполненная физически на релейных контактах(или даже механическая связь между пускателями), да и ключи выходные могут пробиться, тогда блокировка в программе не спасет.
Я с Вами согласен в том, что задачи бывают разные и в каждом конкретном случае для них возможно придется использовать разные способы их программной реализации.
И я не считаю, что LD Кодесиса хуже, чем LD канонического ПЛК.
Я же говорил, что мне все равно на каком из них писать программы.
Просто хотел показать различие в их работе для конкретной ситуации.
Давайте уже на этом придем к консенсусу.:)
А то наши с Вами рассуждения уже начинают выходить за рамки вопроса заданного в начале этой темы.

alex0608
27.08.2013, 14:55
Всем спасибо за участие в решении проблемы!

Lam-Ka
27.08.2013, 17:03
наши с Вами рассуждения уже начинают выходить за рамки вопроса заданного в начале этой темы Да уж, умеем мы разговоры разговаривать :rolleyes:

Алексей Дмитриев
28.08.2013, 01:25
Ну вы, господа и намутили.:confused:
Задача-то типовая, решается на 2-х релюхах с 3-мя переключающими контактами с взаимной блокировкой. Дополнительно и софт блокировку надо сделать, но это больше для порядка.;)

AVF
28.08.2013, 13:59
взаимную блокировку можно и не делать - что из того, что плюс появится на обоих проводах, страшного?

Алексей Геннадьевич
03.09.2013, 13:50
Необходимо управлять (маломощьным 24В) двигателем постоянного тока через релейные
выходы ПЛК, так чтобы реализовать 3 возможных состояния, покой, работа в одном направлении, работа в обратном.
Для реализации данных режимов работы достаточно 2 релейных контакта.

Алгоритм управления простой: устанавливаем направление вращения по каналу 2,
выдержка времени 0,1-0,2сек , подача питания на канал 1.
При смене направления вращения - отключаем питание (канал1) , меняем направление вращения по каналу 2, выдержка времени 0,1-0,2сек , подача питания на канал 1.


>коммутируемый контактами реле ПЛК110-Х.Х.Р-Х
> - не более 3 А (при напряжении не более 250 В переменного тока и cos j > 0,4)
>- не более 3 А (при напряжении не более 30 В постоянного тока)

В случае пускового тока двигателя более паспортных значений для реле ПЛК установить дополнительно реле включения питания.
Желательно установить снабберную цепочку для уменьшения помех.

P.S. при использовании 4х контактной схемы подключения двигателя возможно
возникновение КЗ.
9851

AVF
03.09.2013, 14:31
в посту #11 всё уже показано

Алексей Геннадьевич
03.09.2013, 15:23
AVF, там немного другой вариант реализации. Тоже грамотный, исключающий возникновение сквозных токов.