30
TREN SİMÜLATÖRÜ İÇİN DİNAMİK MOTOR VE KULLANICI ARAYÜZ YAZILIMI GELİŞTİRME MAHMUT BULUT LİSANS TEZİ Bilgisayar Mühendisliği Bölümü 2014-06

Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

Embed Size (px)

DESCRIPTION

TREN SİMÜLATÖRÜ İÇİN DİNAMİK MOTOR VE KULLANICI ARAYÜZ YAZILIMI GELİŞTİRME * MAHMUT BULUT * LİSANS TEZİ * OGÜ Bilgisayar Mühendisliği Bölümü SUMMARY In future for all the world, air pollution from emission from motor vehicles and economic problems in conjunction with this reason oblige to use rail transportation systems in public transportation increasingly. According to research, major part of Turkey is going to be weaved with rail system networks in the next 20 years.In this case, it is necessary to increase number of educated machinist. Using train simulators is the best economic and fast solution to educate machinist.This driving simulation products help beginner machinist, preparing them for real drive and teaching them how to use train in every conditions. Context of this report contains real-time simulation of railway systems and train dynamic engine software interface for test driving of machinists who are employee of TCDD. All the main theme relies on this subject.

Citation preview

Page 1: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

TREN SİMÜLATÖRÜ İÇİN DİNAMİK MOTOR VE

KULLANICI ARAYÜZ YAZILIMI GELİŞTİRME

MAHMUT BULUT

LİSANS TEZİ

Bilgisayar Mühendisliği Bölümü

2014-06

Page 2: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

Tren Simülatörü İçin Dinamik Motor ve Kullanıcı Arayüz Yazılımı Geliştirme

Mahmut Bulut

Eskişehir Osmangazi Üniversitesi

Mühendislik Mimarlık Fakültesi

Lisans Yönetmeliği Uyarınca

Bilgisayar Mühendisliği Bölümü

LİSANS TEZİ

Olarak Hazırlanmıştır

Danışman: Yrd. Doç. Dr. Metin Özkan

2014-06

Page 3: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

ONAY

Eskişehir Osmangazi Üniversitesi Mühendislik Mimarlık Fakültesi Bilgisayar

Mühendisliği Lisans öğrencisi Mahmut Bulut’un LİSANS tezi olarak hazırladığı “Tren

Simülatörü İçin Dinamik Motor ve Kullanıcı Arayüz Yazılımı Geliştirme” başlıklı bu

çalışma, jürimizce lisans yönetmeliğin ilgili maddeleri uyarınca değerlendirilerek kabul

edilmiştir.

Danışman : Yrd. Doç. Dr. Metin Özkan

İkinci Danışman : -

Lisans Tez Savunma Jürisi:

Üye : Yrd. Doç. Dr. Metin Özkan

Üye :

Üye :

Bilgisayar Mühendisliği Yönetim

Kurulu’nun ............................. tarih

ve ........................ sayılı kararıyla

onaylanmıştır.

Page 4: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

Yrd.Doç.Dr. Nihat ADAR

Bölüm Başkanı

ÖZET

Dünyada ve Türkiye’de, motorlu taşıtlardan yayılan emisyonlardan kaynaklanan hava

kirliliği ve bunlarla bağlantılı olan ekonomik sorunlar önümüzdeki senelerde raylı

ulaşım sistemlerinin giderek artan bir yoğunlukla toplu taşımacılıkta kullanılmasını

zorunlu kılmaktadır. Yapılan araştırmalara göre önümüzdeki 20 senelik zarf içinde

Türkiye’nin önemli bir kısmı yaygın raylı sistem ağları ile donatılmış olacaktır. Bununla

birlikte, yetiştirilmesi gereken makinist sayısı da artacaktır. Makinistlerin

yetiştirilmesinde en hızlı ve ekonomik çözüm, tren simülatörlerinin kullanılmasıdır. Bu

test sürüşü amaçlı simülasyon makinist adaylarının bütün koşullarda treni nasıl

