PLC Zero ile step motor sürmek

 


Youtube da izle...

Plc Zero, yerli Fultek firmasının STM32F407 ARM mikrodenetleyici ile ürettiği bir plc modelidir. Giriş, çıkışlarını bağlarken dikkat edilmelidir. Pinlere yapılan bağlantılar, voltaj olarak 3.3V, akım olarak 5mA değerini geçmemelidir. Plc programlamayı ekonomik bir şekilde öğrenmek isteyenler için ideal bir karttır. Ayrıca gömülü sistemlerle uğraşan yazılımcılar için de çok uygun fiyatlı bir karttır. Online satış sitesine girince Plc Zero için 2 farklı ürün göreceksiniz. Daha uygun fiyatlı olan modelde (15usd+kdv neredeyse 1kg tranç kıyma fiyatı 😁  bu arada konuyla ilgisi yok ama ingilterede kıyma 7 sterlinmiş) plc programı büyüklüğü 2KB ile sınırlandırılmıştır. 2KB, minik programlar için gayet yeterli bir boyuttur. Üst model için yazılabilecek program boyutu 115KB a kadar çıkabilmektedir.

Programlama veya başka amaçlar için kart üzerinde ethernet bağlantısı bulunmaktadır. Başka amaç derken, eski bir yazımda S7-1200 ile barkod yazıcıya nasıl etiket bastırdığımızı anlatmıştım örneğin. 

Besleme mikro usb ile yapılır. Kart üzerinde herhangi bir bağlantıya gerek kalmadan kullanabilmek için 3 adet buton(I0.0-I0.2), 3 adet led(Q0.0-Q0.2) ve 1 adet trimpot(AI0) bulunur. Plc'nin özellikleri, 3.3V dışında gerçekten muhteşem diyebilirim. Toplam 42 Giriş/Çıkış bulunur. Ethernet, Modbus TCP, 512KB dosya alanına sahip web server, 2 adet seri port, Modbus RTU, 8 adet 200 KHz dijital giriş ve 8 adet 655 KHz dijital çıkış, 8 adet 12 Bit Analog giriş, 2 Analog çıkış ve 16 adet seçilebilir dijital giriş veya çıkış... Bu arada ayıptır söylemesi ama S7-1200 den çok daha hızlı çalıştığını söyleyebilirim. (Cycle time karşılaştırması yapmıştım bir zamanlar)

Programlamak için daha önceden SpeedPlc yazılımı kullanılırken şuan yeni çıkan FulmaticSoft kullanılıyor. Çok farklı değiller. SpeedPlc de dahili hafızalar F100.0 gibi adreslenirken FulmaticSoft da M100.0 olarak adresleniyor. Yani Siemens plc'de olduğu gibi. FulmaticSoft ile Plc Zero’nun kardeşleri olan (örneğin Cpu One) giriş çıkışları 24V olan normal plc’leri de programlayabilirsiniz. FulmaticSoft içinde yine Tia Portal'da olduğu gibi bir elemanı seçip F1 tuşuna basarsanız, yardım dökümanı açılacaktır. Plc'ye bağlanabilmek için öncelikle bilgisayarın ip adresini ayarlamanız gerekiyor. Bu işlem, plc ile online olma başlığında burada anlatılıyor. Plc’nin varsayılan adresi 192.168.0.10 dur. Bu durumda bilgisayar adresini 192.168.0.100 yapabilirsiniz örneğin.

Elinizde eski bir kart varsa önce FulmaticSoft için firmware güncellemesi yapmanız gerekiyor. Bunun için program açıkken Ctrl+Alt+L tuşlarına basmanız yeterli olacaktır. Plc Zero nun programlanması ile ilgili eğitim videolarına bu iki linkten ulaşabilirsiniz :

Normal bir plc'de giriş çıkışlarda 24V kullanılmaktadır. Plc Zero'da ise 3.3V. Bu sorunu optokuplör devreleriyle çözebilirsiniz. Ben daha kolay bir yöntem buldum, ULN2004A isminde bir entegre işimizi görüyor. İçinde 7 kanal darlington transistör bulunuyor. Plc Zero’nun hem girişlerini hem de çıkışlarını bu entegre ile koruyabiliriz. ULN girişine 24V pnp bir fotoelektrik sensörün sinyali direk bağlanabiliyor. ULN çıkışları açık kollektör npn transistör. Örneğin IN1 girişine 24V geldiğinde çıkış transistörü (OUT1) çıkıştaki sinyali GND ye çekiyor. Çıkış transistörü 500mA e kadar akım taşıyabilir. ULN çıkış transistörünü röle bobini - ucuna bağlarsanız, 220V yükleri bile açıp kapatabilirsiniz. Yine örneğin 5V ile çalışan bir sensörünüz var. Bunu ULN IN1 girişine bağladınız. OUT1 çıkışını 4.7K direnç ile 3.3V a bağlayarak (buna pull-up direnç deniyor) OUT1 çıkışını Plc Zero girişine bağlayabilirsiniz. 

