• Sonuç bulunamadı

Bu uygulamada elde edinilen gerçek zamanlı mesajlar sadece yedi adet iş merkezi için oluşturulmuştur ve binlerce mesaj üretilmektedir. Bunun gerçek bir imalat ortamında gerçekleştirildiği düşünülürse bu mesaj sayısı saatlik yüz binlere ulaşabilir. Bu veri işletmeler için çok değerlidir ve bu verilerden çeşitli bilgiler edinilebilir. Bu nedenle bu verileri kaydetmek gerekir. Günümüzde kullanılan ilişkisel veritabanları böylesine büyük bir veri trafiğini kaldıramazlar. İlişkisel veritabanları yerine yüksek performans gösteren şemasız NoSql veritabanları önerilebilir [35].

İmalat ortamındaki gecikmelerin daha detaylı olarak incelenmesi için işçilerin kıyafetlerine sensörler yerleştirilerek işçilerin hareketleri gerçek zamanlı olarak yakalanabilir. Bu sayede iş ve metot etütleri otomatik olarak gerçekleştirilebilir ve optimize edilebilir. İşçilerin yapacağı yanlış hareketler çeşitli uyarı mekanizmaları ile engellenebilir.

Bu çalışmada geliştirilen model ile veriler yakalanarak uygulama katmanına aktarılmıştır. Üretim planlama ve kontrol sisteminin gerçek zamanlı çalışabilme kabiliyeti uygulamaların kabiliyeti ile sınırlı olacaktır. Karar verme, planlama gibi üst düzey uygulamaların algoritmaları yenilenerek sisteme gerçek zamanlı işlevsellik kazandırılabilir.

Verilerin gerçek zamanlı yakalanırken ağdaki aktarım gecikmeleri önemli ise endüstriyel ethernet protokolü olan PROFINET kullanılabilir. PROFINET, TCP/IP ve IT standartlarını kullanarak gerçek zamanlı veri aktarımını otomasyon alt yapısı için sağlar.

KAYNAKLAR

[1] ESTRIN DEBORAH, ROMESH GOVINDAN, JOHN ILEIDEMANN, and SATISH KUMAR, "Next century challenges: scalable coordination in sensor networks," ACM MobiCom'99, pp. 263-270, 1999.

[2] I.F. AKYILDIZ, W. SU, Y. SANKARASUBRAMANIAM, and E. CAYIRCI, "Wireless sensor networks: a survey," Computer Networks, pp. 393-422, 2002. [3] XINGFA SHEN, ZHI WANG, and YOUXIAN SUN, "Wireless Sensor

Networks for Industrial Applications," in 5th World Congress on Intelligent

Control and Automation, Hangzhou, 2004.

[4] KAY SOON LOW, WIN NU NU, and MENG JOO ER, "Wireless Sensor Networks for Industrial Environments," in Computational Intelligence for

Modelling, Control and Automation, 2005, pp. 271-276.

[5] JIN KIM, JUNG HAC SEO, JONNALAGADDA KRISHNA, and SUN-JOONG KIM, "Wireless Sensor Network based Asset Tracking Service," in

Management of Engineering & Technology, 2008. PICMET 2008. Portland International Conference, 2008, pp. 2643-2647.

[6] Lei Zhang and Zhi Wang, "Integration of RFID into Wireless Sensor Networks: Architectures, Opportunities and Challenging Problems," in Grid and

Cooperative Computing Workshops, 2006, pp. 463-469.

[7] A Mason, A Shaw, and A I Al-Shamma’a, "Inventory Management in the Packaged Gas Industry Using Wireless Sensor Networks," Advances in Wireless

Sensors and Sensor Networks, pp. 75-100, 2010.

[8] Hongcheng Yu, Haiping Zhu, Fei He, and Yunlong Wan, "Design of the Remote Monitoring System for Workshop Based on ZigBee Wireless Sensor Networks," Internet of Things, no. 312, pp. 33-40, 2012.

