...
Controller with 8 in/outputs
Controller with 16 in/outputs
Controller with 32 in/outputs
Writing code
Controller syntax
Syntax
In these controllers, code can be written to translate certain controls.
...
assignment statements
if and if-else statements (if, else if, else)
switch statements
comments : single line (//) and multiline (/*...*/)
operators :
increment operators (++ and --)
unary operators (- and !)
binary operators : power (^), multiply (*), modulo (%), divide (/), sum (+), min (-)
ternary operator (a = x ? b : x) see https://www.freecodecamp.org/news/c-ternary-operator/
Example: Switch command
If Switch = 1 : Output= a , else output = b
Code Block Output = (Switch ==1) ? a: b;
conditional operators (|| and &&)
comparison (<=', >=, >, <, ==, '!=)
mathematical functions :
exp
,ln
,sin
,cos
,tan
,sqrt
,min(x1, x2)
,max(x1, x2)
,abs
,floor
,ceil
,sgn
(signum)
Input/output assignment
The controller needs to interact with the hydronic system. For this purpose, we can feed inputs to the controller and can give outputs to the system.
To assign a variable to an input in the programmeable controller, you can use: parameterName=in1;
Following the same logic, you can provide outputs as: out1=parameterName;
Initialisation
When using a variable that has not been defined before, the controller will equal the new variable to 0. This functionality can be used for initialisation purposes with the following topology:
...
time : the time variable of the simulation
timestep: the timestep of the simulation
Example code
here is an example with code : example.txt
Note that the inspiration library is filled with written code like this, so be sure to look here for inspiration.
Most Common errors
A non-parseable code will cause the simulation to fail. Below, you can find a list of the most common errors when writing code in the programmeable controller:
No semicolon ( ; ) at the end of a line
Incorrect usage of ‘==’ (for if-statement) and '='
Not closing { } or ( ) brackets properly
Instead of having semicolon at the front of the comment, accidentally put // ;
Usage of an underscore ( _ ) is not allowed in parameter naming
Spelling mistake in parameter names. Code is case-sensitive