Код: Выделить всё
-- Программа "Система запуска ТЭП70 (кабина)" -- Для Train Simulator Classic ТЭП70Запуск = { -- Статусы систем статус = "выключен", этапЗапуска = 0, -- Электрические системы напряжениеАКБ = 0, напряжениеБортсети = 0, генераторСтатус = "выключен", -- Дизельная система дизельСтатус = "остановлен", частотаВращенияДизеля = 0, давлениеМасла = 0, температураОхлаждающейЖидкости = 0, -- Пневмосистема давлениеПМ = 0, -- Питательная магистраль давлениеТМ = 0, -- Тормозная магистраль давлениеГР = 0, -- Главные резервуары компрессорСтатус = "выключен", -- Токоприемники (для отопления) токоприемникСтатус = "опущен", -- Органы управления в кабине ключБортсети = "выключен", кнопкаПускДизеля = "отжата", контроллерМашиниста = 0, реверсор = "нейтраль", кранМашиниста = 0, -- Сигнализация и индикация аварийныеСигналы = {}, предупредительныеСигналы = {}, сигнальныеЛампы = {} } -- Константы системы local МИН_НАПРЯЖЕНИЕ_АКБ = 20 -- В local МИН_ДАВЛЕНИЕ_МАСЛА = 1.0 -- кгс/см² local МИН_ДАВЛЕНИЕ_ПМ = 5.0 -- кгс/см² local ОБОРОТЫ_ПУСКА = 150 -- об/мин local ОБОРОТЫ_ХОЛОСТОГО_ХОДА = 400 -- об/мин -- Основная процедура запуска из кабины function ТЭП70Запуск:запуститьЛокомотив() print("🚂 === СИСТЕМА ЗАПУСКА ТЭП70 ===") print("Место: Кабина машиниста") -- Проверка начальных условий в кабине if not self:проверитьПодготовкуКабины() then print("❌ Кабина не подготовлена к запуску!") return false end -- Последовательность запуска local этапы = { "Включение бортсети", "Запуск дизельного двигателя", "Контроль работы дизеля", "Набор давления в пневмосистеме", "Проверка вспомогательного оборудования", "Готовность к движению" } for i, этап in ipairs(этапы) do print("\n--- Этап " .. i .. ": " .. этап .. " ---") self.этапЗапуска = i if not self:выполнитьЭтапЗапуска(i) then print("❌ ЗАПУСК ПРЕРВАН НА ЭТАПЕ " .. i) self:активироватьАварийнуюСигнализацию("Сбой на этапе " .. i) return false end end self.статус = "готов" print("\n🎉 ТЭП70 ЗАПУЩЕН И ГОТОВ К РАБОТЕ!") self:включитьСигналГотовности() return true end -- Проверка подготовки кабины function ТЭП70Запуск:проверитьПодготовкуКабины() print("🔍 ПРОВЕРКА ПОДГОТОВКИ КАБИНЫ...") -- Проверка контроллера машиниста if self.контроллерМашиниста ~= 0 then print("❌ Контроллер машиниста не в нулевом положении!") return false end print("✓ Контроллер машиниста: 0") -- Проверка реверсора if self.реверсор ~= "нейтраль" then print("❌ Реверсор не в нейтральном положении!") return false end print("✓ Реверсор: нейтраль") -- Проверка крана машиниста if self.кранМашиниста ~= 0 then print("⚠️ Кран машиниста не в поездном положении") end -- Проверка ручных тормозов if not self:проверитьРучныеТормоза() then print("❌ Ручные тормоза не заторможены!") return false end print("✓ Ручные тормоза: заторможены") -- Проверка аварийных сигналов if #self.аварийныеСигналы > 0 then print("❌ Имеются аварийные сигналы!") for _, сигнал in ipairs(self.аварийныеСигналы) do print(" - " .. сигнал) end return false end print("✅ КАБИНА ПОДГОТОВЛЕНА К ЗАПУСКУ") return true end -- Выполнение этапа запуска function ТЭП70Запуск:выполнитьЭтапЗапуска(этап) if этап == 1 then return self:включитьБортсеть() elseif этап == 2 then return self:запуститьДизельныйДвигатель() elseif этап == 3 then return self:контрольРаботыДизеля() elseif этап == 4 then return self:набратьДавлениеВПневмосистеме() elseif этап == 5 then return self:проверитьВспомогательноеОборудование() elseif этап == 6 then return self:проверитьГотовностьКДвижению() end return false end -- Этап 1: Включение бортсети function ТЭП70Запуск:включитьБортсеть() print("▶️ ВКЛЮЧЕНИЕ БОРТСЕТИ...") -- Поворот ключа бортсети print("✓ Поворот ключа бортсети в положение 'ВКЛ'") self.ключБортсети = "включен" -- Проверка напряжения АКБ self.напряжениеАКБ = self:измеритьНапряжениеАКБ() if self.напряжениеАКБ < МИН_НАПРЯЖЕНИЕ_АКБ then print("❌ Низкое напряжение АКБ: " .. self.напряжениеАКБ .. " В") return false end print("✓ Напряжение АКБ: " .. self.напряжениеАКБ .. " В") -- Активация бортсети self.напряжениеБортсети = 24 print("✓ Бортсеть активирована: 24 В") -- Включение контрольных приборов self:включитьКонтрольныеПриборы() print("✓ Контрольные приборы включены") return true end -- Этап 2: Запуск дизельного двигателя function ТЭП70Запуск:запуститьДизельныйДвигатель() print("▶️ ЗАПУСК ДИЗЕЛЬНОГО ДВИГАТЕЛЯ...") -- Проверка давления масла перед запуском self.давлениеМасла = self:измеритьДавлениеМасла() if self.давлениеМасла < 0.5 then print("⚠️ Низкое давление масла перед запуском: " .. self.давлениеМасла .. " кгс/см²") end -- Нажатие кнопки пуска дизеля print("✓ Нажатие кнопки 'ПУСК ДИЗЕЛЯ'") self.кнопкаПускДизеля = "нажата" -- Процесс запуска дизеля print("⏳ Запуск стартера...") self:запуститьСтартер() -- Контроль оборотов print("⏳ Контроль набора оборотов...") for i = 1, 10 do self.частотаВращенияДизеля = self:измеритьОборотыДизеля() print(" Обороты: " .. self.частотаВращенияДизеля .. " об/мин") if self.частотаВращенияДизеля >= ОБОРОТЫ_ХОЛОСТОГО_ХОДА then break end if i == 5 and self.частотаВращенияДизеля < ОБОРОТЫ_ПУСКА then print("❌ Дизель не запускается!") return false end os.execute("sleep 1") end -- Отжатие кнопки пуска self.кнопкаПускДизеля = "отжата" self.дизельСтатус = "работает" print("✅ ДИЗЕЛЬНЫЙ ДВИГАТЕЛЬ ЗАПУЩЕН") print("✓ Обороты холостого хода: " .. self.частотаВращенияДизеля .. " об/мин") return true end -- Этап 3: Контроль работы дизеля function ТЭП70Запуск:контрольРаботыДизеля() print("🔍 КОНТРОЛЬ РАБОТЫ ДИЗЕЛЯ...") -- Контроль давления масла self.давлениеМасла = self:измеритьДавлениеМасла() if self.давлениеМасла < МИН_ДАВЛЕНИЕ_МАСЛА then print("❌ Низкое давление масла: " .. self.давлениеМасла .. " кгс/см²") return false end print("✓ Давление масла: " .. self.давлениеМасла .. " кгс/см²") -- Контроль температуры self.температураОхлаждающейЖидкости = self:измеритьТемпературуОЖ() if self.температураОхлаждающейЖидкости < 40 then print("⚠️ Низкая температура ОЖ: " .. self.температураОхлаждающейЖидкости .. " °C") else print("✓ Температура ОЖ: " .. self.температураОхлаждающейЖидкости .. " °C") end -- Контроль оборотов if self.частотаВращенияДизеля < ОБОРОТЫ_ХОЛОСТОГО_ХОДА - 50 then print("❌ Неустойчивая работа дизеля!") return false end -- Включение генератора self.генераторСтатус = "включен" print("✓ Генератор включен") print("✅ ДИЗЕЛЬ РАБОТАЕТ УСТОЙЧИВО") return true end -- Этап 4: Набор давления в пневмосистеме function ТЭП70Запуск:набратьДавлениеВПневмосистеме() print("💨 НАБОР ДАВЛЕНИЯ В ПНЕВМОСИСТЕМЕ...") -- Запуск компрессора print("✓ Запуск компрессора") self.компрессорСтатус = "включен" -- Набор давления в ПМ print("⏳ Набор давления в питательной магистрали...") for i = 1, 20 do self.давлениеПМ = self:измеритьДавлениеПМ() self.давлениеГР = self:измеритьДавлениеГР() print(" ПМ: " .. string.format("%.1f", self.давлениеПМ) .. " кгс/см², ГР: " .. string.format("%.1f", self.давлениеГР) .. " кгс/см²") if self.давлениеПМ >= МИН_ДАВЛЕНИЕ_ПМ and self.давлениеГР >= 6.0 then break end if i == 15 and self.давлениеПМ < 4.0 then print("❌ Медленный набор давления!") return false end os.execute("sleep 1") end -- Набор давления в ТМ self.давлениеТМ = self:измеритьДавлениеТМ() print("✓ Давление в ТМ: " .. self.давлениеТМ .. " кгс/см²") print("✅ ПНЕВМОСИСТЕМА ГОТОВА") return true end -- Этап 5: Проверка вспомогательного оборудования function ТЭП70Запуск:проверитьВспомогательноеОборудование() print("🔧 ПРОВЕРКА ВСПОМОГАТЕЛЬНОГО ОБОРУДОВАНИЯ...") -- Проверка систем вентиляции if not self:проверитьСистемыВентиляции() then print("⚠️ Проблемы с системами вентиляции") else print("✓ Системы вентиляции: норма") end -- Проверка систем охлаждения if not self:проверитьСистемыОхлаждения() then print("❌ Неисправность систем охлаждения!") return false end print("✓ Системы охлаждения: норма") -- Проверка контроля бдительности if not self:проверитьКонтрольБдительности() then print("⚠️ Проблемы с контролем бдительности") end print("✅ ВСПОМОГАТЕЛЬНОЕ ОБОРУДОВАНИЕ ИСПРАВНО") return true end -- Этап 6: Проверка готовности к движению function ТЭП70Запуск:проверитьГотовностьКДвижению() print("🎯 ПРОВЕРКА ГОТОВНОСТИ К ДВИЖЕНИЮ...") local всеСистемыГотовы = true local проверки = { {"Дизельный двигатель", self.дизельСтатус == "работает"}, {"Давление масла", self.давлениеМасла >= МИН_ДАВЛЕНИЕ_МАСЛА}, {"Давление в ПМ", self.давлениеПМ >= МИН_ДАВЛЕНИЕ_ПМ}, {"Генератор", self.генераторСтатус == "включен"}, {"Бортсеть", self.напряжениеБортсети >= 22}, {"Контроллер", self.контроллерМашиниста == 0}, {"Реверсор", self.реверсор == "нейтраль"} } for _, проверка in ipairs(проверки) do local система, статус = проверка[1], проверка[2] if статус then print("✓ " .. система .. ": ГОТОВ") else print("❌ " .. система .. ": НЕ ГОТОВ") всеСистемыГотовы = false end end if всеСистемыГотовы then print("\n🎉 ТЭП70 ГОТОВ К ДВИЖЕНИЮ!") print("➡️ Установите реверсор и плавно перемещайте контроллер") else print("\n⚠️ Имеются неисправности. Движение запрещено!") end return всеСистемыГотовы end -- Функция остановки локомотива function ТЭП70Запуск:остановитьЛокомотив() print("\n🛑 === ОСТАНОВКА ТЭП70 ===") -- Последовательность остановки print("1. Установка контроллера в 0...") self.контроллерМашиниста = 0 print("2. Остановка дизеля...") self:остановитьДизельныйДвигатель() print("3. Выключение бортсети...") self.ключБортсети = "выключен" self.напряжениеБортсети = 0 print("4. Сброс давления в пневмосистеме...") self.компрессорСтатус = "выключен" self.статус = "выключен" self.этапЗапуска = 0 print("✅ ТЭП70 ОСТАНОВЛЕН") end -- Вспомогательные функции для кабины function ТЭП70Запуск:включитьКонтрольныеПриборы() self.сигнальныеЛампы = { "Бортсеть", "Давление масла", "Топливо", "Охлаждение", "Пневмосистема" } end function ТЭП70Запуск:запуститьСтартер() -- Симуляция работы стартера for i = 1, 3 do print(" Стартер работает... " .. i) os.execute("sleep 1") end end function ТЭП70Запуск:остановитьДизельныйДвигатель() self.дизельСтатус = "останавливается" self.частотаВращенияДизеля = 0 self.давлениеМасла = 0 end function ТЭП70Запуск:активироватьАварийнуюСигнализацию(причина) table.insert(self.аварийныеСигналы, причина) print("🚨 АВАРИЙНАЯ СИГНАЛИЗАЦИЯ: " .. причина) end function ТЭП70Запуск:включитьСигналГотовности() print("💚 СИГНАЛ 'ГОТОВНОСТЬ' АКТИВИРОВАН") end -- Функции измерений (заглушки для TS) function ТЭП70Запуск:измеритьНапряжениеАКБ() return 23.8 end function ТЭП70Запуск:измеритьДавлениеМасла() return 2.5 end function ТЭП70Запуск:измеритьОборотыДизеля() if self.дизельСтатус == "работает" then return 400 + math.random(-10, 10) else return math.random(100, 200) end end function ТЭП70Запуск:измеритьТемпературуОЖ() return 45 + math.random(-5, 5) end function ТЭП70Запуск:измеритьДавлениеПМ() return 5.5 + math.random() * 0.5 end function ТЭП70Запуск:измеритьДавлениеГР() return 6.5 + math.random() * 0.5 end function ТЭП70Запуск:измеритьДавлениеТМ() return 5.0 end function ТЭП70Запуск:проверитьРучныеТормоза() return true end function ТЭП70Запуск:проверитьСистемыВентиляции() return true end function ТЭП70Запуск:проверитьСистемыОхлаждения() return true end function ТЭП70Запуск:проверитьКонтрольБдительности() return true end -- Управление из кабины для Train Simulator function ТЭП70Запуск:управлениеИзКабины(команда) if команда == "пуск" then return self:запуститьЛокомотив() elseif команда == "стоп" then return self:остановитьЛокомотив() elseif команда == "статус" then return self:показатьСтатусКабины() elseif команда == "сброс_аварий" then return self:сброситьАварийныеСигналы() else print("❌ Неизвестная команда: " .. команда) return false end end -- Показать статус приборов в кабине function ТЭП70Запуск:показатьСтатусКабины() print("\n=== ПРИБОРНАЯ ПАНЕЛЬ ТЭП70 ===") print("Общий статус: " .. self.статус) print("Этап запуска: " .. self.этапЗапуска) print("---") print("Дизель: " .. self.дизельСтатус) print("Обороты: " .. self.частотаВращенияДизеля .. " об/мин") print("Давление масла: " .. string.format("%.1f", self.давлениеМасла) .. " кгс/см²") print("Температура ОЖ: " .. self.температураОхлаждающейЖидкости .. " °C") print("---") print("Бортсеть: " .. self.напряжениеБортсети .. " В") print("Генератор: " .. self.генераторСтатус) print("---") print("Давление ПМ: " .. string.format("%.1f", self.давлениеПМ) .. " кгс/см²") print("Давление ГР: " .. string.format("%.1f", self.давлениеГР) .. " кгс/см²") print("Компрессор: " .. self.компрессорСтатус) if #self.аварийныеСигналы > 0 then print("\n🚨 АВАРИЙНЫЕ СИГНАЛЫ:") for _, сигнал in ipairs(self.аварийныеСигналы) do print(" - " .. сигнал) end end end function ТЭП70Запуск:сброситьАварийныеСигналы() self.аварийныеСигналы = {} print("✅ Аварийные сигналы сброшены") return true end -- Инициализация для Train Simulator function инициализироватьТЭП70() local локомотив = ТЭП70Запуск print("🚂 ТЭП70 - СИСТЕМА ЗАПУСКА ИЗ КАБИНЫ") print("Готов к работе в Train Simulator Classic") return локомотив end -- Запуск системы local теп70 = инициализироватьТЭП70() -- Для использования в Train Simulator: -- теп70:управлениеИзКабины("пуск") -- Запуск локомотива -- теп70:управлениеИзКабины("стоп") -- Остановка локомотива -- теп70:управлениеИзКабины("статус") -- Показать статус приборов -- теп70:управлениеИзКабины("сброс_аварий") -- Сброс аварийных сигналов
Вопросы по программированию.
- Матвей Сербиенко
- Специалист
- Сообщения: 248
- Зарегистрирован: 13 апр 2024
- Откуда: Омск
- Репутация: 85
Вопросы по программированию.
Не знаю, будет ли эта тема полезна или нет, у меня не большой вопрос к этой теме (может на будущее мне пригодится) можно ли использовать нейросеть для программирования? К примеру я попросил написать код запуска в кабине ТЕП70 на Lua.
- Forza Gamer 777
- Профессор
- Сообщения: 1829
- Зарегистрирован: 11 мар 2020
- Откуда: Россия
- Репутация: 1474
Вопросы по программированию.
Можно, но нужно изначально всё понимать, чтобы за нейронкой править косяки, коих генерирует она тонну и чем больше код, тем больше она косячит. И уж точно скрипт на русском работать не будет. А еще надо понимать особенности TS в плане скриптинга и отслеживать, какое время затрачивается на выполнение каждого куска кода, потому что скрипты - самая жрущая ФПС штука в игре, на уровне динамических теней от источников светаМатвей Сербиенко писал(а): ↑08 окт 2025, 13:09 можно ли использовать нейросеть для программирования? К примеру я попросил написать код запуска в кабине ТЕП70 на Lua.