Перейти к содержимому
artem211

Программа для робота по обслуживанию атомного жидкостного реактора IC-E2

Рекомендуемые сообщения

Приверженность к независимым от погоды источникам энергии и природная тяга к автоматизации и надежности сподвигли меня, на автоматизированное обслуживание атомных реакторов, коих имею 4 энергоблока(!), плясать вокруг каждого в резине на голое тело - не айс. 

В ОС я новичок, до этого кодил в майнкрафте только в СС, в реальности привык к жестко-типизированному C#, так что нюансы луа даются не просто. 

 

Итак общая задача такая - исключить игрока из схемы "склад-реактор".

По пунктам:

1. Выбор однородного топливного комплекта(уран/МОХ) для жидкостного реактора(далее реактор)

2. Отслеживание выработки текущей топливной закладки в реакторе.

3. Своевременное отключение реактора, изъятие отработанного топлива, закладка свежих стержней в заданной конфигурации.

4. Постоянное самостоятельное дежурство у реактора(ов), автозарядка, недопущение ошибок конфигураций закладок стержней.

5. Конвеерное получение оружейного плутония в коварных целях и обеспечение базы электроэнергией.

 

На данный момент программа в длительном бета-тесте уже почти 20 часов(уран вырабатывается 10 000 секунд, МОХ 5 000 секунд).

Чего удалось достичь:

- отсутствие привязки к таймеру(процесс завязан на реальное состояние топлива в реакторе),

- проверка и подборка цельных комплектов подходящего топлива(система не всегда готова поставить нужное топливо)

- на данный момент робот принимает только подходящие под мою реакторную схему "двушки" и "четверки" стержней урановых либо МОХ. 180520150ab536f0a4.png

- автономность работы(автоматический контроль уровня заряда в батареях робота, посредством блока зарядника)

1805201550daa62998.png

- своевременное обслуживание реактора, практически безостановочная подача электроэнергии в сеть

- адаптивность(программу можно запускать на любом этапе работы реактора и продолжит ее с нужного шага)

Чего пока не получилось/не успелось, но что в перспективе хочется видеть в программе:

- программу-конфигуратор с ГУИ и сенсорными кнопками, для настройки схемы реактора, количества, конфигурации и типа топливной закладки(вероятно на управляющем компьютере)

- централизованный менеджмент(сервер) для контроля "Уранитов", оценки состояния системы, корректировки схем топливных закладок "на лету"

- взаимодействие с АЕ сетью напрямую(на данный момент робот получает топливо и сбрасывает отработку через преднастроенный МЕ Интерфейс) 18052015010bfa1290.png

 

В общем выглядит так: 18052015daf4eae897.png

Робот лицом к люку реактора, под ним интерфейс МЕ сети, с одной стороны зарядник, с другой можно рычаг поставить, если не нравится сверху. С какой стороны что стоит можно указать в самом начале программы, далее все управление параметризовано, исходя из настроек charge_side(с какой стороны зарядник), switch_side(с какой стороны рычаг), остальные параметры типа reac_side и fuel_side на данный момент не используются или почти не используются, задел на перспективу.

 

Паст программы http://pastebin.com/4RN9s0Aa

 

П.С.

Прошу прощения за "топорное" изложение. 

Идет Бета-тест первой версии "уранита".

Не умею расставлять "спойлеры" и прочее, на форумах не помню когда когда постил последний раз.

Прошу конструктивной критики и советов.

П.П.С

Самоуверенно считаю это "кандидатской" на статус программиста.

Изменено пользователем artem211

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отлично. Нужная программа. Так как никто и ничто в майнкрафт кроме человека, ну и естественно робота, не сможет точно контролировать состояние стержней. 

 

Но надо оптимизировать немного код.  Библиотеки, скорее всего не следует каждый раз вызывать всей кучей в циклах.  Их достаточно один раз подключить (получить указатель на них), то есть запись
 

while true do
   require('robot').forward()
end

скорее всего не оптимальная. Библиотека math и так уже подключена по умолчанию в Луа. Ну и очень много лишних телодвижений и циклов. Каждые 10 секунд робот проверяет, как я понял, все, зарядку, слоты, есть ли запас урана в коробке под задницей АЕ-шки, состояние стежней в камере реактора и т.д.  

 

Там же они горят часа 2 минимум. Зачем так часто там гонять циклы. Понятно, что там работа с 4-мя слотами и измерение энергии своей, вроде мелочь, но просто не рационально, тем более, что он никуда инфу не шлет пока на внешние отображалки. Если сделаешь диспетчерскую, тогда да, раз в 10-20 секунд можно там гетить все и проверять, принтить на большие экраны состояние стержней в % износа полосочками прогрессбара и прочее. 

 

Но в целом отлично, что сделал робота-ядерщика и применил АПИ продвинутое по контролю внешнего инвентаря, слотов и демеджа айтемов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Отлично. Нужная программа. Так как никто и ничто в майнкрафт кроме человека, ну и естественно робота, не сможет точно контролировать состояние стержней. 

 

Но надо оптимизировать немного код.  Библиотеки, скорее всего не следует каждый раз вызывать всей кучей в циклах.  Их достаточно один раз подключить (получить указатель на них), то есть запись

 

while true do
   require('robot').forward()
end
скорее всего не оптимальная. Библиотека math и так уже подключена по умолчанию в Луа. Ну и очень много лишних телодвижений и циклов. Каждые 10 секунд робот проверяет, как я понял, все, зарядку, слоты, есть ли запас урана в коробке под задницей АЕ-шки, состояние стежней в камере реактора и т.д.  

 

Там же они горят часа 2 минимум. Зачем так часто там гонять циклы. Понятно, что там работа с 4-мя слотами и измерение энергии своей, вроде мелочь, но просто не рационально, тем более, что он никуда инфу не шлет пока на внешние отображалки. Если сделаешь диспетчерскую, тогда да, раз в 10-20 секунд можно там гетить все и проверять, принтить на большие экраны состояние стержней в % износа полосочками прогрессбара и прочее. 

 

Но в целом отлично, что сделал робота-ядерщика и применил АПИ продвинутое по контролю внешнего инвентаря, слотов и демеджа айтемов.

Не совсем так. Каждые 10 сек он проверяет только 2 условия - отработан ли стержень в 1 слоте реактора и не упал ли заряд ниже половины. Все прочие действия циклы и прочее отсекаются этими двумя условиями и никаких лишних циклов и библиотек не вызывается, пока не наступит момент действовать, об этом я подумал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...