Дешевий ПЛК на 16 входів і 16 виходів

  • Час 17-12-2014, 13:37
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

Програмовані логічні контролери (ПЛК) міцно ввійшли в сучасну промислову електроніку. Номенклатура в даний час ПЛК настільки велика, що важко уявити завдання, для вирішення якої не знайшлося б підходящого ПЛК. Багата периферія, потужні процесора, великий обсяг пам'яті, наявність модулів розширення - це тільки короткий перелік властивостей сучасних ПЛК.

Однак, слід зазначити, що в умовах виробництва дуже часто не потрібно величезних обчислювальних потужностей. Більшість верстатів, які використовуються у виробництві, виконують чітко задані операції і не є універсальними. Дуже часто у цих верстатів навіть немає дисплея, а всі параметри задаються за допомогою кнопок або перемикачів. Грубо кажучи, встановлені на цих верстатах ПЛК часом використовуються для заміни стійки з пускачами/реле/кінцевиками. І досить часто зустрічаються ситуації, коли на заміну застарілого обладнання, виконаного з використанням пускачів, надходить обладнання цього ж виробника з аналогічною функціональністю, але вже з використанням ПЛК.

Як-би то не було, іноді виникає ситуація, що ПЛК виходять з ладу і ремонт можливий тільки у виробника. Адже проста заміна ПЛК на точно такий же нічого не дає, оскільки відсутня керуюча програма. Добре, якщо виробник у такій ситуації може надати допомогу. А якщо ні? Брати інший ПЛК і програмувати його самостійно? Але якщо вже доводиться самостійно програмувати, то чому обов'язково ПЛК? Чи Не буде простіше і дешевше запрограмувати систему на базі мікроконтролера? Адже, як зазначалося вище, в ПЛК закладено багато надлишкових функцій і обчислювальних можливостей, за які доводиться платити.

Саме з міркувань, викладених вище, була розроблена схема простого ПЛК для заміни вийшов з ладу ПЛК KUAX667 на швейному автоматі VS3005 - AMF Reece S 2000. Не будемо зупинятися на описі даного швейного автомата, тим більше, що розглянута тут схема повторно використовувалася на іншому верстаті в меблевому виробництві. При розробці ПЛК ставилося завдання створити схему максимально дешеву, з доступних деталей, з можливістю діагностики навіть з урахуванням відсутності дисплея. Також було прийнято рішення відмовитися від гальванічної розв'язки вхідних ланцюгів, оскільки датчиками служили кнопки, кінцевики і перемикачі, здійснюють простий механічної контакт.

Схема пристрою і принцип роботи аналогічні побудови більшості промислових ПЛК. Є центральний мікроконтроллер і є порти вводу-виводу.

Дешевий ПЛК на 16 входів і 16 виходів

За основу взято мікроконтролер фірми Microchip PIC12F629. Цей мікроконтролер вибраний виходячи з доступності і дешевизни. Входи і виходи реалізовані з допомогою зсувних регістрів. Логічно вони розбиті на дві групи по 8 контактів. Передача даних відбувається у послідовному вигляді. Протокол передачі даних ідентичний протоколом SPI, проте він повністю реалізований програмно та на 16 біт. Ланцюги для вхідних даних і вихідних даних зроблені роздільними. Це, на мій погляд, полегшує розуміння роботи та спрощує контроль. Крім того, це дозволило використовувати раніше написані модулі для прийому-передачі даних у зсувні регістри. Ну і все-одно ці висновки залишилися невикористаними, так навіщо пропадати добру :) . Вхідними елементами є кінцевики, кнопки, перемикачі з комутацією на загальний провід. Тому входу реалізовані без використання оптопар. Звичайно, це знижує надійність схеми. Але, як показала практика, ПЛК працює стабільно. При використанні регістрів 155ИР9 або 555ИР9 підтягуючі резистори до +5 В можна не встановлювати (саме цей варіант представлений на фото нижче). При використанні регістрів 74HC165 наявність підтягуючих резисторів обов'язково. Особливо слід відзначити вхід 1.0. Цей вхід реалізований з використанням оптопари і розширювачем імпульсів на мікросхемі 155ЛА3. В одному з верстатів датчиком вироблявся імпульс +24 Вольта і тривалістю близько 1 мксек. Оскільки реальна частота опитування входів становила близько 1 кГц, то був ризик, що імпульс буде пропущений. Для виключення цього в схему був введений розширювач імпульсів, що збільшує час імпульсу приблизно до 0,1 сек. Час імпульсу визначається елементами C1, R4. Перестановкою джамперів на платі (на схемі джампери не вказані, їх можна відстежити по друкованої плати) можлива комутація входу 1.0 минаючи оптопару, минаючи розширювач імпульсів або минаючи оптопару і розширювач імпульсів. Завдяки вбудованим в регістри триггерам, фіксуючим вхідні рівні за сигналом стробі, виключена можлива невизначеність рівнів логічний "0" або "1". Це, а також послідовний опитування вхідних ланцюгів мікроконтролером, дозволило не враховувати явище "брязкоту", характерне для механічних датчиків. Виконавчими механізмами є обмотки пневмоклапанов і реле, які приєднані до зсувними регістрів 74HC595 через мікросхеми-драйвера ULN2803. Живлення здійснюється від джерела постійної напруги +24 Вольта, наявного у верстаті для живлення обмоток реле і пневмоклапанов, через імпульсний стабілізатор напруги на LM2576 (мікросхема в корпусі TO-263 для поверхневого монтажу, розташована з боку фольги, фольга служить і радіатором), включеної за типовою схемою.

