T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ PLASTİK ENJEKSİYON MAKİNESİNDE SERVO MOTOR KULLANIMI Ünal ŞANLI Danışman Prof. Dr. Ali Kemal YAKUT YÜKSEK LİSANS TEZİ MAKİNE EĞİTİMİ ANABİLİM DALI ISPARTA - 2019 II. Danışman Prof. Dr. Osman İPEK
105
Embed
PLASTİK ENJEKSİYON MAKİNESİNDE SERVO MOTOR KULLANIMItez.sdu.edu.tr/Tezler/TF04345.pdf · 2020. 8. 20. · The control unit, the intended ... Hidrolik tahrikli 160 ton-B enjeksiyon
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
T.C.
SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ
PLASTİK ENJEKSİYON MAKİNESİNDE SERVO MOTOR KULLANIMI
İÇİNDEKİLER .................................................................................................................................... ii ÖZET .................................................................................................................................................... ii ABSTRACT ....................................................................................................................................... iii TEŞEKKÜR ........................................................................................................................................ iv ŞEKİLLER DİZİNİ ............................................................................................................................ v ÇİZELGELER DİZİNİ .................................................................................................................... vii SİMGELER VE KISALTMALAR DİZİNİ ................................................................................. viii 1. GİRİŞ................................................................................................................................................ 1
1.1. Plastiğin Özellikleri ........................................................................................................... 3
1.2. Plastiğin Türleri .................................................................................................................. 3
PLASTİK ENJEKSİYON MAKİNESİNDE SERVO MOTOR KULLANIMI
Ünal ŞANLI
Süleyman Demirel Üniversitesi
Fen Bilimleri Enstitüsü
Makine Eğitimi Anabilim Dalı
Danışman: Prof. Dr. Ali Kemal YAKUT
II. Danışman: Prof. Dr. Osman İPEK
Bu tez çalışmasında, ideal ürün çıktısı için mevcut hidrolik sistemli enjeksiyonla kalıplama makinalarından optimizasyon için gerekli hız, sıcaklık ve basınç parametreleri alınamadığından yeni bir servo motor kontrollü enjeksiyonla kalıplama makinası imal edilmiştir. İmal edilen yeni yerli makina ile hidrolik baskı sistemi yerine kullanılan servo motorlar istenilen değerlerle çalışabilme imkanı vermiştir. Bu çalışma ile ülkemizde ilk kez servo motor kontrollü enjeksiyonla kalıplama makinası üretilmiştir. Üretilen makinanın kontrol ünitesi ile istenilen sıcaklık ve baskı hızı ayarlanabilmektedir. Üretilen makinada kullanılan servo motorlara uygun sürücüler kullanılmış ve bu sürücülere yazılımlar yüklenmiştir. Bu sayede mevcut ana yazılımımızın yüklü olduğu endüstriyel PC dışında otonom kontrol yazılımı olan servo motor kontrolü sağlanmıştır. Sistemde iki adet servo motor kullanılmış ve bunlar mal alma ve enjeksiyon bölümlerinde kullanılmıştır. Bu sayede yüksek hızlara çıkılmış ,mal almada hassasiyet ve süre kazanılmış sistemler bağımsız çalıştırılmış ve istenilen sonuçlar alınmıştır. Bu tip cihazlarda ilk kez endüstriyel PC tercih edilmiş ve yazılım olarak Visual Studio VB kullanılmıştır. Sistemdeki data alımları ek USB kartlarla sağlanmış servo motor kontrolleri RS485 modbus protokolleri ile gerçekleştirilmiştir. Yapılan sistemde servo motor dışında hareket mekanizmaları hidrolik ve asenkron motorlarla gerçekleştirilmiş ayrıca hidrolik sistemde enerji tasarrufu olması için sürücü kullanılarak oransal olarak kontrol edilmiş ve tasarruf sağlanmıştır. Buradaki oransal kontrol kartı geliştirilmiş ve sisteme başarı ile uygulanmıştır. Anahtar Kelimeler: plastik enjeksiyon makinasında servo motor kullanımı, plastik enjeksiyon kontrol sistemi , hidrolik motoru oransal kullanım, plastik enjeksiyon da servo motor
2019, 93 sayfa
iii
ABSTRACT
M.Sc. Thesis
THE USE OF SERVO MOTOR IN PLASTIC INJECTION MACHINE
Ünal Şanlı
Süleyman Demirel University
Graduate School of Natural and Applied Sciences Department Of Mechanical Education
Supervisor: Prof. Dr. Ali Kemal YAKUT
Co-Supervisor: Prof. Dr. Osman İPEK
In this thesis, because of not receiving necessary speed, temperature and pressure parameters for optimization of moulding machines through injection within existing hydraulic system for ideal product output, a new servo motor controlled moulding with injection machine has been produced. The recently produced native machine and the servo motors used instead of hydraulic pressure system have supplied possibility of working with intended values. By this study, servo motor controlled moulding with injection machine has been produced in our country for the first time. The control unit, the intended temperature and pressure speed of the produced machine can be adjusted. Proper drivers have been used at the produced machine and softwares have been installed on these drivers. By this means, except for the industrial PC on which our existing main software has been installed, the servo motor control which is an autonomous control software has been provided. In this system, two servo motors have been used and these have been used in sections of having goods and injection. By this means, high speeds have been launched out, sensitivity and time have been gained in having goods, systems have been generated independently and intended results have been admitted. Industrial PC has been preferred in these machines for the first time and as a software Visual Studio VB has been used. The data intake in the system has been provided with additional USB cards, the servo motor controls have been realized with RS485 modbus protocols. At the made system; except the servo motors, the motion mechanisms have been realized with hydraulic and asynchronous motors, also for energy conservation at the hydraulic system, by using driver has been controlled as modulating and saving been generated. The modulating control card here has been improved and applied on the system successfully.
Keywords: the use of servo motor in plastic injection machine, plastic injection control system, hydraulic motor modulating use, servo motor in plastic injection
2019, 93 pages
iv
TEŞEKKÜR Bu çalışmanın her aşamasında bilgi ve tecrübeleri ile beni yönlendiren danışmanım Prof. Dr. Ali Kemal YAKUT’a,Prof. Dr. Osman İPEK’e, SANTEZ projesi kapsamında çalıştığım Yrd. Doç. Dr. Murat KORU’ya, Dr.Öğr.Üyesi Melik Ziya Yakut’a, yoğun çalışmalarımda bana destek olan aileme ve çalışma arkadaşlarıma da teşekkür ederim. Ayrıca bu çalışma SANTEZ “00012.STZ.2006–1“ nolu proje ve SDÜ BAP “2212-D-10” nolu proje ile desteklenmiştir. Maddi desteklerinden dolayı Bilim Sanayi ve Teknoloji Bakanlığı ve Süleyman Demirel Üniversitesi Bilimsel Araştırmalar Projeleri Birimine teşekkür ederim.
Şekil E.8. Makine kontrol yazılımı genel ayarlar sayfa görünüşü ............................. 91
Şekil E.9. Makine kontrol yazılımı genel I/O ayar sayfa görünüşü ........................... 92
vii
ÇİZELGELER DİZİNİ
Sayfa Çizelge 1.1. Plastiğin türlerine göre kullanım alanları .................................................... 2
Çizelge 1.2. Enjeksiyon işleminde görülen sorunlar ve çözümleri tablosu .......11
viii
SİMGELER VE KISALTMALAR DİZİNİ
A Isı transfer yüzeyi, Lüle iç alanı, m2
A Amper AC Alternatif akım A/D Analog/Digital (Analog/Dijital) ADC Analog to Digital Converter (Analog/Dijital Dönüştürücü) Co Santigrat C Isı kapasitesi, kJ/K cP Sabit basınçta özgül ısı, kJ/kgK Da Dişli dış çapı, m Db Vida yuvası çapı, m DC Doğru akım Dr Dişli iç çapı çapı, m e Vida kalınlığı, m Ft Kramayer dişlisinin teğetsel kuvveti, N G, m Enjeksiyona giren toplam katı termoplastik debisi, kg/s h Entalpi, kJ/kg h Vida yuvası boşluğu, Lüle yüksekliği, m I/O Input/Output (Giriş/Çıkış) L Yolluk uzunluğu, Kovan boyu, m N Devir sayısı P Düzeltilmiş enjeksiyon basıncı, Pa PC Kişisel Bilgisayar PIC Peripheral Interface Controller (Çevresel Arabirim Denetleyicisi Pin Enjeksiyon basıncı, Pa PWM Pulse-width modulation(Sinyal Genişlik Modülasyonu) Re Reynolds sayısı RS232 Seri Port Arabirimi s Plaka kalınlığı, Vida adımı, m t Zaman, s T Tork, Nm Ta Ergiyiğin enjeksiyona giriş sıcaklığı, K Tb Kalıp çıkış sıcaklığı, K Te Polimerin enjeksiyondan çıkış sıcaklığı, K Tw Kalıp sıcaklığı, K USART Evrensel Senkron Asenkron Alıcı Verici USB Universal Serial Bus (Evrensel Seri Yol) V Volt Va Uygulanan giriş gerilimi Q Isı transferi, kJ α Isı yayınım katsayısı, m2/s Ω Ohm
değiştirme işlemi) için kullanılan komütatör ve fırçalardan
kaynaklanan mekaniksel-elektriksel problemleri ve sınırlamaları yenmek için
fırçasız motorlar tasarlanmıştır. Sonuçta klasik DC motorun performansını
sağlaması hedeflenmiştir.
AC servo motorlar; DC servo motorların güçleri birkaç “Watt”tan birkaç yüz
“Watt”a kadar olabilir. DC servo motorlar, yüksek güçlü uygulamalarda
kullanılır.
Günümüzde AC servo motorlar hem düşük hem de yüksek güç uygulamalarda
kullanılmaktadır. AC motorların yapıları basit ataletleri düşüktür.
Ancak, genellikle doğrusal olmayan özellik gösteren ve yüksek manyetik bağa
sahip makinelerdir. Ayrıca moment hız karakteristikleri
DC servo motorlarınki gibi ideal değildir. Bunların yanı sıra AC servo motorları
aynı
boyuttaki DC servo motor ile karşılaştırıldıklarında daha düşük momente
sahiptir
37
Üç Fazlı Servo Motorlar; DC servo motorlar, yüksek güç servo sistemlerin
uygulama alanlarında yaygın olarak kullanılmaktadır. Ancak son yıllarda
yüksek-güç sistem uygulamalarında üç faz asenkron motorun servo motor
olarak kullanımı üzerine yapılan araştırmalar başarıya ulaşmış ve 3 fazlı
asenkron motor yerine güç uygulamalarında hızlı bir şekilde yerini almaya
başlamıştır. 3 fazlı asenkron motor yapı olarak dayanıklı olmakla beraber
doğrusal olmayan bir özelliğe sahiptir ve bundan dolayı kontrolü
karmaşıktır. Son yirmi yıldaki çalışmalar, 3 fazlı asenkron motorun yabancı
uyartımlı DC motoru gibi kontrol edileceğini göstermiştir. 3 fazlı asenkron
motorun stator akım vektörünün birbirine dik, birbirinden bağımsız iki
bileşenle temsil edildiği ve dik bileşenlerden biriyle momentin diğeriyle akının
kontrol edileceği tekniğe vektör moment tepkisi sağlanmaktadır . Bu sayede
yüksek torklar ve hassas dönüşler sağlanmakktadır.
Kullanılan servo motorların ELSİM firması tarafından imalatı istenilen tork ve
devirlere göre sağlanmış ve motorların sürücüsü olarak GEFRAN marka tercih
edilmiştir. Bu sürücüler programlanmış ve RS485 Mod-Bus ile haberleşmeleri
sağlanmıştır.
38
4. BULGULAR VE TARTIŞMA
Bu tez çalışmasında servo motorlar Elsim firmasından temin edilmiş ve Ekin
Makine firmasına sistem imal ettirilmiştir. Makinanın programsal çalışması için
şekil 4.1’ de blok diagram verilmiştir. Bu diagrama göre elektrik ve elektronik
alt yapı belirlenmiş, pano yapılmış ve program yazılmıştır.
39
Şekil 4.1. Makine elektrik-elektronik ve program blok diagramı
40
4.1. Mod-Bus Haberleşme Sistemi
Makinanın servo motorları ve termokupl okuma kartı mod-bus RTU ile haberleşmektedir. Buradaki haberleşme seri portun RS-485 için dönüşümü ile yapılmaktadır. Bu işlem için USB to RS485 ara yardımcı aparat kullanılmıştır. Seri port haberleşme hızı 9600 bps’dir. Şekil 4.2’ de kullanılan dönüştürücü gösterilmiştir.
Şekil 4.2. USB-RS485 dönüştürücü
Mod-Bus haberleşme protokolü RS-485 fiziksel alt yapısını kullanmaktadır.
Buradaki haberleşme protokolü Visual Studio VB programı ile yapılmıştır. Mod-
Bus haberleşme protokolü ile ilgili program dosyası EK-B’de verilmiştir.
4.2. Giriş-Çıkış ve Analog Veri İşlemleri
Programın çalışabilmesi için makinadan bilgilerin alınması gerekmektedir. Bu
bilgiler USB kartlar sayesinde gerçekleştirilmiştir. Giriş bilgileri DC 24V ile
gerçekleştirilmiştir. Bu gerilim seviyesi USB kartların giriş aralığındadır. Analog
dataların dijitale çevrilmesi ile sıcaklık verileri, cetvel konum bilgileri ve
oransal kontrol sistemleri gerçekleştirilmiştir.Bu işlemlerle ilgili program
kodları EK-D’ de verilmiştir.
4.3. Programa Genel Bakış
Sistemdeki bütün görsel yazılımlar Visual Studio VB programı ile yapılmıştır. Ana sayfa görüntüsünde anlık işlemler, sıcaklık durumları, haberleşme bilgileri ve ayarlamalarla ilgili diğer butonlar bulunmaktadır.
EK-E’ de yazılımla ilgili kodları ve resimleri eklenmiştir.
41
5. SONUÇ ve ÖNERİLER
Hidrolik sistemle baskı yapan enjeksiyon makinalarının ideal baskı için
yeterince hassasiyete sahip olamadığı görülmüş ve servo motorlu bir enjeksiyon
makinasının imalatı yapılmıştır. İmal edilen makinanın, servo motorlarının
oluşturduğu güç, baskı için gerekli olan itme hızı ve basınç parametrelerin
değerleri, sürücülerden alınan veriler ışığında matematiksel denklemlerle
hesaplanmıştır. Hesaplanan enjeksiyonla baskı makinasının başlangıç
parametreleri hesaplamalı akışkanlar dinamiği programı olan ANSYS FLUENT
programında kullanılarak kalıp öncesi memedeki akış modellenmiştir. Akışkan
olarak seçilen YYPS malzemesinin göstereceği davranış belirlenmiş, Newtonsal
olmayan davranış gösterdiği için malzemeyle ilgili kayma hızı hesaplamalarında
Rabinowitsch dönüşümünden faydalanılmıştır. Memeden sonra kalıba
geçmeden önceki yolluktaki basınç ve sıcaklık farkı hesaplanmıştır. Kalıp için
soğutucu sistem kullanılmazsa kalıbın yaklaşık soğuma süresi de bulunmuştur.
ANSYS FLUENT programında, memenin içerisindeki akış durumu basınca dayalı
çözücü kullanılarak temel akış denklemlerinin üç boyutlu olarak ifade
edilmesiyle sunulmuştur. Bu çalışmada kalıp öncesi akış, YYPS malzeme ile hava
birlikte olmasından ötürü VOF yöntemi tercih edilerek çok fazlı akış olarak
modellenmiştir. Kullanılan YYPS malzemenin viskozite modeli olarak Newtonsal
olmayan üs yasasına göre yoğunluğu, özgül ısısı, ısı iletim katsayısı ve
viskozitesi girilmiştir.
Basınca dayalı çözümde daha çok doğrulama seçeneğine sahip olan daha kararlı
sonuçlar elde eden ve sonlu kontrol hacmi yöntemi kullanan SIMPLE
algoritması gibi güçlü bir temele dayanan PISO (Pressure-Implicit with Splitting
of Operators) algoritması tercih edilmiştir. PISO algoritması özellikle zamana
bağımlı, kararsız, sıkıştırılabilir akışlar için hazırlandığı için modelleme için
ideal bir tercih olmuştur. Çözüm ağında oluşan parçaların hacimsel
oranlamasında üçüncü dereceden MUSCL yöntemi merkezi farklar ile ikinci
dereceden Upwind yönteminin harmanlanmasıyla oluşmuştur. ANSYS FLUENT,
kontrol hacmi tekniğini kullanarak genel skaler transport denklemini, cebirsel
42
denklem haline dönüştürüp nümerik olarak çözebilen bir programdır. Gauss
Seidel iterasyon yöntemi ve Cebirsel Çoklu Örgü (Algebraic multigrid, AMG)
yöntemini kullanarak doğrusallaştırılmış cebirsel denklemler elde edilmiştir.
İmal edilen makinanın ideal ürün çıktısı alması için gerekli olan değerlerin
tespiti için kalıp dolumunun analizi Autodesk Moldflow programı kullanılarak
üç boyutlu olarak incelenmiştir. Örnek kalıpta, belirlenen malzemeyle hangi
değerlerle çalışması gerektiği tespit edilmiştir. Belirlenen değerlerle ideal baskı
alınabildiği tespit edilmiştir. Değerler Taguchi yöntemi kullanılarak
optimizasyon çalışması yapılmış farklı sıcaklık değerlerinde uygulanması
gereken basınç değerleri gösterilmiştir.
Burada yeni imal edilen enjeksiyon makinasının örnek kalıp için daha az bir
basınçla ideal baskı değerlerine erişebileceği görülmüştür. Kalıbın dolum süresi
literatürde kabul edilen süre çerçevesinde çıkmıştır. Kalıptaki örnek ürünün
hacminin büyük olması ve tek noktadan dolumun gerçekleştiriliyor olması
ürünün kaliteli baskı elde edebilmesinin çok zor ve hassas değerlerle ancak
oluşabilmesine imkan sağlamaktadır. Bu yüzden yapılacak baskı çalışmalarında
önce çalışılacak ürünün kalıbının hassas olarak tasarlanması, termoplastik
malzemenin akışının yeterli sayıdaki noktalardan belirlenmesi ve özellikle
uygun soğutma sistemiyle oluşturulması çok büyük önem arz etmektedir.
Hazırlanan bu çalışma ile ülkemizde ilk kez servo motorla baskı yapabilen bir
enjeksiyonla kalıplama makinası imal edilmiştir. Baskıya etki eden öncelikli
parametreler olarak sıcaklık, basınç ve hız değerleri hesaplanarak, bilgisayar
destekli mühendislik programları yardımıyla enjeksiyonla kalıplama
makinasının baskı süreci üç boyutlu olarak modellenmiştir. Özellikle memenin
modellenmesi ile ilgili çalışma bundan sonraki yapılacak çalışmalara ışık
tutacaktır. Ayrıca kalıp dolum aşamasının taguchi yöntemi ile üç boyutlu analizi
yapılarak optimum değerler, örnek kalıp için belirlenmiştir. Böylece ideal baskı
alınabilecek farklı baskı değerleri tespit edilmiştir.
43
KAYNAKLAR
Akyürek, A., 2009, Plastik Enjeksiyon Süreci Optimizasyonunda Yapay Zeka Tekniklerinin Kullanımı, Yüksek Lisans Tezi, Uludağ Üniversitesi F. B. E., Bursa.
ANSYS 2011. ANSYS FLUENT Theory Guide, ANSYS Inc., 856p, USA. Bendada, A., Derdouri, A., Lamontagne, M., Simard, Y., 2004, Analysis Of Thermal
Contact Resistance Between Polymer And Mold In Injection Molding, Applied Thermal Engineeering, 24, 2029-2040.
Bhagavatula, N., Michalski, D., Lilly, B., Glozer, G., 2004, Modelling And
Verification Of Ejection Forces İn Thermoplastic İnjection Moulding, Modelling Simul. Material Science Engineering, 12, 239-254.
Bikas, A., Pantelis, N., Kanarachos, A., 2002, Computational Tools For The
Optimal Design Of The Injection Moulding Process, Journal Of Materials Processing Technology, 122, 112-126.
Bozdana, A. T., Eyercioğlu, Ö., 2002, Development Of An Expert System For the
Determination Of Injection Moulding Parameters Of Thermoplastic Materials: EX-PIMM, Journal Of Materials Processing Technology, 128, 113-122.
Chang, R. Y., Yang, W. H., 2001, Numerical Simulation Of Molding Filling In
Injection Molding Using A Three-Dimensional Finite Volume Approach, International Journal For Numerical Methods In Fluids, 37, 125-148.
Chen, H., Sundararaj, U., Nandakumar, K., 2003, Experimental And Simulation
Studies Of Heat Transfer In Polymer Melts, Ache Journal, 49-6, 1372-1382.
Chen, Z., Turng, L., 2005, A Review Of Current Developments In Process And
Quality Control For Injection Molding, Advances In Polymer Technology, 24, 165-182.
Demirci, B., 2012, Türkiye Plastik Sektör İzleme Raporu (2011), Türk Plastik
Sanayicileri Araştırma, Geliştirme ve Eğitim Vakfı, 1-14, Ankara. Estacio, K. C., Mangiavacchi, N., 2007, Simplified Model For Mould Filling
Simulations Using CVFEM And Unstructured Meshes, Commun. Numer. Meth. Engineering, 23, 345-361.
Galantucci, L. M., Spina, R. , 2003, Evalution Of Filling Conditions Of Injection
Moulding By Integrating Numerical Simulations And Experimental Tests, Journal Of Materials Processing Technology, 141, 266-275.
44
Garcia, D., Courbebaisse, G., Jourlin, M., 2001, Image Analysis Dedicated To Polymer Injection Molding, Image Anal Stereol, 20, 143-148.
Gayatri, K., Atreya, S. K., Rao, P. N., 2000, Thermal And Stress Analysis Of An
Injection-Molded Polystyrene Ring., Polymer-Plastics Technology And Engineering., 39(1), 61-81.
Güldaş, A., Uluer, O., Özdemir, A., 2005, Analysis Of Flow In Injection Molds, The
Derivation Of The Governing Equations Fort He Mathematical Modeling Of The Flow Of Polymer Melt, G. U. Journal Of Science, 18, 707-721.
Hassan, H., Regnier, N., Defaye, G., 2009, A 3D Study On The Effect Of Gate
Location On The Cooling Polymer By İnjection Molding, International Journal Of Heat And Fluid Flow, 30, 1218-1229.
İçten, B., 2004, Plastik Enjeksiyonda Basınç, Sıcaklık, Zaman, Hız Gibi
Faktörlerin Parça Kalitesi Üzerindeki Etkilerinin İncelenmesi, Yüksek Lisans Tezi, Yıldız Teknik Üniversite Fen Bilimleri Enstitüsü, İstanbul.
Kamber, Ö. Ş., 2008, Plastik Enjeksiyon Kalıplarında Basınç Ve Sıcaklık
Parametrelerinin Ürün Kalitesine Etkileri Ve Taguchi Yöntemi İle Optimizasyonu, Doktora Tezi, Marmara Üniversitesi Fen Bilimleri Enstitüsü, İstanbul.
Kenig, S., vd, 2001, Control Of Properties In Injection Molding By Neural
Networks, Engineering Applications Of Artificial Intelligence, 14, 819-823.
Kim, S. W., Turng, L., 2004, Developments Of Three-Dimensional Computer-
Aided Engineering Simulation For Injection Moulding, Modelling Simulation Material Science Engineering, 12, 151-173.
Koyun, Ç., 2005, Bilgisayar Destekli Plastik Enjeksiyon Kalıp Tasarımı Ve Analizi,
Yüksek Lisans Tezi, Yıldız Teknik Üniversitesi Fen Bilimleri Enstitüsü, İstanbul.
Kumar, A., Ghoshdastidar, P. S., Muju, M. K., 2002, Computer Simulation Of
Transport Processes During Injection Mold-Filling And Optimization Of Molding Conditions, Journal Of Materials Processing Technology, 120, 438-449.
Li, X., Hu, B., Du, R., 2008, Predicting The Parts Weight In Plastic Injection
Molding Using Least Squares Support Vector Regression, IEEE Transactions On Systems, Man, And Cybernetics, 38, 827-833.
Masse, H., Arquis, E., Delaunay, D., 2004, Heat Transfer With Mechanically Driven Thermal Contact Resistance At The Polymer-Mold Interface In Injection Molding Of Polymers, International Journal Of Heat And Mass Transfer, 47, 2015-2027.
MEGEP, 2006, Plastik Teknolojisi Enjeksiyon Makinelerinde Üretim-1, Milli
Eğitim Bakanlığı, Ankara. MEGEP, 2006, Plastik Teknolojisi Polimerlerin Fiziksel Özellikleri 2, Milli Eğitim
Bakanlığı, Ankara. Mok, C. K., Chin, K. S., Lan, H., 2008, An İnternet-Based İntelligent Design System
For Injection Moulds, Robotics And Computer-Integrated Manufacturing, 24, 1-15.
Katman Oluşumuna Etkisi, Gazi Üniversitesi Mühendislik Mimarlık Fakültesi Dergisi, 23, 249-255, Ankara.
Uluer, O., 2009, Enjeksiyonla Kalıplamada Üç Boyutlu Polimer Ergiyik Akışların
Sayısal Analizi Ve Deneysel İncelenmesi, Doktora Tezi, Gazi Üniversitesi Fen Bilimleri Enstitüsü, Ankara.
Versteeg, H. K., Ve Malalasekara, W., 2007, An Introduction To Computational
Fluid Dynamics: The Finite Volume Method, Prentice Hall, P.153. Yakut, M.Ziya, 2014, Servo-Kontrollü Bir Plastik Enjeksiyon Makinasının Tasarımı Ve
Üretimi ,Doktora Tezi, Süleyman Demirel Üniversitesi Fen Bilimleri Enstitüsü,ISPARTA
Yao, K., 2008, Energy-Efficient Control İn İnjection Molding, Doktora Tezi, The
Hong Kong University Of Science, Hong Kong. Yelkenci, Ş., 2009, Plastik Enjeksiyon Kalıplama Teknikleri Ve Özel Uygulamalar,
Yüksek Lisans Tezi, Uludağ Üniversitesi Fen Bilimleri Enstitüsü, Bursa. Yılmazçoban, İ. K., 2003, Plastik Enjeksiyon Kalıplarında Bilgisayar Destekli
Malzeme Akış Analizleri Ve Kavite Optimizasyonu, Yüksek Lisans Tezi, Sakarya Üniversitesi Fen Bilimleri Enstitüsü, Sakarya.
Zerachian, B. A., 2008, Aquantitative Comparison And Validation Of Computer
Aided Engineering Softwares Simulating The Plastics Injection Molding Process, Proquest Dissertation And Theses, University Of Massacushusetts, Massacushusetts.
Zhou, H., Geng, T., Li, D., 2005, Numerical Filling Simulation Of Injection Molding
Based On 3D Finite Element Model, Journal Of Reinforced Plastics And Composites, 24, 823-830.
Zhou, H., Yan, B., Zhang, Y., 2008, 3D Filling Simulation Of İnjection Molding
Based On The PG Method, Journal Of Materials Processing Technology, 204, 475-480.
47
EKLER EK A. Enjeksiyon Makinasının Fotoğrafları EK B. Mod-Bus Haberleşme Programı EK C. Oransal Kontrol Kartı Yazılımı EK D. Giriş-Çıkışlarla İlgili Yazılımlar EK E. Ana Program Yazılımı ve Resimleri
48
EK A. Enjeksiyon Makinesinin Fotoğrafları
Şekil A.1. Enjeksiyon vidasının imalatının bir görünüşü( Yakut,2014 )
Şekil A.9. Üretilen enjeksiyon makinesinin arkadan görünüşü( Yakut,2014 )
Şekil A.10. Üretilen enjeksiyon makinesinin önden görünümü( Yakut,2014 )
53
EK B. Mod-Bus Haberleşme Programı
Friend Class Form1 Inherits System.Windows.Forms.Form ' Call Windows API (For winsock use) Private Declare Function inet_addr Lib "wsock32.dll" (ByVal s As String) As Integer Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' Call Window API (For registry use, Find Serial Port list) Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Integer, ByVal lpSubKey As String, ByVal ulOptions As Integer, ByVal samDesired As Integer, ByRef phkResult As Integer) As Integer Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Integer, ByVal dwIndex As Integer, ByVal lpValueName As String, ByRef lpcbValueName As Integer, ByVal lpReserved As Integer, ByRef lpType As Integer, ByRef lpData As Integer, ByRef lpcbData As Integer) As Integer Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer Const REG_SZ As Short = 1 Const HKEY_LOCAL_MACHINE As Integer = &H80000002 Const ERROR_SUCCESS As Short = 0 Const SYNCHRONIZE As Integer = &H100000 Const STANDARD_RIGHTS_READ As Integer = &H20000 Const KEY_QUERY_VALUE As Integer = &H1 Const KEY_CREATE_SUB_KEY As Integer = &H4 Const KEY_ENUMERATE_SUB_KEYS As Integer = &H8 Const KEY_NOTIFY As Integer = &H10 Const KEY_READ As Boolean = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE)) 'Haberlesme Tipinin Secilmesi (RS 232 veya Ethernet) Private Sub Combo1_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Combo1.SelectedIndexChanged Dim idx As Short idx = Combo1.SelectedIndex Select Case idx Case Is = 0 Combo2.SelectedIndex = 0 Combo2.Enabled = True Combo3.Enabled = True ipaddr.BackColor = System.Drawing.ColorTranslator.FromOle(RGB(236, 233, 216))
54
ipaddr.Enabled = False Case Is = 1 Combo2.SelectedIndex = 1 Combo2.Enabled = False Combo3.Enabled = False ipaddr.BackColor = System.Drawing.ColorTranslator.FromOle(RGB(255, 255, 255)) ipaddr.Enabled = True End Select End Sub Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command1.Click ' Data Tiplerinin Tanimlanmasi... Dim sendbuf(1024) As Byte ' Send buffer Dim recvbuf(1024) As Byte ' Receive buffer Dim remote_addr As Integer ' Remote IP Address Dim slav_addr_s As Integer ' Request Station address Dim func_code_s As Integer ' Request function code Dim slav_addr_r As Integer ' Receive Station address Dim func_code_r As Integer ' Receive function code Dim rlen As Short ' Receive data length Dim i As Short Dim RecvString As String Dim ComChr As String Dim parity As Byte Dim DataLen As Short ' Request data length Dim ASC_Renamed(1) As Byte ' Used to Convert HEX value to ASCII Dim idx As Short ' Communication Type Dim mode As Short ' Modbus mode Dim comport(8) As Byte ' Comport name slav_addr_s = CShort(add_s.Text) ' Modbus Address (Decimal) func_code_s = CShort("&H" & func_s.Text) ' Function Code (Hex String to Integer) Dim DataString As String DataString = data_s.Text ' Data, ex:0500FF00 Dim ComString As String ComString = Combo3.Text ' Com port, ex: COM2 remote_addr = inet_addr(ipaddr.Text) ' Get Internet IP Address For i = 0 To Len(DataString) - 1 Step 2 ' Convert Modbus Data sendbuf(i / 2) = CByte("&H" & Mid(DataString, i + 1, 2)) Next i
55
For i = 0 To Len(ComString) - 1 ' Conver String to Char Array ComChr = Mid(ComString, i + 1, 1) comport(i) = AscW(ComChr) Next i idx = Combo1.SelectedIndex ' Select Communication Type mode = Combo2.SelectedIndex ' Modbus mode parity = AscW("N") ' Parity DataLen = 4 ' Request data length ' Modbus Communication Start --------------------------------------- Select Case idx Case Is = 0 'Modbus Call OpenModbusSerial(comport(0), 9600, 8, parity, 1, mode + 1) ' Open Modbus (9600, 7, E, 1, (1 for ASCII, 2 for RTU)) Call RequestData(slav_addr_s, func_code_s, sendbuf(0), DataLen) ' Request Data rlen = ResponseData(slav_addr_r, func_code_r, recvbuf(0)) ' Response Data For i = 0 To rlen - 1 Call HEX_to_ASCI(recvbuf(i), ASC_Renamed) RecvString = RecvString & Chr(ASC_Renamed(0)) & Chr(ASC_Renamed(1)) Next i Call CloseSerial() ' Close Modbus Case Is = 1 'Modbus/TCP Call OpenModbusTCPSocket(remote_addr) ' Open Modbus TCP Socket Call RequestData(slav_addr_s, func_code_s, sendbuf(0), 4) ' Request Data rlen = ResponseData(slav_addr_r, func_code_r, recvbuf(0)) ' Response Data For i = 0 To rlen - 1 Call HEX_to_ASCI(recvbuf(i), ASC_Renamed) RecvString = RecvString & Chr(ASC_Renamed(0)) & Chr(ASC_Renamed(1)) Next i
56
Call CloseSocket() ' Close Modbus TCP Socket End Select ' Modbus Communication End ----------------------------------------- add_r.Text = CStr(slav_addr_r) ' Assign data func_r.Text = Hex(func_code_r) data_r.Text = RecvString End Sub ' Convert ASCII to HEX Private Function ASCI_to_HEX(ByRef asci() As Byte, ByRef value_hex As Byte) As Object value_hex = &H0 Dim i As Short i = 0 For i = 0 To 2 If (asci(i) >= CDbl(&H30 & asci(i)) <= &H39) Then ' 0-9 value_hex = (value_hex * 16) + (asci(i) - &H30) ElseIf (asci(i) >= CDbl(&H41 & asci(i)) <= &H46) Then ' A-F value_hex = ((value_hex * 16) + (asci(i) - &H37)) ElseIf (asci(i) >= CDbl(&H61 & asci(i)) <= &H66) Then ' a-f value_hex = ((value_hex * 16) + (asci(i) - &H57)) End If Next i End End Function 'Convert HEX to ASCII Private Sub HEX_to_ASCI(ByVal value_hex As Byte, ByRef asci() As Byte) Dim reglow As Object Dim reghigh As Byte reghigh = CShort(value_hex And &HF0) / 16 ' >>4 reglow = value_hex And &HF If (reghigh <= 9) Then asci(0) = reghigh + &H30 Else asci(0) = (reghigh - 10) + &H41 End If If (reglow <= 9) Then
57
asci(1) = reglow + &H30 Else asci(1) = (reglow - 10) + &H41 End If End Sub Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load Combo1.Text = "RS232" Combo2.Text = "MODBUS-RTU" Combo3.Text = "COM2" add_s.Text = "0" End Sub Private Sub m0_on_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "05" data_s.Text = "0800FF00" Command1_Click(AcceptButton, AcceptButton) End Sub Private Sub m0_off_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "05" data_s.Text = "08000000" Command1_Click(AcceptButton, AcceptButton) End Sub Function HexToDec(ByVal hexStr As String) As Long 'Hex sayinin decimala donusturulmesi kodu HexToDec = CLng("&H" & hexStr) End Function Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles funccode_combo.SelectedIndexChanged Dim func_cod As Short func_cod = funccode_combo.SelectedIndex Select Case func_cod Case Is = 0 func_s.Text = "01" Case Is = 1 func_s.Text = "02" Case Is = 2 func_s.Text = "03" Case Is = 3
58
func_s.Text = "05" Case Is = 4 func_s.Text = "06" Case Is = 5 func_s.Text = "15" Case Is = 6 func_s.Text = "16" Case Is = 7 func_s.Text = "17" End Select End Sub Private Sub D0_yaz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "06" Command1_Click(AcceptButton, AcceptButton) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "03" data_s.Text = "10010001" Command1_Click(AcceptButton, AcceptButton) EndSub
59
EK C. Oransal Kontrol Kartı Yazılımı
program oransal
dim LCD_RS as sbit at Rc5_bit
LCD_EN as sbit at Rc4_bit
LCD_D4 as sbit at Rd0_bit
LCD_D5 as sbit at Rd1_bit
LCD_D6 as sbit at Rd2_bit
LCD_D7 as sbit at Rd3_bit
LCD_RS_Direction as sbit at TRISc5_bit
LCD_EN_Direction as sbit at TRISc4_bit
LCD_D4_Direction as sbit at TRISd0_bit
LCD_D5_Direction as sbit at TRISd1_bit
LCD_D6_Direction as sbit at TRISd2_bit
LCD_D7_Direction as sbit at TRISd3_bit
dim ileri as sbit at portb.3
dim geri as sbit at portb.4
dim clk as sbit at portc.2
dim dizi as byte[10]
dim sira as word
dim adc as word
dim adc1 as word
dim sadc as string[5]
dim sbyt as string[3]
dim say as word
dim sayb as byte
dim zaman as byte
dim yuzde as byte
dim onda as byte
dim kar1 as byte
kar2 as byte
kar3 as byte
kar4 as byte
sub procedure interrupt()
60
INTCON.GIE = 0
INTCON.2 = 0
INTCON.GIE = 1
end sub
sub procedure cik_volt(dim gelen as byte )
select case gelen
case 0
for say=0 to 5
clk=1
delay_ms(100)
clk=0
delay_ms(100)
next say
case 1
for say=0 to 3000
clk=1
delay_us(340)
clk=0
delay_us(340)
next say
case 2
for say=0 to 5000
clk=1
delay_us(200)
clk=0
delay_us(200)
next say
case 3
for say=0 to 6000
clk=1
delay_us(140)
clk=0
delay_us(140)
61
next say
case 4
for say=0 to 8000
clk=1
delay_us(107)
clk=0
delay_us(107)
next say
case 5
for say=0 to 10000
clk=1
delay_us(87)
clk=0
delay_us(87)
next say
case 6
for say=0 to 10000
clk=1
delay_us(74)
clk=0
delay_us(74)
next say
case 7
for say=0 to 15000
clk=1
delay_us(63)
nop
clk=0
delay_us(63)
nop
next say
case 8
for say=0 to 16000
62
clk=1
delay_us(55)
nop
clk=0
delay_us(55)
nop
next say
case 9
for say=0 to 18000
clk=1
delay_us(49)
clk=0
delay_us(49)
next say
case 10
for say=0 to 25000
clk=1
delay_us(40)
clk=0
delay_us(40)
next say
end select
end sub
sub procedure kaydet(dim gelen1 as byte,dim gelen2 as byte )
select case gelen1
case 0
EEprom_write(10,gelen2) 'adres,data
Delay_100ms
case 10
EEprom_write(11,gelen2) 'adres,data
Delay_100ms
case 20
EEprom_write(12,gelen2) 'adres,data
63
Delay_100ms
case 30
EEprom_write(13,gelen2) 'adres,data
Delay_100ms
case 40
EEprom_write(14,gelen2) 'adres,data
Delay_100ms
case 50
EEprom_write(15,gelen2) 'adres,data
Delay_100ms
case 60
EEprom_write(16,gelen2) 'adres,data
Delay_100ms
case 70
EEprom_write(17,gelen2) 'adres,data
Delay_100ms
case 80
EEprom_write(18,gelen2) 'adres,data
Delay_100ms
case 90
EEprom_write(19,gelen2) 'adres,data
Delay_100ms
case 100
EEprom_write(20,gelen2) 'adres,data
Delay_100ms
end select
end sub
sub procedure hafiza()
Lcd_cmd(_lcd_clear)
yuzde=0
SAYB=0
while true
adc= ADC_Read(0)
64
delay_ms(100)
adc=(adc/5)
WORDtostr(adc,sadc)
Lcd_Out(1, 1,"O.G." )
Lcd_Out(1, 5, sadc )
delay_ms(100)
bytetostr(yuzde,sbyt)
Lcd_Out(1, 11,"%" )
Lcd_Out(1, 12, sbyt )
Lcd_Out(2, 1,"< iLER KAY.CIK >" )
if geri=1 then
while(geri=1)
Delay_1us
wend
yuzde=(yuzde+10)
if yuzde>100 then
yuzde=0
end if
end if
if ileri=1 then
While ((ileri=1)and(sayb<=10))
delay_ms(350)
inc(sayb)
wend
if sayb>=10 then
goto BAS1
end if
sayb=0
KAYDET(yuzde,adc)
Lcd_cmd(_lcd_clear)
Lcd_Out(2, 1,"KAYIT OK" )
Delay_1sec
65
Lcd_cmd(_lcd_clear)
end if
wend
BAS1:
end sub
sub procedure manuel()
INTCON.2 = 0
INTCON.GIE = 1
Lcd_cmd(_lcd_clear)
zaman=5
wordtostr(zaman,sadc)
Lcd_Out(1, 1,"GiDEN DEGER" )
Lcd_Out(2, 5, sadc )
while true
if ileri=1 then
While ((ileri=1)and(sayb<=10))
delay_ms(350)
inc(sayb)
wend
if sayb>=10 then
goto bas
end if
sayb=0
inc(zaman)
if zaman>10 then
zaman=10
end if
wordtostr(zaman,sadc)
Lcd_Out(1, 1,"GiDEN DEGER" )
Lcd_Out(2, 5, sadc )
end if
if geri=1 then
66
while(geri=1)
Delay_1us
wend
dec(zaman)
if zaman=255 then
zaman=0
end if
wordtostr(zaman,sadc)
Lcd_Out(1, 1,"GiDEN DEGER" )
Lcd_Out(2, 5, sadc )
end if
cik_volt(zaman)
wend
bas:
end sub
sub procedure HAFIZA_OKU() '
dim deger1 as byte
deger2 as byte
ss as string[3]
ZAMAN=0
sayb=0
Lcd_cmd(_lcd_clear)
Lcd_Out(2, 1,"< GEZ > CIK >" )
while true
if ileri=1 then
While ((ileri=1)and(sayb<=10))
delay_ms(350)
inc(sayb)
wend
if sayb>=10 then
goto bas2
end if
sayb=0
67
inc(zaman)
if zaman>10 then
zaman=10
end if
deger1=(zaman*10)
bytetostr(deger1,ss)
Lcd_Out(1, 1,"%" )
Lcd_Out(1, 2, ss )
deger2=(zaman+10)
deger1=EEprom_read(deger2)
bytetostr(deger1,ss)
Lcd_Out(1, 5,"HAFIZADA" )
Lcd_Out(1, 14, ss )
end if
if geri=1 then
while(geri=1)
Delay_1us
wend
dec(zaman)
if zaman=255 then
zaman=0
end if
deger1=(zaman*10)
bytetostr(deger1,ss)
Lcd_Out(1, 1,"%" )
Lcd_Out(1, 2, ss )
deger2=(zaman+10)
deger1=EEprom_read(deger2)
bytetostr(deger1,ss)
Lcd_Out(1, 5,"HAFIZADA" )
68
Lcd_Out(1, 14, ss )
end if
WEND
BAS2:
END SUB
sub procedure hassasiyet()
dim deger1 as byte
deger2 as byte
ss as string[3]
Lcd_cmd(_lcd_clear)
ZAMAN=EEprom_read(9)
bytetostr(zaman,ss)
Lcd_Out(1, 1,"HASSASiYET" )
Lcd_Out(1, 12, ss )
Lcd_Out(2, 2,"KAYDET CIK >" )
SAYB=0
while true
if ileri=1 then
While ((ileri=1)and(sayb<=10))
delay_ms(350)
inc(sayb)
wend
if sayb>=10 then
EEprom_write(9,ZAMAN) 'adres,data
Delay_100ms
goto bas3
end if
sayb=0
inc(zaman)
if zaman>50 then
zaman=50
end if
end if
69
if geri=1 then
while(geri=1)
Delay_1us
wend
dec(zaman)
if zaman=255 then
zaman=0
end if
end if
bytetostr(zaman,ss)
Lcd_Out(1, 1,"HASSASiYET" )
Lcd_Out(1, 12, ss )
wend
BAS3:
end sub
main:
ADCON1 = %00001110 ' digital i/o an0 analog in
t0con = %11000111 '512 us
INTCON = %10100000
TRISA = %00000001
TRISB = %00000000
TRISC = %00000000
TRISD = %00000000
TRISE = %00000000
PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0
Lcd_Init()
Lcd_Cmd(_Lcd_CURSOR_OFF)
70
Lcd_cmd(_lcd_clear)
delay_ms(250)
Lcd_Out(1, 4,"UNAL SANLI" )
Lcd_Out(2, 4,"5055096152" )
delay_ms(100)
Lcd_cmd(_lcd_clear)
sayb=0
yuzde=0
zaman=5
kar1=10
kar2=0
kar3=0
kar4=0
adc1=122
while true
Lcd_Out(1, 1,"OTOMATiK CALISMA" )
Lcd_Out(2, 1,"MENU OK GiRiS" )
if ileri=1 then
INTCON.GIE = 0
sayb=1
While (ileri=1)
Delay_1us
wend
Lcd_Out(2, 1,"< GEZiNTi , OK >" )
while true
if geri=1 then
inc(sayb)
while(geri=1)
Delay_1us
wend
end if
if sayb=6 then
71
sayb=1
end if
if sayb=1 then
Lcd_Out(1, 1,"1-MANUEL KAYIT " )
end if
if sayb=2 then
Lcd_Out(1, 1,"2-MANUEL CIKIS " )
end if
if sayb=3 then
Lcd_Out(1, 1,"3-HASSASiYET " )
end if
if sayb=4 then
Lcd_Out(1, 1,"4- HAFIZAYI OKU " )
end if
if sayb=5 then
Lcd_Out(1, 1,"5- CIKIS " )
end if
if ileri=1 then
while(ileri=1)
Delay_1us
wend
if sayb=1 then
hafiza
Lcd_cmd(_lcd_clear)
while(ileri=1)
Delay_1us
wend
break
end if
if sayb=2 then
manuel
Lcd_cmd(_lcd_clear)
while(ileri=1)
72
Delay_1us
wend
break
end if
if sayb=3 then
hassasiyet
Lcd_cmd(_lcd_clear)
while(ileri=1)
Delay_1us
wend
break
end if
if sayb=4 then
HAFIZA_OKU()
Lcd_cmd(_lcd_clear)
while(ileri=1)
Delay_1us
wend
break
end if
if sayb=5 then
Lcd_cmd(_lcd_clear)
while(ileri=1)
Delay_1us
wend
break
end if
end if
wend
INTCON.2 = 0
INTCON.GIE = 1
end if
adc= ADC_Read(0)
73
kar4=EEprom_read(9)'hassasiyet değeri
adc=(adc/5)
kar3=20
for kar1=0 to 10
kar2=EEprom_read(kar1+10)
if ( ((adc-kar4)<= kar2) and ((adc+kar4)>=kar2) ) then
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sayac = 0 End Sub
Dim sayac As Byte Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sayac = 0 End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick If DIO0.ReadDiChannel(0) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 0) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 0) End If If DIO0.ReadDiChannel(1) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 1) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 1) End If If DIO0.ReadDiChannel(2) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 2) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 2) End If If DIO0.ReadDiChannel(3) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 3) 'çıkış aktif-pasif-port no
76
Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 3) End If If DIO0.ReadDiChannel(4) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 4) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 4) End If If DIO0.ReadDiChannel(5) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 5) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 5) End If If DIO0.ReadDiChannel(6) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 6) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 6) End If If DIO0.ReadDiChannel(7) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 7) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 7) End If If DIO0.ReadDiChannel(8) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 8) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 8) End If
77
If DIO0.ReadDiChannel(9) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 9) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 9) End If If DIO0.ReadDiChannel(10) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 10) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 10) End If If DIO0.ReadDiChannel(11) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 11) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 11) End If If DIO0.ReadDiChannel(12) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 12) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 12) End If If DIO0.ReadDiChannel(13) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 13) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 13) End If If DIO0.ReadDiChannel(14) = 0 Then TextBox19.Text = sayac
78
DIO0.WriteDoChannel(1, 14) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 14) End If If DIO0.ReadDiChannel(15) = 0 Then TextBox19.Text = sayac DIO0.WriteDoChannel(1, 15) 'çıkış aktif-pasif-port no Else TextBox19.Text = "" DIO0.WriteDoChannel(0, 15) End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Button1.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 0) 'çıkış aktif-pasif-port no Button1.BackColor = Color.Silver Else Button1.BackColor = Color.Red DIO0.WriteDoChannel(1, 0) End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Button2.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 1) 'çıkış aktif-pasif-port no Button2.BackColor = Color.Silver Else Button2.BackColor = Color.Red DIO0.WriteDoChannel(1, 1) End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If Button3.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 2) 'çıkış aktif-pasif-port no Button3.BackColor = Color.Silver Else Button3.BackColor = Color.Red DIO0.WriteDoChannel(1, 2) End If End Sub
79
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If Button4.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 3) 'çıkış aktif-pasif-port no Button4.BackColor = Color.Silver Else Button4.BackColor = Color.Red DIO0.WriteDoChannel(1, 3) End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If Button5.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 4) 'çıkış aktif-pasif-port no Button5.BackColor = Color.Silver Else Button5.BackColor = Color.Red DIO0.WriteDoChannel(1, 4) End If End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click If Button6.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 5) 'çıkış aktif-pasif-port no Button6.BackColor = Color.Silver Else Button6.BackColor = Color.Red DIO0.WriteDoChannel(1, 5) End If End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click If Button7.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 6) 'çıkış aktif-pasif-port no Button7.BackColor = Color.Silver Else Button7.BackColor = Color.Red DIO0.WriteDoChannel(1, 6) End If End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click If Button8.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 7) 'çıkış aktif-pasif-port no
80
Button8.BackColor = Color.Silver Else Button8.BackColor = Color.Red DIO0.WriteDoChannel(1, 7) End If End Sub Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click If Button9.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 8) 'çıkış aktif-pasif-port no Button9.BackColor = Color.Silver Else Button9.BackColor = Color.Red DIO0.WriteDoChannel(1, 8) End If End Sub Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click If Button10.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 9) 'çıkış aktif-pasif-port no Button10.BackColor = Color.Silver Else Button10.BackColor = Color.Red DIO0.WriteDoChannel(1, 9) End If End Sub Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click If Button11.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 10) 'çıkış aktif-pasif-port no Button11.BackColor = Color.Silver Else Button11.BackColor = Color.Red DIO0.WriteDoChannel(1, 10) End If End Sub Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click If Button12.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 11) 'çıkış aktif-pasif-port no Button12.BackColor = Color.Silver Else Button12.BackColor = Color.Red DIO0.WriteDoChannel(1, 11) End If
81
End Sub Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click If Button13.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 12) 'çıkış aktif-pasif-port no Button13.BackColor = Color.Silver Else Button13.BackColor = Color.Red DIO0.WriteDoChannel(1, 12) End If End Sub Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click If Button14.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 13) 'çıkış aktif-pasif-port no Button14.BackColor = Color.Silver Else Button14.BackColor = Color.Red DIO0.WriteDoChannel(1, 13) End If End Sub Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click If Button15.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 14) 'çıkış aktif-pasif-port no Button15.BackColor = Color.Silver Else Button15.BackColor = Color.Red DIO0.WriteDoChannel(1, 14) End If End Sub Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click If Button16.BackColor = Color.Red Then DIO0.WriteDoChannel(0, 15) 'çıkış aktif-pasif-port no Button16.BackColor = Color.Silver Else Button16.BackColor = Color.Red DIO0.WriteDoChannel(1, 15) End If End Sub
82
EK E. Ana Program Yazılımı ve Resimleri
Microsoft.VisualBasic.ComClass()> Public Class anasayfa Inherits System.Windows.Forms.Form ' Call Windows API (For winsock use) Private Declare Function inet_addr Lib "wsock32.dll" (ByVal s As String) As Integer Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) ' Call Window API (For registry use, Find Serial Port list) Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Integer, ByVal lpSubKey As String, ByVal ulOptions As Integer, ByVal samDesired As Integer, ByRef phkResult As Integer) As Integer Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Integer, ByVal dwIndex As Integer, ByVal lpValueName As String, ByRef lpcbValueName As Integer, ByVal lpReserved As Integer, ByRef lpType As Integer, ByRef lpData As Integer, ByRef lpcbData As Integer) As Integer Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer Const REG_SZ As Short = 1 Const HKEY_LOCAL_MACHINE As Integer = &H80000002 Const ERROR_SUCCESS As Short = 0 Const SYNCHRONIZE As Integer = &H100000 Const STANDARD_RIGHTS_READ As Integer = &H20000 Const KEY_QUERY_VALUE As Integer = &H1 Const KEY_CREATE_SUB_KEY As Integer = &H4 Const KEY_ENUMERATE_SUB_KEYS As Integer = &H8 Const KEY_NOTIFY As Integer = &H10 Const KEY_READ As Boolean = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE)) Private Sub anasayfa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With Me .MaximizeBox = False .MinimizeBox = False .FormBorderStyle = System.Windows.Forms.FormBorderStyle.None .WindowState = System.Windows.Forms.FormWindowState.Maximized End With End Sub
83
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click CALISMASECENEKLERi.ShowDialog() CALISMASECENEKLERi.TopMost = True End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ISIAYAR.ShowDialog() CALISMASECENEKLERi.TopMost = True End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click MESAFEHIZBASINC.ShowDialog() MESAFEHIZBASINC.TopMost = True End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click GENELİSLEMLER.ShowDialog() GENELİSLEMLER.TopMost = True End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click SAYICIAYARLARI.ShowDialog() SAYICIAYARLARI.TopMost = True End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click ' Data Tiplerinin Tanimlanmasi... Dim sendbuf(1024) As Byte ' Send buffer Dim recvbuf(1024) As Byte ' Receive buffer Dim remote_addr As Integer ' Remote IP Address Dim slav_addr_s As Integer ' Request Station address Dim func_code_s As Integer ' Request function code Dim slav_addr_r As Integer ' Receive Station address Dim func_code_r As Integer ' Receive function code Dim rlen As Short ' Receive data length Dim i As Short Dim RecvString As String Dim ComChr As String Dim parity As Byte Dim DataLen As Short ' Request data length Dim ASC_Renamed(1) As Byte ' Used to Convert HEX value to ASCII Dim idx As Short ' Communication Type Dim mode As Short ' Modbus mode
84
Dim comport(8) As Byte ' Comport name slav_addr_s = CShort(add_s.Text) ' Modbus Address (Decimal) func_code_s = CShort("&H" & func_s.Text) ' Function Code (Hex String to Integer) Dim DataString As String DataString = data_s.Text ' Data, ex:0500FF00 Dim ComString As String ComString = Combo3.Text ' Com port, ex: COM2 remote_addr = inet_addr(ipaddr.Text) ' Get Internet IP Address For i = 0 To Len(DataString) - 1 Step 2 ' Convert Modbus Data sendbuf(i / 2) = CByte("&H" & Mid(DataString, i + 1, 2)) Next i For i = 0 To Len(ComString) - 1 ' Conver String to Char Array ComChr = Mid(ComString, i + 1, 1) comport(i) = AscW(ComChr) Next i idx = Combo1.SelectedIndex ' Select Communication Type mode = Combo2.SelectedIndex ' Modbus mode parity = AscW("N") ' Parity DataLen = 4 ' Request data length ' Modbus Communication Start --------------------------------------- Select Case idx Case Is = 0 'Modbus Call OpenModbusSerial(comport(0), 9600, 8, parity, 1, mode + 1) ' Open Modbus (9600, 7, E, 1, (1 for ASCII, 2 for RTU)) Call RequestData(slav_addr_s, func_code_s, sendbuf(0), DataLen) ' Request Data rlen = ResponseData(slav_addr_r, func_code_r, recvbuf(0)) ' Response Data For i = 0 To rlen - 1 Call HEX_to_ASCI(recvbuf(i), ASC_Renamed) RecvString = RecvString & Chr(ASC_Renamed(0)) & Chr(ASC_Renamed(1)) Next i Call CloseSerial() ' Close Modbus
85
Case Is = 1 'Modbus/TCP Call OpenModbusTCPSocket(remote_addr) ' Open Modbus TCP Socket Call RequestData(slav_addr_s, func_code_s, sendbuf(0), 4) ' Request Data rlen = ResponseData(slav_addr_r, func_code_r, recvbuf(0)) ' Response Data For i = 0 To rlen - 1 Call HEX_to_ASCI(recvbuf(i), ASC_Renamed) RecvString = RecvString & Chr(ASC_Renamed(0)) & Chr(ASC_Renamed(1)) Next i Call CloseSocket() ' Close Modbus TCP Socket End Select ' Modbus Communication End ----------------------------------------- add_r.Text = CStr(slav_addr_r) ' Assign data func_r.Text = Hex(func_code_r) data_r.Text = RecvString End Sub Private Function ASCI_to_HEX(ByRef asci() As Byte, ByRef value_hex As Byte) As Object value_hex = &H0 Dim i As Short i = 0 For i = 0 To 2 If (asci(i) >= CDbl(&H30 & asci(i)) <= &H39) Then ' 0-9 value_hex = (value_hex * 16) + (asci(i) - &H30) ElseIf (asci(i) >= CDbl(&H41 & asci(i)) <= &H46) Then ' A-F value_hex = ((value_hex * 16) + (asci(i) - &H37)) ElseIf (asci(i) >= CDbl(&H61 & asci(i)) <= &H66) Then ' a-f value_hex = ((value_hex * 16) + (asci(i) - &H57)) End If Next i End End Function 'Convert HEX to ASCII
86
Private Sub HEX_to_ASCI(ByVal value_hex As Byte, ByRef asci() As Byte) Dim reglow As Object Dim reghigh As Byte reghigh = CShort(value_hex And &HF0) / 16 ' >>4 reglow = value_hex And &HF If (reghigh <= 9) Then asci(0) = reghigh + &H30 Else asci(0) = (reghigh - 10) + &H41 End If If (reglow <= 9) Then asci(1) = reglow + &H30 Else asci(1) = (reglow - 10) + &H41 End If End Sub Private Sub m0_on_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "05" data_s.Text = "0800FF00" Button1_Click(AcceptButton, AcceptButton) End Sub Private Sub m0_off_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "05" data_s.Text = "08000000" Button1_Click(AcceptButton, AcceptButton) End Sub Function HexToDec(ByVal hexStr As String) As Long 'Hex sayinin decimala donusturulmesi kodu HexToDec = CLng("&H" & hexStr) End Function Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles funccode_combo.SelectedIndexChanged Dim func_cod As Short func_cod = funccode_combo.SelectedIndex Select Case func_cod
87
Case Is = 0 func_s.Text = "01" Case Is = 1 func_s.Text = "02" Case Is = 2 func_s.Text = "03" Case Is = 3 func_s.Text = "05" Case Is = 4 func_s.Text = "06" Case Is = 5 func_s.Text = "15" Case Is = 6 func_s.Text = "16" Case Is = 7 func_s.Text = "17" End Select End Sub Private Sub D0_yaz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) func_s.Text = "06" Button1_Click(AcceptButton, AcceptButton) End Sub
88
Şekil E.1. Makine kontrol yazılımı ana sayfa görünüşü
Şekil E.2. Makine kontrol yazılımı çalışma seçenekleri sayfa görünüşü
89
Şekil E.3. Makine kontrol yazılımı sıcaklık ayar sayfa görünüşü
Şekil E.4. Makine kontrol yazılımı mesafe-hız-basınç ayarları sayfa görünüşü
90
Şekil E.5. Makine kontrol yazılımı mengene ayar sayfa görünüşü
Şekil E.6. Makine kontrol yazılımı enjeksiyon işlemleri ayar sayfa görünüşü
91
Şekil E.7. Makine kontrol yazılımı itici ayar sayfa görünüşü
Şekil E.8. Makine kontrol yazılımı genel ayarlar sayfa görünüşü
92
Şekil E.9. Makine kontrol yazılımı genel I/O ayar sayfa görünüşü
93
ÖZGEÇMİŞ
Adı Soyadı : Ünal ŞANLI Doğum Yeri ve Yılı : Malatya, 1981 Medeni Hali : Evli Yabancı Dili : İngilizce E-Posta : [email protected] Eğitim Durumu Lise : Malatya Şehit Kemal Özalper Teknik Lisesi Lisans : S.D.Ü., Teknik Eğitim Fakültesi, Elektronik Bilgisayar Eğitimi Mesleki Deneyim Milli Eğitim Bakanlığı Bilgisayar Öğretmenliği : 2005-…(Halen) Ulusal kuruluşlarca desteklenen projede görev alma İPEK, O., KORU, M., YALÇIN, B., ÇAĞLAR, F., YAKUT, M.Z., "Plastik Enjeksiyon
Yöntemi ile Üretilen Enjeksiyon Ürünlerinin Termal (Sıcaklık, Termal İletkenlik Katsayısı, Temas Direnci) ve Dinamik (Hız, Akış, Basınç) Parametrelere Bağlı Olarak Üç Boyutlu Modellenmesi Amacıyla Üniversal Bir Enjeksiyon Makinesinin Tasarımı ve Üretimi" Sanayi ve Ticaret Bakanlığı SAN-TEZ Projesi, Proje No: 00012.STZ.2006-1.