Welcome to i.CanDrawIt® graphical programming
for Building Automation and Facility Management.

Connections to physical hardware, inputs and outputs, are made by placing input and output function blocks. These function blocks are connected just like any other function block. The code inside this function block knows that it needs to read or write registers, and the registers are associated with physical I/O points as determined by the hardware.

You designate which I/O point the function block applies to by setting function block parameters. Function blocks specified as INT (integer) will default to BI 1 (Binary Input #1). Function blocks without the INT designation produce floating point data, and default to AI 1 (Analog Input #1).

I/O objects recognized by the i.CanDrawIt code compiler include the following:

BACnet Object Designations
AI n Analog Input 1..n, floating point
AO n Analog Output 1..n, floating point
AV n Analog Value 1..n, floating point
BI n Binary Input 1..n, integer (boolean)
BO n Binary Output 1..n, integer (boolean)
BV n Binary Value 1..n, integer (boolean)
MI n Multi-State Input 1..n, integer
MO n Multi-State Output 1..n, integer
MV n Multi-State Value 1..n, integer
Modbus Object Designations
REG x Registers 1..999 are integer in most Control Solutions devices
REG y Register pairs starting at 1001 are floating point in most Control Solutions devices

Designators having any of the character strings noted above will be interpreted as indicated. A designator consisting of just a number with no alpha designator in front of it will be interpreted as exactly that number with no object translation. Object translation for BACnet objects consists of multiplying the object type x1000 and adding the object instance. Therefore AO 1 translates into register 2001, which is interpreted as AO 1 by object mapping in Control Solutions hardware devices.

It is important to note that you can use any of the above designations with any input or output function block symbol. Whether that actually works in hardware will depend on the hardware. Modbus holding registers are always read/write registers. Analog input objects on a BACnet device are generally read-only. Results of an attempt to write to an AI may depend on whether the AI object is "out of service".

The objects indicated as "integer (boolean)" above will be treated as integer by math functions, but as boolean by the I/O object. The boolean interpretation of the integer data is usually zero versus non-zero for false versus true. However, logic functions are bitwise functions. If integer data values other than 1 and 0 are used, the user must be cautious about the interpretation of the result.

The following table defines the overall register numbering scheme for PL/i register access in a BACnet environment. This is a global map definition. Actual available objects will vary by product model. The following table is provided for reference only. You do not need to concern yourself with these numbers when you use the alphanumeric designations indicated in the table above.

Register numbers for PL/i access:
Register = Object_type x 1000 + Instance
Object Types: 
analog-input 0
analog-output 1
analog-value 2
binary-input 3
binary-output 4
binary-value 5
multi-state-input 13
multi-state-output 14
multi-state-value 19
Registers accessed using getf/setf (float/real)
Analog Input 0001-0999
Analog Output 1001-1999
Analog Value 2001-2999
Registers accessed using geti/seti (integer/enumerated)
Binary Input 3001-3999
Binary Output 4001-4999
Binary Value 5001-5999
Multistate Input 13001-13999
Multistate Output 14001-14999
Multistate Value 19001-19999