[9] Nghia Truong Van, Seung Joon Lee, Chang Won Lee, Ki Hwan Eom, and Kyung Kwon Jung, "An Implementation of Laundry Management System Based on RFID Hanger and Wireless Sensor Network," in Ubiquitous and

Future Networks, 2012, pp. 490-493.

Inventory Tracking in Zigbee RFID Sensor Network," in Industrial Electronics,

2009. IECON '09. 35th Annual Conference of IEEE, Porto, 2009, pp. 2618-

2623.

[11] PATRICK KINNEY, "ZigBee Technology: Wireless Control that Simply Works," in Communications Design Conference, 2003.

[12] http://zigbee.org/About/FAQ.aspx Erişim Tarihi:20.10.2012

[13] RAMANATHAN KARTHIKEYAN, "Routing Strategy Selection for Zigbee Mesh Networks," Scientific Research, vol. 3, no. 7, pp. 608-611, July 2010. [14] PETER JONES, COLIN CLARKE-HILL, PETER SHEARS, Daphne

COMFORT, and DAVID HILLIER, "Radio Frequency Identification in the UK: Opportunities and Challenges," Journal of Retail & Distribution Management, vol. 32, no. 3, pp. 164-171, 2004.

[15] REBECCA ANGELES, "Rfid Technologies: Supply-Chain Applications and Implementation Issues," Information Systems Management, pp. 51-65, 2005. [16] ALAN D. SMITH, "Exploring Radio Frequency Identification Technology and

Its Impact on Business Systems," Information Management & Computer

Security, vol. 13, no. 1, pp. 16-28, 2005.

[17] RUSTY JUBAN and DAVID WYLD, "Would You Like Chips with that?: Consumer Perspectives of RFID," Management Research News, vol. 27, pp. 29-44, 2004.

[18] HARVEY BRUCE PINE, "RFID and the Importance of Integration and Software," ABI Research, 2005.

[19] EDMUND W. SCHUSTER, DAVID L. BROCK, STUART J. ALLEN, PINAKI KAR, and MARK DINNING, Enabling ERP Through Auto-ID

Technology.: Stanford University Press, 2005.

[20] ÖMÜR Y. SAATÇIOĞLU, "RFID TEKNOLOJİSİ: FIRSATLAR, ENGELLER ve ÖRNEK UYGULAMALAR," Ege Akademik Bakış, vol. 6, no. 1, 2006. [21] http://www.techneon.com.tr/rfid-nedir.html Erişim Tarihi:05.11.2012

[22] JAMES A. TOMPKINS and JERRY D SMITH, The Warehouse Management

Handbook, 2nd ed.: Tompkins Press, 1998.

[23] SUSAN D’HONT, "Smart Pallet System Improves Warehouse Productivity,"

Sensor Review, vol. 16, no. 4, pp. 21-24, 1996.

Pharmaceutical Supply Chain: A Comparison of HF and UHF RFID Technologies," White Paper, 2004.

[25] MIKKO KÄRKKÄINEN, "Increasing Efficieny in the Supply Chain for Short Shelf Life Goods using RFID Tagging," International Journal of Retail &

Distribution Management, vol. 31, no. 10, pp. 529-536, 2003.

[26] PETER JONES, COLIN CLARKE-HILL, DAVID HILLIER, and DAPHNE COMFORT, "The Benefits, Challenges and Impacts of Radio Frequency Identification Technology (RFID) for Retailers in the UK," Marketing

Intelligence & Planning, vol. 23, no. 4, pp. 395-402, 2005.

[27] S.A. ELSHAYEB, K. HASNAN, and A.B. NAWAWI, "RFID technology and Zigbee networking in improving supply chain traceability," in Instrumentation,

Communications, Information Technology, and Biomedical Engineering (ICICI-BME), 2009, pp. 1-3.

[28] HUANJIA YANG and SHUANG-HUA YANG, "Connectionless indoor inventory tracking in Zigbee RFID Sensor network," in Industrial Electronics,

2009. IECON '09. 35th Annual Conference of IEEE, 2009, pp. 2618- 2623.

