Programming
PL/i Program Simulator
and Debugger Tool (Free!)

Compile programs
Step line by line
Run to break point
Run until paused
Inspect or change variables
Inspect or change registers
Inspect/change while running

A series of tutorials on the PL/i language may be found starting here.

Take a closer look at the debugger here.

Control Solutions’ i.CanDoIt® PL/i control programming language is found in both our web based products and our low cost Modbus, BACnet and LonWorks programmable I/O nodes. Program capacity varies by model based on resources occupied by other features such as protocol stack.

Once compiled and running in simulation, you upload your compiled code to the non-web device using the configuration tool applicable to that device type. Those tools are also free, and available on our Downloads page.

You simply use your browser to upload your program to any of the web based products. You can load compiled code, and also load your source code and recompile resident on the device (certain models only).

PL/i Programming Language for i.CanDoIt

The PL/i programming language is simpler than C, but more structured than Basic. The objective in creating this language was to compile compact code that would run efficiently and safely as a virtual machine, like a very lean Java.

The AddMe III architecture is register based. Therefore a carefully written program will be portable to systems running on Modbus, LonWorks or BACnet networks with equivalent results.

A complete summary of PL/i syntax and grammar are included in the series of tutorials that starts here.

It's Free. What's the catch?

The only catch is that we want you to use our products. Some say if it's free, it can't be worth anything. That is not always the case. We licensed the same programming language technology utilized by some very large companies, and enlisted the help of a top scholar in the German National Research Center for Information Technolgy. This is simply our unorthodox idea of how to carry out a marketing campaign.

What does PL/i look like?

Most of any given program will look a lot like Basic. Referring to subroutines as "procedures" is borrowed from older languages like Pascal. The block structure is common to many languages, and setting the blocks apart with "begin..end" instead of {} is also borrowed from Pascal. In fact, if you are a Pascal programmar, you may recognize several similarities. We hope you won't miss ":=".

The simple test program shown here will ramp an analog output on AddMe III up and down from zero to near full scale. It got named "dimmer" because if we connect an LED across the output, we have an LED dimmer. This makes a good "my first program" exercise.

program dimmer

declare
myVar: int;

procedure turnon (setting: int)
declare
level: int;
begin
level = setting * 10;
seti (19, level);
delay (5);
end;

begin
while TRUE do
begin
for myVar = 0 to 20 turnon(myVar);
for myVar = 20 down to 0 turnon(myVar);
end;
end