Dasturiy ta'minot uchun avtomobil tizimini yanada "modulli" qilishmi?

Men modulli bo'lishimiz kerak bo'lgan avtomobil loyihasida ishlayapman. Men dasturiy ta'minot sohasidagi mutaxassisman va men avtomobil apparatlarini juda kam bilaman. Loyihani "modulli yoki portativ qilish" va "dasturiy ta'minot emas, balki qo'shimcha qurilmani nazarda tutish" dan boshqa hech qanday talab yoki tafsilotim yo'q. Ular modulli qilish bilan, ular butun tizimni qayta ishlashga hojat qoldirmasdan har qanday avtomobilni tanlash va an'anaviy akkumulyatori yoki nasosini boshqa turga almashtirishni xohlashlarini anglatadi.

Men hozirgacha faqat tizimni ikkita qatlamga ajratish, birinchi qavatni esa barcha avtomobillarda qayta ishlatilishi mumkin bo'lgan umumiy kodga ega bo'lish va ikkinchi qavatning har bir komponentga xos kodi bor. Albatta, manba kodim yo'q. Men ularning barcha tizimlarini amalga oshirish uchun foydalanishlari mumkin bo'lgan umumiy dasturiy ta'minot arxitekturasini ishlab chiqarishni talab qilaman deb o'ylayman. Hozirda menda boshqa hech qanday fikr yo'q.

Axborotning biron bir yordami, yo'nalishi yoki manbai baholanadi.

EDIT: I am working with a few electrical engineers and they have some idea about cars. So I am not alone. But still we are lost as they want a modular system and want us to think more in terms of software to save their costs.

1
"Ular har qanday avtomobilni tanlashga va an'anaviy batareyasini yoki nasosini butun tizimni qayta ishlashga hojat qoldirmasdan boshqa turga almashtirishni xohlashadi". -> Bu standartlashtirilgan interfeyslarni bildiradi.
qo'shib qo'ydi muallif matte, manba
O'ylaymanki, bu sohada hech qanday bilimga ega bo'lmasdan, siz biror narsani loyihalashingiz mumkin. Uyda yashovchilarga gapiring. O'z tajribasidan foydalaning. Siz bu erda yolg'iz emassiz;) BTW, men dasturchilar tomonidan yozilgan buxgalteriya dasturlarini, masalan, mavzu haqida mutlaqo hech qanday ma'lumotga ega bo'lmaganidan foydalanishni istamayman.
qo'shib qo'ydi muallif Zach Saucier, manba
qo'shib qo'ydi muallif gnat, manba
Ehtimol, hech bo'lmasa AUTOSAR va GENEVI
qo'shib qo'ydi muallif Basile Starynkevitch, manba

5 javoblar

Men ushbu sohadagi mavjud standartlarga, masalan, ARINC 653 va (ayniqsa) AUTOSAR .

Ularning ikkalasi ham real vaqtda komponentlarga asoslangan tizim bo'lib, ular tarkibiy qismlar orqali xabar berish orqali aloqa qiladilar. Bu yanada murakkab, ammo oxir-oqibatda ancha moslashuvchan, ma'lum bir dasturlash tilining modullik xususiyatlaridan foydalanishning oddiy usuli.

3
qo'shib qo'ydi

Menimcha, ular imkonsiz narsani qilishingizni so'rashgan. Sanoat avtomatizatsiyasi bilan biz do'konimizda o'xshash narsa qilamiz. Tez-tez mexanik bosimlarni xarid qilamiz va ularni o'z nazorat tizimimiz bilan mustahkamlaymiz. Biz foydalanuvchi interfeysi barcha matbuotlarda bir-biriga o'xshash bo'lishga harakat qilmoqdamiz, lekin ular ichida ba'zida o'xshash va ba'zan juda boshqacha. Bir matbuotda Shlangi ortiqcha yuklar mavjud, birida chidamli o'lchash uslubidagi tonaj monitori mavjud, ikkinchisi esa piezoelektr stantsiyali tonnaj tomografiyasiga ega.

Har bir matbuot press moylash nasosi kabi tizimlar orasida ham, ular ishlayotgan usuli umuman boshqacha.

Qanday qilib bu farqlarni jinnilik qilmasdan muhokama qilamiz? Biz qilmaymiz. Har bir matbuot uchun dasturiy ta'minot taxminan 90% ixtiyoriy. Voqealar ro'yxatga olish tizimi kabi matbuotlarda ishlatadigan funktsiyalarning "umumiy kutubxonasi" mavjud, biroq har bir matbuotga aslida kiritilgan voqealar deyarli to'liq noyobdir. Umumiy kutubxonada barcha bosimlarda ishlatadigan analog kirish kartasi bilan o'zaro bog'lanish uchun standart mantiq mavjud.