[29] MIKKO SALLINEN, ESKO STRÖMMER, and ARTO YLISAUKKO-OJA, "Application Scenario for NFC: Mobile Tool for Industrial Worker," , Cap Esterel, 2008, pp. 586-591.

[30] YINGFENG ZHANG, T. QU, OSCAR K. HO, and GEORGE Q. HUANG, "Agent-based Smart Gateway for RFID-enabled real-time wireless

manufacturing," International Journal of Production Research, pp. 1337-1352, 2011.

[31] RAY Y. ZHONG, Q. Y. DAI, T. QU, G. J. HU, and GEORGE Q. HUANG, "RFID-enabled real-time manufacturing execution system for

mass-customization production," Robotics and Computer-Integrated Manufacturing, pp. 283-292, 2012.

[32] E. W. T Ngai et al., "Design and development of an intelligent context-aware decision support system for real-time monitoring of container terminal

operations," International Journal of Production Research, vol. 12, no. 49, pp. 3501-3526, 2011.

[33] Hai Ning Li, Shu Dong Sun, and Ying Feng Zhang, "Using Auto-ID

Technologies to Implement Real-Time Manufacturing Resources Tracking and Tracing," Applied Mechanics and Materials, no. 121 - 126, pp. 1574-1578, 2011.

[34] Hangbae Chang, Jonggu Kang, Yanghoon Kim, Jeahwan Lim, and Youngsub Na, "A Case Study on Cooperative Real-time Quality Monitoring Service

Utilizing Sensor Networks," Computer Science and Convergence, no. 114, pp. 203-210, 2012.

[35] Baran Kaynak, Sümeyye Şen, İhsan Hakan Selvi, İsmail Hakkı Cedimoğlu, and Orhan Torkul, "Comparison of Relational and Document Based Databases for Object-Oriented Modeled Manufacturing Information System," in IMS 2012, Antalya, 2012.

[36] ALAN D. SMITH, "Exploring Radio Frequency Identification Technology and Its Impact on Business Systems," Information Management & Computer

Security, vol. 13, no. 1, pp. 16-28, 2005.

[37] PETER JONES, COLIN CLARKE-HILL, PETER SHEARS, DAPHNE

COMFORT, and DAVID HILLIER, "Radio Frequency Identification in the UK: Opportunities and Challenges," International Journal of Retail & Distribution

Management, vol. 32, no. 3, pp. 164-171, 2004.

[38] S.C. ERGEN, "ZigBee/IEEE 802.15.4 Summary," , 2004.

[39] http://www.techneon.com.tr/rfid-nedir.html Erişim Tarihi:20.10.2012 [40] http://arduino.cc/en/Main/ArduinoBoardNano Erişim Tarihi:30.10.2012

EKLER

EK A. Sensör Sınıfı. public class Sensor {

public delegate void VeriOkunduEventHandler(string deger); public event VeriOkunduEventHandler VeriOkundu;

public void Oku(string deger) { if (VeriOkundu!=null) { VeriOkundu(deger); } } }

EK B. Ağırlık Sensörü Sınıfı. public class AgirlikSensoru : Sensor {

public delegate void VeriOkunduEventHandler(string deger); public event VeriOkunduEventHandler VeriOkundu;

public int Adet { get; set; } public void Azalt()

{

Adet--; Oku(); }

public void Arttir() {

Adet++; Oku(); }

public void StokYukle(int adet) {

Adet += adet; }

public void Oku() { if (VeriOkundu != null) { VeriOkundu(Adet.ToString()); } } }

