ระบบปฏิบัติการใดที่ใช้ในเครื่องบินและภาษาการเขียนโปรแกรมอะไรที่พัฒนาขึ้นมา [ปิด]


113

ฉันสงสัยว่าถ้าใครรู้ว่าระบบปฏิบัติการที่ใช้ในเครื่องบินพาณิชย์ (เช่นโบอิ้งหรือแอร์บัส)

นอกจากนี้ภาษาโปรแกรมแบบเรียลไทม์ (ที่ต้องการ) คืออะไร ฉันได้ยินมาว่า Ada ถูกใช้ใน Boeing ดังนั้นคำถามของฉันคือ - ทำไม Ada Boeing-guys มีเกณฑ์อะไรบ้างในการเลือกภาษานี้ (ฉันเดาว่า Java จะไม่เป็นทางเลือกที่ดีถ้าเปิดออกอย่างรวดเร็วตัวเก็บรวบรวมขยะ)


11
เมื่อฉันเห็นคำถามนี้ครั้งแรกฉันคิดว่ามันกำลังถามเกี่ยวกับระบบที่ใช้งานภาพยนตร์บนเครื่องบินและในที่นั่งด้านหลัง ฉันเคยอยู่ในเที่ยวบินเดลต้าที่พวกเขารีบูทระบบนั้นและคุณสามารถบอกได้ว่ามันกำลังใช้งาน Linux ซึ่งเป็นตัวแปรเดเบียนที่ฉันเชื่อ
Kris Harper

1
@ root45: ahhhhhh ... ฉันยอมรับว่ามันไม่ได้ใจของฉัน น่าจะเป็น ฉันเคยเห็นบางคนใช้ QNX บ้างฉันคิดว่าและบางคนใช้ Windows Embedded
haylem

17
"มันใช้ระบบปฏิบัติการประเภทใด" "ฉันคิดว่ามันเป็น Vista" "เรากำลังจะตาย!"
StuperUser

1
@StuperUser: หนึ่งในฝูงชนไอทีที่ฉันโปรดปราน ( youtube.com/watch?v=8y4akOH8v8Q - 2:34 นาที) นอกจากนี้ไม่เพียง แต่สายการบินเชิงพาณิชย์ แต่มันน่าสนใจที่จะทราบเพิ่มเติมเกี่ยวกับเครื่องบินทหารที่ใช้หากไม่เหมือนกัน Vista, ฮ่า ๆ
Bratch

1
@Piskvor: มี VM แบบเรียลไทม์สำหรับ Java (ตามภาษาไม่ใช่แพลตฟอร์ม) ฉันไม่ทราบว่ามีการใช้สายพันธุ์ JavaRT สำหรับระบบการบินที่จริงจัง (และที่อยู่อาศัย) แต่ฉันเห็นว่ามันใช้สำหรับแบบจำลองหรือโดรน
haylem

คำตอบ:


157

avionics

สำหรับระบบควบคุมอากาศยานเราไม่ได้พูดถึงระบบปฏิบัติการ แต่เป็นระบบ avionics , avionics แบบรวมหรือระบบ airborne คอมพิวเตอร์โดยทั่วไป และพวกเขาเป็นจริงการรวมกันของความหลากหลายของระบบอิสระหรือระหว่างขึ้นอยู่สำหรับฟังก์ชั่นที่แตกต่างกัน ( การควบคุมการบิน , การหลีกเลี่ยงการชนกันของสภาพอากาศ, การสื่อสาร, blackboxes ... )

ตัวควบคุมแต่ละตัวมักจะเป็นโมดูลอิสระ (ฮาร์ดแวร์และซอฟต์แวร์) เพื่อความปลอดภัยและเหตุผลด้านความปลอดภัยที่ชัดเจน: พวกเขาเป็นตัวควบคุมที่สำคัญและระบบการตรวจสอบและหากหนึ่งในพวกเขาล้มเหลวหรือได้รับความเสียหายมันเป็น "ความไม่สะดวก" ที่ค่อนข้างใหญ่สำหรับคน ขึ้นอยู่กับเครื่องบิน ความน่าเชื่อถือใช้ทุกความหมายเมื่อคุณอยู่ในเครื่องบิน ดังนั้นโดยปกติแล้ว

  • สร้างขึ้นเพื่อวัตถุประสงค์ในภารกิจของพวกเขา
  • สร้างขึ้นเพื่อทำงานอย่างอิสระและเชื่อมต่อกับระบบอื่น ๆ
  • สร้างขึ้นเพื่อให้สามารถทนต่อความผิดพลาดได้กับความล้มเหลวของตัวเองและเพื่อความล้มเหลวของระบบอื่น ๆ ที่เชื่อมต่ออยู่ (เพราะคุณไม่ต้องการให้ระบบเสียงของนักบินทำการควบคุมเครื่องยนต์เป็นต้น)