kullanacağına yardımcı olacak ve onları gerçek sürüşe hazırlayacaktır. Bu projede

TCDD eğitim amaçlı sürüş denemesi yapılabilmesi için gerçek zamanlı simülasyon ve

dinamik model yazılımı geliştirilecektir.

Anahtar Kelimeler: Simülasyon, Yazılım Arayüzü, Tren Dinamiği

Page 5: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

SUMMARY

In future for all the world, air pollution from emission from motor vehicles and

economic problems in conjunction with this reason oblige to use rail transportation

systems in public transportation increasingly. According to research, major part of

Turkey is going to be weaved with rail system networks in the next 20 years.In this

case, it is necessary to increase number of educated machinist. Using train simulators is

the best economic and fast solution to educate machinist.This driving simulation

products help beginner machinist, preparing them for real drive and teaching them how

to use train in every conditions. Context of this report contains real-time simulation of

railway systems and train dynamic engine software interface for test driving of

machinists who are employee of TCDD. All the main theme relies on this subject.

Keywords: Simulation, Software Interface, Train Dynamics

Page 6: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

TEŞEKKÜR

Bu tez çalışmasının planlanmasında, araştırılmasında, yürütülmesinde ve oluşumunda

ilgi ve desteğini esirgemeyen, engin bilgi ve tecrübelerinden yararlandığım,

yönlendirme ve bilgilendirmeleriyle çalışmamı bilimsel temeller ışığında şekillendiren

sayın hocam Yrd. Doç. Dr. Metin ÖZKAN’a sonsuz teşekkürlerimi sunarım.

Sevgili aileme manevi hiçbir yardımı esirgemeden yanımda oldukları için tüm kalbimle

teşekkür ederim.

~ Mahmut Bulut

Page 7: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower
Page 8: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

İÇİNDEKİLER

1. GİRİŞ VE ÖNCEKİ AÇIKLAMALAR1.1. GİRİŞ1.2. ÖNCEKİ ÇALIŞMALAR

2. BÖLÜM 22.1. İÇERİK

2.1.1. GEREÇLER2.2. NUMERİK İNTEGRATÖR

2.2.1. STEPPER2.3. ARAÇLAR2.4. BAĞLANTILAR

2.4.1. KUVVETLER2.5. SİMÜLASYON BİRİMİ2.6. TEST PAKETLERİ

3. BÖLÜM 33.1. API FONKSİYONLARI

SONUÇLAR

Page 9: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

1. GİRİŞ VE ÖNCEKİ AÇIKLAMALAR

1.1. GİRİŞ

Projenin geliştirilmesindeki amaç Türkiye Cumhuriyeti Devlet Demiryolları kurumunun

geliştirmekte olduğu proje kapsamında tren dinamik modelini elde etmek üzere

diferansiyel denklemler türetilmesi; bu denklemlerin verilen girdiler için çözülmesini ve

kuvvetler, pozisyon, hız ve ivme gibi  tren durumlarının elde edilmesini sağlayacak tren

dinamik motor yazılımın geliştirilmesidir. Ayrıca, simülasyon sırasında, tren

durumlarının ve trenin hareketinin 2-B olarak olarak motordan gelen verilere göre

gerçek zamanlı gösterecek bir arayüz programı geliştirildi. Yapılan model sayesinde

istenilen optimizasyon çalışmaları yapılabilmesi, olası problemler daha sistem inşaa

edilmeden görülerek çözülmesi ve sonuç olarak maliyette önemli azalmalar sağlanması

amaçlanmaktadır. Tezin konusu, tren simülatörü için dinamik motor ve arayüz

yazılımlarının geliştirilmesidir ayrıca bu arabirimi kullanacak proje ve yazılımların

doğruluğunu ve arabirimin güvenilirliğinin denetimi açısından simülasyonun

oluşturulmasıdır. Kapsamın içeriği olarak ise motorun belirli tepki süresinin altında

yanıt vermesi ve iterasyonların sayısını bu tepki süresinin altında gerçekleştirilmesi,