EK C. Zeki Nesne Sınıfı. public class ZekiNesne {

public int ID { get; set; }

public int MakineID { get; set; }

public Sensor KuyrukGirdiSensor { get; set; } public Sensor KuyrukCiktiSensor { get; set; } public AgirlikSensoru AraStokSensor { get; set; } public Sensor CikisSensoru { get; set; }

public ZekiNesne(int id, int makineID) {

ID = id;

MakineID = makineID;

KuyrukGirdiSensor = new Sensor();

KuyrukGirdiSensor.VeriOkundu += KuyrukGirdiSensor_VeriOkundu; KuyrukCiktiSensor = new Sensor();

KuyrukCiktiSensor.VeriOkundu += KuyrukCiktiiSensor_VeriOkundu; AraStokSensor = new AgirlikSensoru();

AraStokSensor.VeriOkundu += AraStoksensor_VeriOkundu; CikisSensoru = new Sensor();

CikisSensoru.VeriOkundu += CikisSensoru_VeriOkundu; }

void CikisSensoru_VeriOkundu(string deger) {

VeriyiPlatformaGonder("Cikis:" + deger); }

void AraStoksensor_VeriOkundu(string deger) {

VeriyiPlatformaGonder("AraStok:" + deger); }

void KuyrukCiktiiSensor_VeriOkundu(string deger) {

VeriyiPlatformaGonder("KuyrukCikti:" + deger); }

void KuyrukGirdiSensor_VeriOkundu(string deger) {

VeriyiPlatformaGonder("KuyrukGirdi:" + deger); }

public void Durdu(string deger) {

VeriyiPlatformaGonder("IsMerkeziDurdu:" + deger); }

public void Acildi() {

VeriyiPlatformaGonder("IsMerkeziAcildi:" + "Acildi"); }

///<summary>

/// Kablosuz sensörler için veriyi hazırlar ///</summary>

///<param name="veri"></param>

private void VeriyiPlatformaGonder(string veri) {

veri = "ZNID:" + ID + ",MakineID:" + MakineID + "," + veri; KablsozVeriAktar(veri);

}

public delegate void KablosuzVeriAktarimiHandler(string veri); public event KablosuzVeriAktarimiHandler KablosuzVeriOkundu; private void KablsozVeriAktar(string veri)

{ if (KablosuzVeriOkundu!=null) { KablosuzVeriOkundu(veri); } } }

