Управление на асинхронен двигател посредством G120 и S7-1200 на фирма Siemens

Статията е свързана със един проблем който разреших по време на дипломното ми проектиране. Той се появи когато проектирах частта свързана със вентилация, и по-конкретно управление на вентилатора. Под управление се разбира старт-стоп и продължителност на вентилиране. След като успях да “разреша проблема” реших, че може би разяснение в една кратка статия би спестила главоболия и време на колеги които също като мен са в началото на своята работа със продуктите на Siemens, и програмирането на PLC като цяло.
Като за начало да уточня със какво точно работя. Това е софтуера на фирма Siemens – TIA Portal 13(Totally Integrated Automation). Той е удобен за работа, и съчетава в себе си функционалности свързани не само със програмирането на PLC-то, но и със интеграцията между устройствата, определяне методите на комуникация, йерархичната структура на системата както и много други неща. Инвертор G120c PN 4.7, както и контролер S7-1200.  

Като за начало ще присъединим инвертора към системата,а това става по следния начин:1.От менюто “Hardware catalog” избираме модела инвертор с който разполагаме(за целите на проекта: SINAMICS G120c PN 4.7). Чрез drag and drop го добавяме в “Devices and networks”.2.Свързваме контролера и инвертора. Избираме Profinet комуникация за текущия проект.3.Кликва се с десен бутон на създадената връзка и от контекстното меню се избира „Assign device“.Когато връзката между устройствата е установена, трябва да ъплоуднем конфигурацията на PLC-то.

Фиг.1 Конфигурирана връзка между S7-1200 и G120c
За да се уверим, че комуникацията работи коректно, от главното меню на TIA портал избираме “Device and Networks”, където ни е предоставена опция за “Flash” на което и да е от периферните устройства. След това трябва да добавим така наречената стандартна телеграма. Тя се използва за циклична комуникация между контролера и инвертора. В случая зa най-подходяща е избрана “Standard Telegram 1, PZD-2/2”. Тя е подходяща по редица причини. 

                Фиг 2. Структура на Standard Telegram 1, PZD-2/2               

ПараметърОписание
STWControl Word
ZSWStatus Word
NSOLL_ASpeed setpoint 16 bit
NIST_ASpeed actual value 16 bit

Таблица 1. Описание на Standard Telegram 1, PZD-2/2
Както се вижда на фиг.2 тази телеграмa има сравнително проста структура. Имаме по една 16 битова дума, съответно контролна и статусна с които можем да манипулираме, и съответно следим състоянието на инвертора. Също така имаме по една 16 битова дума за заданието по скорост, и сътоветно такава с която да четем реалната скорост.

Телегратама се избира по следния начин:1.В “Device view” , избираме от „Hardware catalog“ -> „Submodules“ сътоветно Standard Telegram 1, PZD-2/2.2. Чрез drag and drop я поставяме в “Device overview”.

Фиг.3 Добавяне на станратната телеграма към проекта.
След като всичко по настроиките е готово, следва да се напише програмата която ще управлява двигателя. Ще използваме езика за програмиране Ladder. Освен стандартните ключове, ще използваме и няколко функционални блока. Те са ни нужни за да можем да пишем или съответно четем информацията за инвертора. За писане се използват DPWR_DAT и съответно Move. За четене DPRD_DAT. 

Фиг. 4 Старт на трансфера посредством избраната телеграма
Използваме блока DPWR_DAT за да определим първо коя ще ни е контроната дума(STW). Също така със тази функция задаваме канала по който ще бъдат прехвърляни думите, а именно телеграмата „Standard Telegram 1, PZD-2/2“. 
Точно в обратната посока работи DPWR_DAT. Тя служи за четене на дума от инверотора към PLC-то.Трансфера на думата трябва да следва логиката заложена в Таблица 2.За пишем и презаписваме нужните ни стойности във думата с която ще работим, ползваме библиотечната функция “Move”. Първо се подава дума в която 0 бит да бъде със стойност 0. След това се подава същата дума със стойност на нулевия бит 1. Това поставя инвертора в режим “Ready”, тоест имаме направена идентификация и при стойност 1, на бит ноомер 3, двигателя ще се развърти. 

Таблица 2. Структора на контролната дума по битове
В конкретния случай първата контролна дума която ще бъде записана е „047E“. След това следвайки логиката, пишем новата дума която е „047F”. В Таблица 3, са показани думите във бинарен формат, където ясно се виждат кои са активираните битове при двете думи. В случая става дума само за пускане и спиране на двигателя, но това е една много малка част от възможностите на инвертора.

HexadecimalBinary
047E0000 0100 0111 1110
047F0000 0100 0111 1111

Таблица 3. Контролните думи в HEX и BIN формат
Освен да пуснем двигателя, трябва и да зададем скорост на въртене. Нея ще я зададем, като подадем на следващата поредна дума скороста която искаме.

Фиг5. Програмна реализация за Start-Stop алгоритъм

Това е решението което аз успях да реализирам. Готов съм да отговря на всякакви въпроси, както и да прочета критика. Всяка градивна дискусия би била полезна за всички четящи темата.