çıktıların doğruluğu (bu raporun yazımı sırasında kullanılan diferansiyel denklem

çözme metodu olan Dormand-Price’ta hali hazırda yapılmaktadır), hata öngörmesi ve

çıktıların yoğun olarak ortaya çıkması olarak söz edilebilir (burada yoğunluktan

bahsederken ondalık kısımın yoğunluğu göz önüne alınmıştır). Simülasyonda kapsam

ise yazılımsal motor arabiriminin gerçek konuma ait uzamda gösterimi üzerinedir. Bu

gösterim belirtilen niteliklere ve doğruluğa sahip olmalı ve kendi içinde de tutarlı

olmalıdır. Bu kapsama dahil olmayan simülasyon geçerli olmamaktadır, ayrıca motor

arabiriminin de simülasyona gerçekçi çıktılar vermesi de bu tezin kapsamı içinde yer

almaktadır.

Page 10: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

1.2. ÖNCEKİ ÇALIŞMALAR

Yapılan literatür araştırmalarında 1982 yılında IEEE üyesi Peter Gruber ve Mohamed

M.Bayoumi tarafından çok lokomotifli güç trenleri üzerinde kontrol strateji üzerine

yaptıkları araştırmalardan faydalanılmıştır. Çok uzun trenler üzerinde etkiyen frenleme

kuvveti dahil hesaplanarak kontrolleri sunmaktadır. Kontrol mekanizmasının amacı

vagonlar arası bağlantı kuvveti ve hızlanma hareketlerini büyük değişimler ve

bozulmalar karşısında minimize etmektir. Hızlı tren için hız kontrol sistemi dizaynı ile

ilgili araştırmada vagonlar üzerine etki eden kuvvetlerin diferansiyel ve lineer

denklemlerinin çözülmesi ayrıntılı olarak incelenmiştir. Bir diğere araştırmada

University of Pretoria tarafından, elektronik kontrollü pnömatik fren sistemleri içeren

ağır yüklü trenler üzerine modellerden bahsedilmiştir. Model için gerekli verilere 200

vagonlu bir trenden el yazısı ve elektronik olarak deneysel ortamlarda alınmıştır. Bu

çalışma tren modeli arayüz ve simülasyon işlemi gerçek bir trenin karşılaşabileceği

durumlar göz önünde bulundurularak modellenmiştir. Tren üzerinde frenleme kuvveti

dahil etkiyen kuvvetler belirlenip diferansiyel denklemler türetilerek bu denklemler

çözülecektir. Treni kontrol eden sistem gerçekte olması gerektiği gibi tasarlanmaktadır.

Dünyada birçok ülkenin ulaşım birimlerinde benzer simülasyon örnekleri mevcut ve

halihazırda kullanılmaktadır. Proje tren dinamik modelini belirli iterasyon süresi altında

hesaplayabilen ilk Türkçe çalışma önemine sahiptir.

Page 11: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

2. BÖLÜM 2

2.1. İÇERİK

Bu bölümde sistemin bilimsel içeriği oluşturulacaktır. Sistemin çalışma prensiplerine değinilecek ve çıktıları gözlenecektir. Sistem birçok alt üniteden oluşur. Bu alt üniteler bu bölümde verilecektir, alt üniteler sistemin içinde oluşturulma sırasına göre aşağıdaki gibi sıralanabilir:

● Numerik İntegratör● Araçlar● Bağlantılar● Ana simülasyon

ve bunların dışında sisteme yapılan çağrıların bu katmanlara aktarıldığı

● Runtime Birimi

yer almaktadır.

2.1.1. GEREÇLER

Proje genel olarak C++'ta kodlanmıştır. Çağrılar C çağrısı olup __cdecl konvansiyonunu

kullanır. C++11 standardını kullanır. Boost kütüphanesinin içine sonradan dahil edilen

ODEINT integratörü sistemin numerik integratörü olarak görev yapmaktadır.  Projenin