EK D. Mesaj Sınıfı. public class Mesaj {

public int ZNID { get; set; } public int MakineID { get; set; } public string SensorTip { get; set; } public string SensorDegeri { get; set; } public DateTime Zaman { get; set; } public override string ToString() {

string result = Zaman.ToString() + " - Zeki Nesne ID:" + ZNID.ToString() + " MakineID:" + MakineID.ToString() + " SensorTip:" + SensorTip + " Deger:" + SensorDegeri;

return result; }

EK E. Bant Sınıfı. public class Bant {

static List<IsMerkezi> IsMerkeziList = new List<IsMerkezi>(); static Depo Depo;

public static readonly List<ConcurrentQueue<Stok>> CikisKuyrukList = new List<ConcurrentQueue<Stok>>();

List<Rota> IslemList = new List<Rota>(); List<Rota> UretilenList = new List<Rota>();

//public readonly AutoResetEvent signal = new AutoResetEvent(false); public static readonly List<AutoResetEvent> SignalList = new

List<AutoResetEvent>();

public static int TasimaSuresi = 2;

public static int KuyrukKapasitesi { get; set; } public Bant(IzlemeveKontrol izlemekontrol) {

KuyrukKapasitesi = 2;

IzlemeveKontrol izlemeVeKontrol = izlemekontrol; Rota rotaBilgisi = Bisiklet.BisikletBilgisi();

ZekiNesne hammaddeZN =

izlemeVeKontrol.Platform.ZekiNesneList.Single(x => x.ID == 0); Uretec uretec = new Uretec(rotaBilgisi, this, hammaddeZN);

ZekiNesne depoZN = izlemeVeKontrol.Platform.ZekiNesneList.Single(x => x.ID == 100);

Depo = new Depo(depoZN);

int[] kritikSeviye = new int[10] { 20, 16, 40, 20, 80, 100, 20, 24, 36, 100 }; foreach (RotaParcasi item in rotaBilgisi.RotaList)

{

ZekiNesne zn = izlemeVeKontrol.Platform.ZekiNesneList.Single(x => x.ID == item.Sira);

IsMerkezi isMerkezi = new IsMerkezi(item.Sira, rotaBilgisi, this, zn, kritikSeviye[item.Sira - 1]);

IsMerkeziList.Add(isMerkezi); }

izlemeVeKontrol.IsMerkeziListTanimla(IsMerkeziList); //Her bir rotaparçası kadar banda çıkış kuyruğu ekle (arastok) for (int z = 0; z < 8; z++)

{

ConcurrentQueue<Stok> queue = new ConcurrentQueue<Stok>(); CikisKuyrukList.Add(queue);

}

foreach (IsMerkezi item in IsMerkeziList) {

Thread threadIsMerkezi = new Thread(item.Start); threadIsMerkezi.Start();

}

int i = 0;

foreach (var item in CikisKuyrukList) {

Thread threadBant = new Thread(new ParameterizedThreadStart(Bant.Start));

threadBant.Start(i); i++;

}

Thread threadUretec = new Thread(uretec.Start); threadUretec.Start();

}

public void Uret(Rota rota) {

IslemList.Add(rota); IslemList.Remove(rota); UretilenList.Add(rota); }

public static void Start(object ID) {

int id = (int)(ID);

//Bu threadin sorumlu olduğu bant kuyruğu

ConcurrentQueue<Stok> araStok = CikisKuyrukList[id]; //Depo ise if (id == 7) { while (true) { Thread.Sleep(TasimaSuresi); Stok item = null;

if (araStok.IsEmpty) {

SignalList[7].WaitOne(); }

while (araStok.TryDequeue(out item)) {

Depo.signal.Set(); Bant.SignalList[id].Set(); } } } else {

//Bu kuyruktan alacak olan ismerkezi; IsMerkezi isMer = IsMerkeziList.Single(x => x.ID == id + 1); while (true) {

//SignalList[id - 1].WaitOne(); Thread.Sleep(TasimaSuresi); bool eldeMi = true; while (eldeMi) {

//Bir sonraki iş merkezinin tamponu doluysa bu iş merkezinden gelecek olan sinyali bekle if (isMer.TamponGiris.Count >= isMer.KuyrukKapasitesi) { isMer.signal.WaitOne(); eldeMi = true; } else {

Stok item = null; while (araStok.TryDequeue(out item)) { Bant.SignalList[id].Set(); isMer.TamponGiris.Enqueue(item); isMer.ZekiNesne.KuyrukGirdiSensor.Oku(item.Adi); isMer.signal.Set(); eldeMi = false; } } } } } } }