ไม่ใช่คอมพิวเตอร์ขนาดใหญ่ที่ทำงานทุกอย่าง หากคุณคิดว่ามันมาจากมุมมองของเครื่องบินทหารแทนที่จะเป็นเครื่องบินพาณิชย์ (แม้ว่ามันจะคล้ายกันในแง่นี้ภาพอาจช่วยได้): ถ้ามีส่วนหนึ่งถูกยิงคุณอย่างน้อยคุณก็ควรมีส่วนอื่น ๆ เพื่อไปต่อ (ส่วนที่ควบคุมการสื่อสารและระบบความปลอดภัยอาจน่าสนใจที่จะมีชีวิตอยู่ ... ) ดังนั้นยังมีปุ่มขนาดใหญ่ที่คุณเห็นใน jetliners เพื่อติดตามสถานะของระบบที่แตกต่างกัน

พวกเขามักจะถูกสร้างขึ้นเป็นองค์ประกอบที่กำหนดเองที่ใช้งานระบบของตัวเองหรือพวกเขาจะเรียกใช้และกำหนดเวลาโดยไมโครเคอร์เนล (ในกรณีส่วนใหญ่ด้วยการสนับสนุนความสามารถในเวลาจริง )

มันขึ้นอยู่กับผู้ขายและประเทศอย่างชัดเจน แต่อย่างน้อยพวกเขาก็มักจะต้องปฏิบัติตามกฎระเบียบที่เข้มงวดข้อกำหนดในการออกแบบและโปรโตคอลเฉพาะอย่างเข้มงวดซึ่งอนุญาตให้:

  • การควบคุมการปฏิบัติตามมาตรฐานความปลอดภัยและความปลอดภัยอย่างเข้มงวด
  • การสื่อสารกับระบบอื่น ๆ (ดีกว่ามากถ้าเครื่องบินที่คุณบินไปในเรคยาวิกสามารถ "พูดคุย" กับอุปกรณ์ควบคุมภาคพื้นในโตเกียว ... )

ความพยายามในการกำหนดมาตรฐาน

DO-178B (ปรับปรุง 1992) และทายาทของDO-178C (ปรับปรุงในปี 2012) (และพวงของเอกสารที่เกี่ยวข้อง) เป็นตัวอย่างของการรับรองการอ้างอิงระดับการปฏิบัติดังกล่าวและได้รับการยอมรับโดย FAA (US), EASA (EU) และ Transport Canada และอื่น ๆ องค์กรอื่น ๆ หลายรายการมีส่วนร่วมในการสร้างเอกสารดังกล่าวเช่นEUROCAE

ระบบทางอากาศดังกล่าวมักจะเป็นซอฟต์แวร์ตามความต้องการ แต่เป็นที่ทราบกันว่าระบบต่อไปนี้ใช้ในเครื่องบินบางส่วน:

  • WinDriver 's VxWorks (ดูและ Defense ใช้ )
  • QNX (จริง ๆ แล้วไม่แน่ใจว่าจะใช้ QNX ในเครื่องบินหรือไม่ แต่ใช้ในระบบควบคุมภาคพื้นดิน)

เพื่อให้คุณมีความคิดที่คลุมเครือเกี่ยวกับองค์ประกอบที่สร้างขึ้นในระบบ avionics รายการย่อของ avionics นี้ชี้ไปที่บางส่วนของพวกเขา (มีการทับซ้อนกัน)

ภาษาที่ใช้ในการพาณิชย์และการบินทหารเด่น

นอกเหนือจากต้องสงสัยตามปกติเรารู้ว่าใน "หลัก" การเขียนโปรแกรมโลกคุณจะขึ้นมาชื่อมักจะอ้างอิงบางอย่างเช่นAdaและบางภาษาที่รู้จักกันน้อยเช่น (วันและตอนนี้ "ลาออก" ตั้งแต่ปี 2010) ร่าเริง


คำถาม StackExchange ที่เกี่ยวข้อง:


2
@mattnz: ขอบคุณ แต่มันก็ค่อนข้างห่างไกลจากสิ่งที่ OP ถาม ฉันพยายามให้ข้อมูลเชิงลึกและตัวชี้ที่เป็นประโยชน์สำหรับวัตถุประสงค์ด้านเอกสาร แต่เมื่อพูดถึงรายละเอียดการใช้งานจริงมันยากที่จะหาข้อมูลที่ยาก
เฮย์เล็ม

"และจริงๆแล้วพวกเขาเป็นการรวมกันของระบบอิสระหรือพึ่งพาอาศัยกันมากมาย" คุณหมายถึงว่ามีฮาร์ดแวร์แยกต่างหากสำหรับสิ่งเหล่านี้หรือไม่?
stijn

2
ใช่พวกเขามักจะเป็นฮาร์ดแวร์ที่สร้างขึ้นตามวัตถุประสงค์ ไม่มีแร็ค x86 ชิ้นที่ใช้กับเครื่องบินของคุณ
Rig