geliştirilme aşamasında denklemlerin çözülmesi kısmında C++ dili ,Visual studio 2010

platformu kullanılacaktır. Sistem için yapılacak GUI(Graphical User Interface) içinse

C# , OpenGL ;Visual studio 2010 kullanılması planlanmaktadır. Yazılım arayüzünün

dışarıdan kullanılmasına olanak sağlayan arabirim(DLL export definition), DLL

sistemlerindeki çağrı konvansiyonları(__cdecl, __stdcall), Windows sistemlerde entegre

geliştirme ortamı olarak QtCreator, Mac sistemlerde entegre geliştirme ortamı olarak

Xcode, derleme birimi olarak GCC koleksiyonu, standart CPP kütüphanesi, GPU yükü

alabilen sistemlerde diferansiyel çözümünü hızlandırmak amaçlı kullanılacak Thrust

kütüphanesi, Diferansiyel denklemlerinin Runge-Kutta Dormand-Prince metodu ile

çözümlerinin sağlanabilmesi için Boost kütüphanesi altyapı olarak kullanılacaktır.

Page 12: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

2.2. NUMERİK İNTEGRATÖR

Boost kütüphanesine dahil edilen ordinary differential equation solver olarak tabir edilen odeint sistemin numerik integratörüdür. Numerik integratör sistemde gelecek versiyonlarda özellikler eklenecek şekilde kodlanmıştır. Şu anda kullanılan integratör adaptif integratördür.

integrate_adaptive( stepper_controlled , *this , x , 0.0 , step_time , getDT() , observer );

Genel adaptif integratör dökümantasyonu için: Boost / Integrate functions kısmına bakılabilir. Adaptif geliştirme bu konunun kapsamına girmektedir.[1]

2.2.1. STEPPER

Başlı başına integratörler hiçbir anlam ifade etmemekte olup integrasyonların alındığı

aralıkları düzenleyen bu aralıklarda her hesaplamanın sonucunu bize geri döndüren bir

yapıya ihtiyaç vardır, bu yapılar stepper olarak adlandırılırlar. Bu sistemde controlled

stepper kullanılmıştır. Bu stepper birim zamanda hata aralığının içinde kalan her değer

için integrasyon aralığını düşürür ve daha doğru sonuçlar vermeye çalışır. Buna rağmen

adım sayısı verilen aralıkta değişmez, hata artarsa ve adımlar iterasyona yetmeyecek

duruma gelmeye başlarsa adım genişliğini arttırır.

auto stepper_controlled = make_controlled( 1E-12 , 1E-12 , runge_kutta_dopri5<

state_type >() );

Railpower projesinin sürümlerinde ilerleme kaydedildikçe diğer stepperların kullanımı

da dahil edilecektir. Stepper Dormand-Prince metodunu kullanmaktadır 5. dereceden

çözüm üretmektedir. Şu anda yukarıda verilen kod örneğinde görüldüğü üzere kontrollü

stepper kullanılmıştır. Stepper'ın ilk argümanı absolute error(mutlak hata), ikinci

argümanı relative error(bağıl hata) olarak belirlenmiştir ve değerleri 1E-12dir.

Page 13: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

2.3. ARAÇLAR

Railpower şimdilik aşağıdaki tipleri desteklemektedir.

● Locomotive

● Car

● Freight Car

● Passenger Car

Her bir aracın kendine özgü özellikleri(yük, yolcu ve diğer spesifik özellikler) ve bu

özelliklerinin sisteme etkisi ilerleyen versiyonlarında olacaktır. Şu anda her sistemin

kendine ait basit seviyede:

● kütle

● ivme

● hız

● pozisyon

değerleri bulunmaktadır. Bir sonraki bölümde belirtilecek olan bağlantılar ile araç

modellemeleri geçmiş araştırma konvansiyonları üzerine yapılmıştır. Dinamik sistemin

modellenmesi ve çalışma biçimi zor bir konu olduğundan bu konu hakkındaki tüm

implementasyon önceki araştırmalardan alınmıştır. [2]

Page 14: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

2.4. BAĞLANTILAR

Bağlantılar diğer adıyla coupling yapıları iki aracı birbirine bağlanmaya ve/veya araçlar

arasında güç aktarmaya yarayan sistemlerdir. Bir coupling'in genel yapısı Şekil.1’deki

gibidir.

Şekil 1. Bir coupling’in genel yapısı

Bağlantı sabitleri aşağıdaki gibi belirtilebilir:

● Damping sabiti (bağlantı yayının/yaylarının damping sabiti)

● Spring sabiti (bağnatı yayının sabiti)

2.4.1. KUVVETLER

Bağlantının aktardığı kuvveti bulmak için çeşitli denklemler bulunmaktadır. Bu projede

aşağıda belirtilen bağlantı kuvveti hesaplama denklemi kullanılmıştır.[3]

Şekil 2. Kuvvet hesaplama denklemi

m ve a sırasıyla kütle ve ivmeyi, c damping sabiti, k spring sabitidir. Denklemin sağ el

tarafı net kuvvet olarak coupling kuvvetini bize vermektedir.

Page 15: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

Şekil 3. Örnek tren modeli ve kuvvet etkileşimleri

Bağlantı kuvvetinin integrasyon sürecinde simülasyonun bir sonraki adımı kuvvetin

hesaplama adımından her zaman bir dt hesabı kadar önde olması gerekmektedir.[4]

Page 16: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

2.5. SİMÜLASYON BİRİMİSimülasyon birimi test.txt dosyasına her iterasyon sonrası:

● İterasyon aralığının yazılıma ait iç iterasyon zamanını

● aracın ivmesini

● aracın hızını

● aracın pozisyonunu

yazdırmaktadır. İlerleyen versiyonlarda dosyanın adının da kullanıcıya bağlı olması

sağlanacaktır. Bu iterasyon sonrası veriler matlab'da görselleştirilebilir ve doğruluğu

kontrol edilebilir. Matlabda sadece lokomotifin olduğu bir test görsellemesi aşağıdaki

şekilde oluşturulabilir:

A = importdata('test.txt');

disp('DATA IMPORTED');

figure('name', 'ACCELERATION');

slice_acce = [A(:,1), A(:,2)];

plot(slice_acce(:,1), slice_acce(:,2), 'r');

grid on;

disp('ACCELERATION PLOT');

figure('name', 'VELOCITY');

slice_velo = [A(:,1), A(:,3)];

plot(slice_velo(:,1), slice_velo(:,2), 'm');

grid on;

disp('VELOCITY PLOT');

figure('name', 'POSITION');

slice_pos = [A(:,1), A(:,4)];

plot(slice_pos(:,1), slice_pos(:,2), 'b');

grid on;

disp('POSITION PLOT');

Page 17: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

2.6. TEST PAKETLERİBölüm 2.5te belirtildiği üzere script yeniden kullanılarak (her durum için farklı veya

araç sayısı arttıkça durumları yönetip görselleştirmeyi yapan bir script) 3 test paketi

başarıyla ve hata oranı belirlenen şekilde geçmiştir. Şekil.4 ve Şekil.5’te bir lokomotif

iki vagon için oluşturulan beklenen çıktılar ve örnek sistem çıktıları görülmektedir.[5]

Şekil 4. Beklenen Test Sonuçları

Page 18: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

Sekil 5. Sistem Çıktıları

Page 19: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

3. BÖLÜM 3

3.1. API FONKSİYONLARISisteme ait fonksiyonların tümü aşağıda argümanları ve kullanım amaçları ile açıklanacaktır.

int initCore();Simülasyon süresince gerekli olacak olan nesnelerin hafızada yerini ayırır.

int mapPointers();Tüm fiziksel nesne ekleme/çıkarma işlemlerinden sonra hafızadaki nesnelerin pointerlarını kullanılır hale getirir.