EK F. İş Merkezi Sınıfı. public class IsMerkezi {

public readonly AutoResetEvent signal = new AutoResetEvent(false);

public readonly AutoResetEvent signalAraStok = new AutoResetEvent(false); public readonly AutoResetEvent signalStokCikis = new AutoResetEvent(false); public readonly AutoResetEvent signalIslem = new AutoResetEvent(true); public int ID { get; set; }

public string Ad { get; set; }

public readonly ConcurrentQueue<Stok> TamponGiris = new ConcurrentQueue<Stok>();

Queue<Stok> AraStok = new Queue<Stok>(); private readonly double SureKatsayisi;

private Rota RotaBilgisi = null; private int Sira;

private RotaParcasi RotaParcaBilgisi = null; private Bant Bant = null;

public ZekiNesneEtmenleri.ZekiNesne ZekiNesne { get; set; } public int KritikStokSeviyesi { get; set; }

public int Kapasite { get; set; } public bool Yukleniyor { get; set; } private bool IslemdeMi { get; set; } public int KuyrukKapasitesi { get; set; }

public IsMerkezi(int sira, Rota rotaBilgisi, Bant bant, ZekiNesneEtmenleri.ZekiNesne zn, int kapasite)

{

Kapasite = kapasite;

KritikStokSeviyesi = Convert.ToInt32(Kapasite / 4); KuyrukKapasitesi = 1;

ZekiNesne = zn;

//Arastoğu başlangıç için besle for (int i = 0; i < 20; i++) { AraStok.Enqueue(new Stok(555, "555", 123)); zn.AraStokSensor.Arttir(); } ID = sira; Sira = sira; RotaBilgisi = rotaBilgisi; SureKatsayisi = 1.0; IslemdeMi = false;

RotaParcasi rotaParcaBilgisi = RotaBilgisi.RotaList.Single(x => x.Sira == Sira);

RotaParcaBilgisi = rotaParcaBilgisi; Bant = bant;

}

public void IslemeAl(object stok) {

Islem islem = RotaParcaBilgisi.Islem; Islem(islem, (Stok)stok);

}

private void Islem(Islem islem, Stok girdiStok) {

IslemdeMi = true;

List<Stok> eldeOlan = new List<Stok>();

for (int i = 0; i < RotaParcaBilgisi.MontajGirdiAdet; i++) {

if (AraStok.Count == 0) {

signalAraStok.WaitOne(); }

Stok montajStok = AraStok.Dequeue(); ZekiNesne.AraStokSensor.Azalt(); eldeOlan.Add(montajStok);

}

TimeSpan bekleSure = new TimeSpan(0, 0, (int)(islem.Sure.TotalSeconds * SureKatsayisi));

Thread.Sleep(bekleSure); // islem.Sure kadar bekle

Stok cikti = new Stok(RotaParcaBilgisi.Cikti.ID, RotaParcaBilgisi.Cikti.Adi, RotaParcaBilgisi.Cikti.Sira);

CikisYap(cikti); IslemdeMi = false; signalIslem.Set(); }

private void CikisYap(Stok cikisStok) {

//İşlem sonucunda çıkan stoğun bant kuyruğuna eklenmesi lazım //Bant kuyruğu dolu mu?

bool eldeVarMi = true; while (eldeVarMi) {

if (Bant.CikisKuyrukList[this.ID].Count >= Bant.KuyrukKapasitesi) {

//İşlem durdu mesajı gönder

ZekiNesne.Durdu("Bant kuyruğu dolu"); Bant.SignalList[this.ID].WaitOne(); }

else { eldeVarMi = false; } } Bant.CikisKuyrukList[this.ID].Enqueue(cikisStok); ZekiNesne.CikisSensoru.Oku(cikisStok.Adi); //Bandı Tetikle Bant.SignalList[this.ID].Set(); }

public void AraStokBesle(object paket) {

List<Stok> stokPaket = (List<Stok>)paket; stokPaket.ForEach(x => { AraStok.Enqueue(x); }); ZekiNesne.AraStokSensor.StokYukle(stokPaket.Count); signalAraStok.Set(); }

public void Start() { while (true) { if (IslemdeMi == false) { if (TamponGiris.IsEmpty) {

ZekiNesne.Durdu("Tampon boş!"); signal.WaitOne(); }

else {

Stok item = null; while (TamponGiris.TryDequeue(out item)) { this.signal.Set(); ZekiNesne.KuyrukCiktiSensor.Oku(item.Adi); IslemeAl(item); this.signal.Set(); } } } } } }

ÖZGEÇMİŞ

Baran KAYNAK, 1988 yılında Balıkesir’de doğdu. İlköğrenimini Amasya’da, orta öğrenimini de Aydın’da tamamladı. 2006 yılında Aydın Adnan Menderes Anadolu Lisesi’nden mezun oldu. 2011 yılında Sakarya Üniversitesi Endüstri Mühendisliği Bölümünü’nden mezun oldu. ERASMUS öğrenci hareketliliği kapsamında lisans eğitiminin 3. sınıfını İsveç’in Umeå Üniversitesi’nde tamamladı. 2008 ve 2011 yılları arasında Sakarya Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezine öğrenci asistan olarak çalışmıştır. 2011 yılında Sakarya Üniversitesi Fen Bilimleri Enstitüsü Endüstri Mühendisliği’nde yüksek lisans eğitimine başlamıştır. 2012 yılının Ocak ayından itibaren Sakarya Üniversitesi Bilgisayar ve Bilişim Bilimleri Fakültesi’nde yazılımcı olarak çalışmaktadır.

Benzer Belgeler