3
@stijn: ใช่ คิดแบบนี้ พวกเขามีความสำคัญในการควบคุมและการตรวจสอบระบบ หากหนึ่งในพวกเขาล้มเหลวนั่นหมายถึงปัญหาใหญ่ของ freakin ที่มีค่า F ที่ยิ่งใหญ่และสุภาพน้อยกว่านั้น ดังนั้นโดยปกติแล้วมันคือก) สร้างขึ้นเพื่อวัตถุประสงค์ในภารกิจของพวกเขาข) สร้างขึ้นเพื่อทำงานอย่างอิสระและเชื่อมต่อกับระบบอื่น ๆ c) สร้างขึ้นเพื่อให้มีความผิดพลาดต่อความล้มเหลวของตัวเองและความล้มเหลวของระบบอื่น ๆ ไม่ต้องการให้ระบบเสียงของนักบินทำการควบคุมเครื่องยนต์เช่น) ไม่ใช่คอมพิวเตอร์ขนาดใหญ่ที่ทำงานทุกอย่าง
haylem

@stijn: ลองคิดดูจากมุมมองของเครื่องบินทหารมากกว่าเครื่องบินเพื่อการค้าถ้าช่วยได้: ถ้ามีส่วนหนึ่งถูกยิงคุณอย่างน้อยคุณก็ควรมีส่วนอื่นที่สามารถเดินหน้าต่อไปได้ (ฉันจะบอกว่า ส่วนที่ควบคุมการสื่อสารและระบบความปลอดภัยอาจเป็นสิ่งที่น่าสนใจเพื่อให้มีชีวิตอยู่ ... ) ดังนั้นยังมีปุ่มขนาดใหญ่ที่คุณเห็นใน jetliners เพื่อติดตามสถานะของระบบที่แตกต่างกัน
haylem

22

เครื่องบินที่ทันสมัยส่วนใหญ่ใช้ RTOS วัตถุประสงค์ทั่วไป (ระบบปฏิบัติการเรียลไทม์) ค่อนข้างเหมือนกันกับที่ใช้ในโรงงานอัตโนมัติสถานีพลังงานเรือ ฯลฯ

แอร์บัสใช้ไม่กี่อย่างรวมถึง INTEGRITY จาก Northrop-grumman และตั้งโปรแกรมใน C / C ++, โบอิ้งใช้ VxWorks และอื่น ๆ


2
คำสั่ง "... RTOS วัตถุประสงค์ทั่วไป ... " ทำให้ trivializes สิ่งที่ RTOS ใช้เพื่อทำให้เป็นระบบ avionics แทบจะเป็น RTOS แบบเดียวกับที่ใช้ใน ACME Corps Digital TV Reciever
mattnz

3
ไม่สามารถใช้ VxWorks ได้ตั้งแต่ Mar Rover ไปจนถึงโทรศัพท์ Blackberry ของคุณ
Martin Beckett

ขออภัยเป็น QNX ที่ใช้ใน Blackberry ไม่ใช่ VxWorks แต่ใช้หลักการเดียวกันนี้ - COTS rtos สามารถใช้ในเครื่องบินได้
Martin Beckett

12

สำหรับสิ่งที่มีค่า: สำหรับยานอวกาศ (ดาวเทียมและยานอวกาศ) C และ C ++ ยังคงโดดเด่น (และมีการปฏิบัติตามมาตรฐาน ISO อย่างเข้มงวด) โดยทั่วไปแล้วใช้ VxWorks โดยทั่วไปแล็บจะยึดติดกับ C หรือ C ++ ตามความคุ้นเคยของนักพัฒนาความมั่นใจในคอมไพเลอร์ Toolchain และมาตรฐานการเข้ารหัสภายใน มีเหตุผลที่น่าสนใจสำหรับทั้งสองภาษาสำหรับซอฟต์แวร์การบินตามเวลาจริง แต่แต่ละองค์กรมีแนวโน้มที่จะติดอยู่กับสิ่งใดสิ่งหนึ่ง ในทางกลับกันเครื่องมือเสริมมักจะถูกตั้งโปรแกรมใน Forth, C และภาษาสคริปต์ที่ทันสมัยมากขึ้นเช่น Lua


3
ปกติแล้วมันจะเป็นเซตย่อยของ C หรือ C ++ เช่น MISRA C หรือ JSF C ++ เท่าที่ฉันอ่าน
Coder

10

นอกจากนี้ยังมีข้อสังเกตว่าระบบควบคุมมักได้รับการพัฒนาโดยใช้แบบจำลองการออกแบบโดยใช้ Simulink การออกแบบจะถูกแปลงเป็นรหัส C โดยอัตโนมัติ มนุษย์ยังคงอ่านและตรวจสอบรหัสได้


อาจารย์ของฉันพูดถึงเมื่อพูดถึงระบบที่สำคัญในวิศวกรรมซอฟต์แวร์
ฝ่ายขาย Dielson

ฉันเชื่อว่าแอร์บัสใช้SCADEสำหรับคุณสมบัติการทำงานของฮาร์ดแวร์และซอฟต์แวร์ในระบบควบคุมการบิน เครื่องมือสามารถสร้างรหัส C หรือ Ada ได้
dodgy_coder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.