int addVehicleToSim(int ttype, double mass, double pos, double velo, double acce);int ttype : Araç tipini belirtir.double mass : Araç kütlesini belirtir. (kg)double pos : Aracın ilk iterasyona başlamadan önceki uzlamsal konumunu belirtir. (m)double velo : Aracın ilk iterasyona başlamadan önceki hızını belirtir. (m/s)double acce : Aracın ilk iterasyona başlamadan önceki ivmesini belirtir. (m/s2)

Sisteme araç ekler.

NOT: Bu fonksiyon çağrısından sonra tüm pointerlar `mapPointers` yardımıyla map edilmelidir.

int addCouplingToSim(double frontDistRefToCoupling, double rearDistRefToCoupling, double tensionDistance, bool nullify);double frontDistRefToCoupling : öndeki aracın orta noktasının couplinge olan uzaklığıdouble rearDistRefToCoupling : arkadaki aracın orta noktasının couplinge olan uzaklığıdouble tensionDistance : iki araç arasında kuvvet aktarımı olmayan en kısa uzaklıkbool nullify (opsiyonel) : NULL PTR tipinde bir coupling ekler. Test durumlarının gözetimi içindir önerilmez.

Sisteme bağlantı ekler.

NOT: Bu fonksiyon çağrısından sonra tüm pointerlar mapPointers yardımıyla map edilmelidir.

int addForce(int vehIndex, double startTime, double stopTime, double forceValue);● int vehIndex : kuvvetin uygulanacağı aracın eklenme sırasına göre(FILO)

indeks numarasını belirtir.

Page 20: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

● double startTime : kuvvetin integrasyon süresi boyunca hangi saniyeden itibaren uygulanacağını belirtir. (s)

● double stopTime : kuvvetin uygulanmasının integrasyon süresi boyunca hangi saniyede sonlanacağını belirtir.(s)

● double forceValue : kuvvetin değerini belirtir (N)

Sisteme kuvvet ekler.

NOT: Bu fonksiyon çağrısından sonra tüm pointerlar mapPointers yardımıyla map edilmelidir.

int setMainCouplerSpringConstant(int coupIndex, double sprConst);● int coupIndex : spring sabitinin ekleneceği aracın indexini belirtir.● double sprConst : spring sabitini belirtir.

Spring sabitini set eder.

Spring sabiti default olarak 1e8dir.

int setCouplerDampingConstant(int coupIndex, double dmpConst);● int coupIndex : damping sabitinin ekleneceği aracın indexini belirtir.● double dmpConst : damping sabitini belirtir.

Damping sabitini set eder.

Damping sabiti default olarak 1e6dır.

int setFrontCouplingToVehicle(int vehindex, int coupindex);● int vehindex : öndeki bağlantının set edileceği aracın indexi● int coupindex : bağlantının indeksi

İndeksi belirtilen araç nesnesinin önündeki bağlantının atamasını yapar.

int setRearCouplingToVehicle(int vehindex, int coupindex);● int vehindex : arkadaki bağlantının set edileceği aracın indexi● int coupindex : bağlantının indeksi

İndeksi belirtilen araç nesnesinin arkasındaki bağlantının atamasını yapar.

int setFrontVehicleToCoupling(int coupindex, int vehindex);● int coupindex : önündeki aracın set edileceği coupling'in indeksi● int vehindex : set edilecek aracın indeksi

İndeksi belirtilen coupling nesnesinin önündeki aracın atamasını yapar.

int setRearVehicleToCoupling(int coupindex, int vehindex);● int coupindex : arkasındaki aracın set edileceği coupling'in indeksi

Page 21: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

● int vehindex : set edilecek aracın indeksi

İndeksi belirtilen coupling nesnesinin arkasındaki aracın atamasını yapar.

int linkVehiclesToCoupling(int coupIndex, int frontVehicleIndex, int rearVehicleIndex);Yukarıda belirtilen setFrontVehicleToCoupling ve setRearVehicleToCoupling fonksiyonlarını birlikte işler. Çift yönlü ilişkilendirme yapar.