Bu yazıda Plc Zero ile nema 23 bir step motoru sürmeyi anlatacağım. Kendisi 3D yazıcılarda kullanılan nema 17 motordan bir tık daha büyük bir motordur. 1-3A akım çekebilir. Bu akım sürücü üzerinden ayarlanabiliyor. Düşük akımla (0.5A) başlayın. Bunun için TB6600 step motor sürücüyü kullanacağız. TB6600 pals ve yön bilgisi girişleri 5V ile çalışmaktadır. Plc Zero çıkışları 3.3V olduğundan araya ULN2004 entegresini şemadaki gibi koyuyoruz. TB6600 üzerinde bulunan VCC ve GND girişlerine 12V veya 24V bir güç kaynağı bağlanması gerekiyor.

TB6600 üzerinde bulunan dip switch ayarlarından 16 mikro adım ayarını yaptım. Normalde step motoru bir tur döndürmek için 200 pals gerekiyor. Mikro step ayarı 16 olduğundan bir tur için 16x200 yani 3200 pals gerekmektedir. Aşağıdaki MC_INIT komutunda factor ayarı (1 pals ile kaç mm gidiyor) 0.00125 olduğundan bir tur için MC_MV_ABS komutunda ilerleme miktarını 4mm (3200x0.00125) olarak ayarlamamız gerekiyor. Motoru sürekli olarak belli bir hızda döndürmek için MC_MV_VEL komutu kullanılabilir. Motion komutlarıyla ilgili yukarıda linkini paylaştığım Fultek Kontrol Sistemleri youtube kanalını ziyaret edebilirsiniz.

Yazdığınız programın, enerji kesildikten sonra da hafızada kalması için şemada görüldüğü gibi SD Detect pinini bir kablo ile 3-4 saniye GND ye bağlamanız gerekiyor. Kırmızı led yanıp sönmeye başlayacaktır. Plc Zero'yu fabrika ayarlarına döndürmek için aynı pini bu kez 3.3V a geçici olarak bağlamanız gerekiyor.




PTO (Pulse Train Output - pals treni çıkışı) pals çıkışını ayarlamak için FulmaticSoft ekranında en solda PLC butonuna tıklayın. Digital inputs-outputs sekmesine gelin ve output channel 4 değerini PTO olarak değiştirin. Program OB3 bloğuna yazılmaktadır.



Plc Zero'ya 4 eksene kadar, yani 4 adet step motor bağlayabilirsiniz. Bunlar Axis 0, 1, 2, 3 olarak Q0.0 dan itibaren pals ve yön çıkışları olarak bağlanabilir. Axis 2 PTO çıkışı Q0.4 e denk gelmektedir. Yön bilgisi ise Q0.5 çıkışından verilmektedir.

Senaryomuz şu şekilde, I0.0 dan (kart üzerindeki ilk buton) sinyal geldiğinde motor bir tur sola dönsün, yarım saniye beklesin, sonra bir tur sağa dönsün. Bu senaryo için program aşağıdaki gibi olmalıdır. Programın derlenmiş hali 1314 byte olmuştur, yani 2KB hafıza fazla gelmiştir 😁

Biraz dahili hafıza (merker) bilgisi vereyim. Plc Zero Merker adreslemesi Siemens plc ile aynıdır. Yani youtube da bulabileceğiniz S7-1200 program senaryolarının çoğunu Plc Zero’da çalıştırabilirsiniz. Örneğin MB100 hafızada bir byte dır. M100.0 bu byte’ın ilk bitidir. Sonra gelen hafıza MB101 dir. MW100 ise word olduğundan 2 byte yer kaplar. MW100, MB100 ve MB101 byte’larını içerir. Yani MW100 ü programda kullandıysanız, bir sonraki word kullanımınız MW102 olmalıdır. MD100 double word oluyor, 4 byte içerir. (MB100,MB101,MB102,MB103) Evet biraz karışık ilk bakışta ama program yazdıkça alışabilirsiniz ancak. Bu konuda Youtube kesinlikle iyi bir kaynaktır. Adreslemeyi anladıktan sonra timer, counter, hmi konuları derken plc programlamayı öğrenmiş oluyorsunuz zaten.




Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Uzak I/O modülü olarak PLC kullanmak