Har bir matbuotda asosiy dvigatel bor, lekin elektr bularning hammasi juda nozik ishlaydi, shuning uchun har birimiz uchun maxsus mantiq bor.

Sizning namunangizda siz dasturiy ta'minotni o'zgartirmasdan nasosni boshqa modelga almashtirishingiz mumkinmi? Bunga shubham bor. Aslida, muhim narsa shundaki, siz buni amalga oshirishda nimani o'zgartirish kerakligini oldindan o'ylaysiz va bu o'zgarishlarning qayerda o'tkazilishini o'ylaysiz. Ushbu o'zgarishlarni bitta sinf yoki modul bilan cheklash uchun bajarishga harakat qiling. Tizimning qolgan qismi bu nasos haqida qayg'urmaydimi? Boshqa bir tizim, nasosning ishini bajarishdan oldin ishlayotganligini bilishi kerakmi? So'ng interfeysi Pump.Running xususiyatiga muhtoj. Nasosni o'zgartirganda, bu bitni o'zgartirishingiz kerak, lekin hech bo'lmaganda o'zgarish lokalizatsiya qilinishi kerak. Sizga avtomashinalardagi xato hisobot berish tizimiga muammolarni yozishingiz kerakligini bilasiz, shuning uchun xatolik yuz beradigan hisobot interfeysi kerak bo'lishi mumkin va siz Pump moduli bilan mos yozuvlar Konstruktor yoki ishga tushirish kodidagi ushbu interfeysga.

2
qo'shib qo'ydi

Menimcha, hech bo'lmaganda ular har bir komponentning minimal funktsiyalari nimani anglatishini aytib berishi kerak. Misol uchun, (masalan, mashina mexanikasi haqida hech qanday maslahatim yo'q, shuning uchun misolni keltiring), nasos quyidagi funktsiyalarni bajarishi kerak bo'lishi mumkin: CurrentPressure , MaximumOperatingPressure kod> MinimumOperatingPressure -ni tanlang.

Barcha tarkibiy qismlar sizga o'xshash API-lar to'plamini olishi mumkin, deb hisoblasangiz, siz nemosni taqdim etadigan eng kichik funktsiyalarni belgilaydigan IPump kabi bir qator interfeyslarni aniqlashingiz mumkin.

Bu esa, o'z navbatida, sizda haydovchilarni yozishingiz mumkin bo'lgan ba'zi shartnomalar tuzish imkonini beradi, shuning uchun model va modeldan qat'iy nazar siz har doim bir xil funktsiyalar to'plamiga ega bo'lasiz, bu erda har bir modelda Qanday qilib bu qiymatlarni taqdim qilish.

Sizning markazlashtirilgan kodingiz keyinchalik bu interfeyslar uchun ishlaydi. Demak, sizning kodingiz Brand A Pump yoki B markasi bilan ishlayotgan bo'lsangiz bilmasangiz yoki parvarishlash Nasosi .

Bu taklif, albatta, biror joyda standartlar mavjudligini taxmin qilmoqda.

2
qo'shib qo'ydi
Kelishdi. Faqat mavzu bo'yicha mutaxassislar komponentlarning taksonomikasini yaratishi mumkin. Aks holda, bu kabi muammolarni mavzuni boshlashi bilan yakunlaysiz: 1) ikkita narsa boshqacha ko'rinishga ega, lekin aslida shunga o'xshash bo'shliqni to'ldiradi, lekin siz ularga alohida interfeyslarni berasiz yoki 2) ikkita narsa bir xil ko'rinadi, ammo ba'zi bir nozikliklar mavjud Sizning interfeysi sizda bo'lmasligi sharti bilan porlaydi. Aytish mumkinki, men ularni bilan bilan ishlay olasiz deb o'ylayman.
qo'shib qo'ydi muallif J Trana, manba

Har qanday narsalarni (har qanday narsalarni modularizatsiya qilish) har bir komponent uchun o'zining tashqi tomonlari bo'lishi kerak. Agar siz to'g'ridan-to'g'ri bog'liq bo'lgan API-lar o'rniga xabar almashinuvidan foydalansangiz, sizda ham ko'proq moslashuvchanlik mavjud.

