Циклирование режима сна и режима работы в UnetStack, а также добавление энергии, потребляемой в режиме ожидания для прослушивания и спящих режимах, в простую модель энергопотребления

#scheduler #scheduling #energy #sleep-mode #unetstack

#планировщик #планирование #энергия #спящий режим #unetstack

Вопрос:

У меня есть два вопроса:

  1. Мы хотим рассмотреть очень низкий рабочий цикл передачи в нашей подводной сенсорной сети, поскольку на практике именно энергопотребление в режиме прослушивания и в режиме ожидания будет определять срок службы нашей сети. Я заметил команды планировщика в новой версии UnetStack Simulator версии 3.2.0, addsleep , showsleep и т. Д., Я скачал последнюю версию симулятора, я пытался использовать эти команды, но это не сработало, я пытался работать как в оболочке, так и внутри скриптов groovy,и попытался импортировать org.arl.unet.планировщик, но ни одна из команд планировщика не работала и продолжала получать ошибки. Например, я попытался использовать это: addsleep 20.s.позже, но симулятор не распознает «позже», также получены ошибки при использовании import org.arl.unet.планировщик.

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

  1. Другой вопрос: помимо потребления энергии при передаче и приеме, наш модем потребляет 2,5 мА от источника питания 5 В во время прослушивания начала пакета и может переходить в спящий режим и потреблять около 0,24 мА от источника питания 5 В, с возможностью пробуждения и возврата в режим прослушивания через программируемое время точка. Итак, мой вопрос в том, есть ли способ учесть энергию, потребляемую при прослушивании в режиме ожидания и сне, в простой энергетической модели? Мы реализовали очень простую модель энергопотребления, что-то вроде следующего (нашел этот пример в stackoverflow):

    класс MyHalfDuplexModem расширяет HalfDuplexModem {

    плавающая энергия = 1000

    @Переопределить логическую отправку (сообщение m) { если (m экземпляров TxFrameNtf) энергия — = 10
    , если (m экземпляров RxFrameNtf) энергия — = 1
    возврат super.send(m) }

    }

Как добавить энергию, потребляемую при прослушивании в режиме ожидания и в режиме сна, в приведенный выше код? нужно ли нам использовать что-то вроде WakeFromSleepNtf ()

Спасибо и любая помощь очень ценится. Marwa

Ответ №1:

Служба планировщика обычно зависит от оборудования, поскольку требуется взаимодействие с конкретным одноплатным компьютером (SBC), чтобы перевести его в состояние сна и разрешить его пробуждение. На модемах это обычно агент драйвера модема.

HalfDuplexModem Моделируемый модем не предоставляет эту услугу, и поэтому он не будет работать из коробки. Поскольку HalfDuplexModem в него не встроена модель энергопотребления, «сон» для него мало что значит. Если бы вы хотели смоделировать сети, в которых узлы спали и потребляли меньше энергии во время сна, можно было бы расширить HalfDuplexModem для реализации службы ПЛАНИРОВЩИКА. Сервис довольно простой, всего 4 сообщения ( AddScheduledSleepReq , RemoveScheduledSleepReq , GetSleepScheduleReq и WakeFromSleepNtf ). Ваша реализация может отслеживать энергию, используемую каждым узлом, в зависимости от того, находится ли он в режиме сна, прослушивания или передачи, поскольку вы можете отслеживать расписание сна и, следовательно, знать, сколько времени узел бодрствовал / спал.

Команды addsleep и т. showsleep Д. — Это просто удобные ярлыки в расширении оболочки, Которые используют вышеуказанные 4 сообщения для выполнения фактической работы. Они включаются в командной оболочке путем загрузки SchedulerShellExt , и вы можете просто использовать сообщения непосредственно от агентов или в сценариях моделирования.

Комментарии:

1. Спасибо, Мандар. Да, служба ПЛАНИРОВЩИКА выглядит просто, я думаю, понимаю, как она работает, и как использовать ее сообщения, и время сна и т. Д. Тем не менее, я попытался расширить HalfDuplexModem, чтобы включить его службы, но я не смог найти подходящий метод для переопределения. Например: @Override Message ProcessRequest (сообщение msg) работает только для запроса дейтаграммы, нет? Я пытался использовать его, но он не работает для сообщений планировщика. Кажется, мне нужно внедрять методы и параметры с нуля? Будет здорово, если вы предложите способы расширения модема, какие методы я должен рассмотреть. Большое спасибо

2. Для UnetAgents processRequest() вызывается для каждого сообщения, которое имеет performative REQUEST (поэтому следует вызывать AddScheduledSleepReq , RemoveScheduledSleepReq и GetSleepScheduleReq ). Вызываются перформативные QUERY вызовы processQuery() и для всех других сообщений processMessage() .