Дешевий ПЛК на 16 входів і 16 виходів

Вся схема зібрана на платі 100*130 мм. Поруч з кожною мікросхемою по харчуванню варто конденсатор ємністю по 0,1 mkF (на схемі не показані). Як вже вище зазначалося, у пристрої використовувалися мікросхеми 555ИР9, не потребують підтягуючих резисторів. Тим не менш, для використання 74HC165, на платі передбачена можливість установки підтягуючих резисторів, які можуть бути від 1 до 10 кОм. Як підтягуючих резисторів добре використовувати збірки опорів типу 9A472J (невикористовувані висновки просто обкусываются), які широко застосовувалися в комп'ютерах на базі 286-486 процесорів.

Програма для мікроконтролера написана в середовищі PIC Simulator IDE, яка використовує діалект мови BASIC. Використання BASIC дозволяє легко розробляти програми не особливо занурюючись в архітектуру мікроконтролерів. Крім того, так чи інакше, з реалізаціями мови BASIC доводиться стикатися починаючи зі шкільної лави й у більшості непрофесійних розробників він не викликає шанобливого побоювання. Розглянемо програму і зупинимося на тих місцях, де безпосередньо відбувається налаштування на той чи інший верстат.

Програма додається у повній версії для швейного автомата. Спочатку йде секція опису змінних і символів. При переробці програми під інше обладнання незмінними будуть рядки з 7 по 11, тут оголошуються змінні для отриманих/переданих даних і службова мінлива і з 18 по 28, відносяться до опису контактів для протоколу прийому/передачі даних. Далі в програмі з 50-го по 96-ю рядка йде перевірка на включення режиму "Тест" і реалізація тестового режиму. Режим "Тест" включається установкою перемички між висновком GP2 (5-й висновок) і загальною шиною (кнопка "Test" за схемою) до подачі живлення на схему. При подачі живлення мікроконтролер встановлює висновок GP2 як вхід (рядок 54), включаємо підтягуючі резистори (стоки 64,65), проводить опитування стану виводу GP2 (рядок 76). Якщо режим тестування встановлений, то після зняття перемички починається нескінченний цикл (стоки 81-95), в якому стан виходів безпосередньо залежить від стану входів. Таким чином послідовно замикаючи входу ми можемо перевірити спрацьовування виконавчих елементів, приєднаних до виходів, тобто провести тестування обладнання від датчиків до виконавчих механізмів.

При подачі живлення без встановленої перемички мікроконтролер перейде до ділянки програми, де запрограмований безпосередньо робочий режим верстата (в даній програмі це рядки 98-261). Ця частина програми залишена для прикладу і, оскільки вона прив'язана безпосередньо до обладнання, особливо її розглядати не будемо. Зупинимося лише на загальних принципах роботи і подпрограммах прийому-посилки даних. У найпростішому випадку при роботі обладнання проводиться опитування входів (підпрограма data_input, використовувана в ній підпрограма sinchro_input). Стан входів у програмі зберігається в змінних data_in1 і data_in2. В залежності від алгоритму роботи обладнання в програмі аналізується стан входів, приймається рішення про зміну стану виходів і це рішення записується в дані data_out1 і data_out2. Після цього робиться висновок даних (підпрограма data_out, використовувана в ній підпрограма sinchro_out). І так цикл повторюється до припинення подачі живлення. У разі необхідності можлива організація програми з використанням переривань мікроконтролера. Наприклад, це може знадобиться при здійсненні операцій на обладнанні, обмежених за часом.

При програмуванні мікроконтролера необхідно встановити слово конфігурації в &h31С4. Розшифровку можна подивитися на малюнку нижче.

Дешевий ПЛК на 16 входів і 16 виходів

P. S. Цей абзац спеціально для критиків. Як вже вище зазначалося, програма писалася не "з нуля", а з використанням уже готових напрацювань. Тому в програмі багато коментарів від попередніх програм, в тому числі є і коментарі щодо використання переривань по таймеру. Я спеціально не став їх прибирати, оскільки вважаю, що вони можуть допомогти іншим людям при модифікації програми. Якщо ж цю програму переписати заново, то напевно можна досягти оптимального коду і більш високої частоти опитування вхідних елементів. Як говоритися "немає такої програми, яку можна скоротити хоча б на одну команду". Але навіть у такому вигляді програма займає менше 700 байт і верстат, під керуванням даної програми, працює стабільно.

Ну і наостанок фотографії зібраної і встановленою у верстат плати.

Дешевий ПЛК на 16 входів і 16 виходів

Дешевий ПЛК на 16 входів і 16 виходів

В архіві:
1. PLC 12F629 - вихідний файл і HEX файл.
2. Проект Proteus.
3. Друкована плата в Sprint-Layout

Список радіоелементів

Позначення Тип Номінал Кількість U1 U2, U3 U4, U5 U6 U7 U8,U9 R1, R2 R3, R4 С1
МК PIC 8-бітPIC12F6291
Сдвиговый регістрSN74HC5952
Сдвиговый регістрSN74HC1652
ВентильSN74001
ОптопараPC8171
Складовою транзисторULN28032
Резистор10 кОм2
Резистор1 кОм2
Конденсатор10 мкФ1
Tags

Коментарі до новини