development of dynamic engine and graphical user interface software for railway systems - railpower
Post on 20-Jun-2015
57 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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
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.
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
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
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
İÇİ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
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.
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.
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.
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.
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]
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.
Ş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]
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');
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ı
Sekil 5. Sistem Çıktıları
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.
● 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
● 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.
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ı.
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
top related