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


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Оффлайн   artem211

artem211
  • Пользователи
  • Сообщений: 188
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородСанкт-Петербург

Награды

              

Отправлено 19 Май 2015 - 00:00

Приверженность к независимым от погоды источникам энергии и природная тяга к автоматизации и надежности сподвигли меня, на автоматизированное обслуживание атомных реакторов, коих имею 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: 19 Май 2015 - 00:03

  • Alex, Zer0Galaxy, Fingercomp и 3 другим это нравится

#2 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 735
  • Уровень сигнала: 52,61%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 19 Май 2015 - 01:26

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

 

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

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

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

 

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

 

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



#3 Оффлайн   artem211

artem211
  • Автор темы
  • Пользователи
  • Сообщений: 188
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородСанкт-Петербург

Награды

              

Отправлено 19 Май 2015 - 07:08

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

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

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




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных