modelRoomAgent

Extends from BaseClasses.PartialAgent.

Information

Overview

  • This model is a room-agent which controls the temperature inside the room.
  • It is based on communication via UDP and logic implemented with the help of the StateGraph Modelica library.
  • It is used together with a broker-agent and at least one producer-agent.

Concept

The room agent observes the temperature inside a room. If the temperature crosses a certain treshhold and a pre-defined sample-time has elapsed, a cooling or heating request is calculated and send to a broker agent. The broker-agent ensures that the requested heat is produced. The logic is implemented with the help of the StateGraph library. Communication is realized with the help of the DeviceDriver library and follows the language standards for multi-agent-systems set by the FIPA to the highest possible extend for Modelica models. The following figure shows the behaviour of the roomagent. For further information please refer to the first reference.

Room agent

References

  • Roozbeh Sangi, Felix Bünning, Johannes Fütterer, Dirk Müller. A Platform for the Agent-based Control of HVAC Systems. Modelica Conference, 2017, Prague, Czech Republic.
  • FIPA ACL Message Structure Specification
  • FIPA Communicative Act Library Specification
  • Felix Bünning, Roozbeh Sangi, Dirk Müller. A Modelica library for agent-based control of building HVAC systems. Applied Energy, 193:52-59, 2017.

Example Results

Parameters

TypeNameDefaultDescription
Integername (from PartialAgent)Name of the agent (five-digit number, eg. 10001)
BooleanusePoke (from PartialAgent)falseUse Modelica internal communication for inbox update
RealsampleRate (from PartialAgent)5Sample time for inbox update (used if usePoke=false)
RealT_set273.15 + 20Set temperature by the user
Integerbroker10003Name of the corresponding broker-agent
RealstartTime0Time when the agent makes first request
Realthreshold2Temperature threshold difference when agent gets active
RealsampleTriggerTime60Time difference between two calls for adjustment [s]
RealP50Proportional factor for load estimation
RealKd30000Derivative factor for load estimation
RealG1Gain for the load estimation

Connectors

TypeNameDefaultDescription
Modelica.Blocks.Interfaces.BooleanOutputsendOut (from PartialAgent)Turns true when the sending unit of the agent is active
Modelica.Blocks.Interfaces.RealInputTRoom temperature

Components

TypeNameDefaultDescription
HVACAgentBasedControl.Agents.MessageNotificationmessageNotification (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.Packagerpackager (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddRealcontent (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetRealget_content (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Communication.UDPReceiveuDPReceive_adapted (from PartialAgent)
UDPSend_adapteduDPSend_adapted (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddIntegersender (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddIntegerreceiver (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddIntegerreply_to (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddRealontology (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetIntegergetperformative (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetIntegergetsender (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetIntegergetreceiver (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetIntegergetreply_to (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetRealgetontology (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddIntegerperformative (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetIntegergetMessageID (from PartialAgent)
Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.AddIntegermessageID (from PartialAgent)
Modelica.StateGraph.StateGraphRootstateGraphRoot (from PartialAgent)
SendSamplesendSample (from PartialAgent)
Modelica.Blocks.Math.Addadd
Modelica.Blocks.Logical.GreaterThresholdT_too_high
Modelica.Blocks.Math.Addadd1
Modelica.Blocks.Logical.GreaterThresholdT_too_low
Modelica.Blocks.Sources.SampleTriggersampleTrigger
Modelica.Blocks.Logical.Oror1
Modelica.Blocks.Logical.AndactionTrigger
Modelica.StateGraph.InitialStepwaiting
Modelica.StateGraph.TransitionWithSignalnewMessage
Modelica.Blocks.Math.IntegerChangeintegerChange
Modelica.StateGraph.TransitionWithSignaltransitionWithSignal
Modelica.StateGraph.StepcomposeRequest
Modelica.StateGraph.TransitionrequestNoted
Modelica.StateGraph.StepWithSignalsendRequest
Modelica.StateGraph.TransitionWithSignalnewMessage1confirmation
Modelica.StateGraph.Transitionrepeat
Modelica.Blocks.Sources.BooleanExpressionbooleanExpression1
Modelica.StateGraph.Stepstate
Modelica.StateGraph.TransitionWithSignalrightMessageconfirmation
Modelica.StateGraph.Transitionrepeat1
Modelica.StateGraph.StepcomposeNotUnderstood
Modelica.StateGraph.Transitiontransition2
Modelica.StateGraph.StepWithSignalsendNotUnderstood
Modelica.StateGraph.Transitiontransition4
Modelica.Blocks.Logical.Oror2
Modelica.StateGraph.StepcomposeConfirm
Modelica.StateGraph.StepWithSignalsendConfirm
Modelica.StateGraph.TransitionconfirmNoted
Modelica.StateGraph.Transitiontransition1
Modelica.Blocks.Logical.Oror3
Modelica.StateGraph.StepwaitForInform
Modelica.StateGraph.TransitionWithSignalrightMessage1confirmation
Modelica.Blocks.Sources.BooleanExpressionbooleanExpression2
Modelica.Blocks.Continuous.Derivativederivative
Modelica.StateGraph.Transitionreset

Revisions

  • December 2016, by Roozbeh Sangi:
    revised
  • December 2016, by Felix Bünning: Changed some variables to Integer type in order to avoid warnings caused by using the "==" operator
  • November 2016, by Felix Bünning: Made coefficients for load estimation accessible for the user
  • October 2015, by Felix Bünning: Developed and implemented