misol sifatida: tasavvur qiling-a, bizda 2 turdagi router komponenti - g'ildirak va 2 ta joystick mavjud; va ikki turdagi harakat tarkibiy qismlari: g'ildiraklar va treklar.

Masalan, chap tomonga 10 daraja yo'naltirilgan Rulda-osiyolik vositani chap tomonga yo'naltiradi, shuning uchun niyatni tavsiflovchi xabarni tuzadi va uni aylanadigan harakat komponentiga yuboradi. bu g'ildiraklar uchun 10 daraja burilishga yoki chap trek uchun sekinroq tezlikga ega. Endi siz joystiklar uchun xuddi shunday xabarni yuborishingiz mumkinligini ko'rasiz - o'ngdan chap oldinga surildi, bir xil «chapga burildi» xabariga aylanadi.

Endi sizda egizak joystiklari uchun g'ildirak yoki g'ildirak izlari almashinadigan tizim mavjud. O'zingizning qaysi narsangizni aralashtirasiz va moslashtirasiz! Xuddi shu printsip hamma narsaga qo'llaniladi - interfeys faqat tarkibiy qismlardan mustaqil ravishda ishlab chiqilishi kerak, foydalanuvchi qanday qilib uni amalga oshirishi haqida o'ylamasdan nima qilish kerakligi haqida qaror qabul qilishi yoki uni bajarishi kerak bo'lgan narsani hal qilish kerak.

O'tgan bir arxitekturadan foydalanib, narsalarni bir-biriga ulashning hojati yo'q - har bir narsa avtobusga ulanadi, shuning uchun rulingiz avtomashinaga yo'naltiriladi va Rulda xabarlarini taniydi. Bu sizga bir xil tizimni boshqarishning bir nechta usullari mavjud bo'lsa, masalan, Rulda simidaki radio tugmachalari va chiziq va orqa yo'lovchi o'rindiqlari - hammasi xuddi shu xabarni avtobusga jo'natadi va barchasi ishlaydi.

Endi apparat uchun siz juda ham cheklangansiz, chunki narsalar bir-biriga bog'langan bo'lishi kerak. Bundan tashqari siz ular bilan ta'minlaydigan interfeys bilan cheklangansiz, masalan, batareya - batareyadir va u qo'rg'oshin kislotasi yoki vodorod yonilg'i xujayrasi bo'lishi mumkin bo'lsa-da, u bir xil prizler va bir xil keskinliklarga ega bo'lishi kerak u. Bunday holatda standartlashtirilgan interfeyslar kerak va bu sizni chegaralaydi. Misol uchun, g'ildirak yoki tank qismlari bilan bir xil o'lchamli va shakli şasisine ega bo'lishingiz mumkin, ammo jismoniy cheklashlar variantlaringizni cheklaydi.

0
qo'shib qo'ydi

Avtomashinalarning dastlabki kunlarida ko'plab qismlar to'g'ridan-to'g'ri yoki bir qop va fayl yordamida almashtirilishi mumkin edi. Dvigatellar, shassilar va avtoulovlar uchun mutlaqo boshqa kompaniyalar tomonidan bajarilishi juda keng tarqalgan.

Ellikinchi va oltmishinchi yillarda eng yaxshi kvadratchani (masalan Triumph Bonneville) eng yaxshi kvadratga (masalan, Norton Commando) joylashtirish uchun salqin, ehtimol, butunlay boshqa mashinadan tormoz va zarba bilan mos tushadi.

Buning hammasi imkoni bor edi, chunki muhandislik juda xomashyo edi va uning qismlari yuqori tolerantliklarga mos kelmagan edi.

Zamonaviy avtomobilda nisbatan arzon avtomobillar ham yuqori darajada optimallashtirilgan dizaynlarga ega. Misol sifatida gaz oqimini oling (energiya ishlab chiqarishga eng ko'p ta'sir qiladigan muhandislik bo'limi); dizaynda havo filtri, karbüratör/yonilg'i quyish tizimlari, kirish manifoldu, valflar, silindir, piston, egzoz manifoldu, egzoz ustunlari, susturucu va katalitik konvertör bo'lishi kerak. Ushbu tarkibiy qismlardan birini o'zgartirish gaz oqimiga va shuning uchun quvvat chiqimiga va yonilg'i sarflashga ta'sir qiladi (ehtimol, yomonroq bo'ladi).

Ushbu stsenariyda komponentlarni loyihalashga qanday qilib ulanishi mumkinligini ko'rish va uni qanday qiyinlashtirishi qiyin.

0
qo'shib qo'ydi