int linkCouplingsToVehicle(int vehIndex, int frontCouplingIndex, int rearCouplingIndex);Yukarıda belirtilen setFrontCouplingToVehicle ve setRearCouplingToVehicle fonksiyonlarını birlikte işler. Çift yönlü ilişkilendirme yapar.

int setDt(double dt);● double dt : integrasyon adım aralığının değeri

İntegrasyon adım aralığını set eder.

int prepareSim();İntegratörün gereksinimi olan pointer koleksiyonlarını integratöre verir ve sistemi başlamaya hazır hale getirir.

int clearVehicles();Tüm araçları sistemden siler.

int clearCouplings();Tüm bağlantıları sistemden siler.

int clearForces();Tüm kuvvetleri sistemden siler.

int clearSimulator();Simülatörü sistemden siler. (Debug amaçlıdır yapılması tasvip edilmez.)

int runIntegration(double runningTime);● double runningTime : integrasyonun koşulacağı süre

İntegrasyonu belirtilen süre boyunca koşar.

Default olarak test.txt dosyasına çıktıları oluşturmaktadır.

Page 22: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

SONUÇLAR

Tren dinamik motoru ve kullanıcı arayüzü sayesinde sistemin önceden karşılaşabileceği

sorunlar belirlenebileceği için TCDD kurumuna ekonomik olarak katkıda bulunması

beklenmektedir. Tren simülatörünü kullanan kişiler gerçekte karşılaşabileceği

problemlerle sanal ortamda karşılaşıp, bu sorunları nasıl aşacağı konusunda güven

içinde çözümlerde bulunacaklardır. Sistem, Türkiye Cumhuriyeti Devlet Demiryolları

için daha etkin ve dinamik bir altyapı oluşturacak bünyesinde çalışanlara daha iyi bir

eğitim vermesini sağlayacaktır. Türkiye Cumhuriyetinin ekonomisi ve refahı açısından,

gelişmiş ve etkin çalışan bir TCDD kurumu görmek herkesin ortak istekleri arasındadır.

Proje bunu katma değer olarak sağlamakta ayrıca bilimsel alanda sınırlı zamanda

iterasyon yapan tren dinamiği sistemlerine örnek teşkil eden bir araştırma[6] özelliği

taşımaktadır. Bu projede kazanılan başarımlar aşağıdaki gibi sıralanabilir:

● Tren dinamik motorunun tren hareketlerini doğru bir şekilde hesaplayabilmesi,● DLL içindeki fonkiyonları doğru bir şekilde çalışması ● Arayüzde tren durumlarının ve 2-B tren hareketlerinin doğru bir şekilde

gösterilmesi ● Yapılan simülasyonun gerçek tren ile benzeşmesi,● Sistemin istenildiği gibi gerçek zamanlı olabilmesi için 50 milisaniye altında

çalışması.

Page 23: Development of Dynamic Engine and Graphical User Interface Software for Railway Systems - Railpower

KAYNAKLAR1. Gauss-Lobatto integration with adaptive refinement, Bojan Nikolic: Numerical and

Quantitative Methods in C++

2. Suboptimal Control Strategies for Multilocomotive Powered Trains, Peter Gruber,

Mohamed M. Bayoumi IEEE Transactions on Automatic Control, Vol. AC-27, No. 3,

JUNE 1982

3. Longitudinal Train Dynamics, Colin Cole, p. 242

4. Mixed H2/H∞ cruise controlled design for high speed train, Ciann-Dong Yang & Yun-

Ping Sun, International Journal of Control

5. Modelling and model validation of heavy-haul trains equipped with electronically

controlled pneumatic brake systems, M. Chou, X. Xia, C. Kayser, ScienceDirect

Control Engineering Practice 15 (2007) p. 501-509

6. Method of Analysis for Determining the Coupler forces and Longitudinal Motion of a

Long Freight Train in Over-the-road Operation, G.C.Martin - W.W.Hay, University of

Illinois