News, views and tech tips delivered occasionally to your inbox.
Competitors: Will you accept our challenge?
To any competitor prepared to submit a sample program in their language:
We will post your sample and notes in the above comparison and provide a link to your website.
Conditions:
1. Your program must do exactly the same as our program above,
and may contain only the same 3 comments.
2. We must know the size of the object code, over and above any base operating environment
(i.e. the size of the final code less the size of a null program).
3. We will provide a link to any page on your website providing the website in our opinion
contains no disparaging comments about our product or this offer. The link will open in a new window.
4. You must provide a reciprocal link to a nominated page on our website.
5. Your controller, without added I/O modules, must be able to directly interface to industrial NPN and PNP sensors
and drive loads at 24V DC or AC at at least 250mA.
6. Your product must be available as a choice of standard (off the shelf) product or custom designs.
Standard product must include built in operator interface options.
Customization options must be available for quantities as low as 15 pieces. You must offer
fully customized designs for quantities down to 300 per year with an NRE cost of
typically less that $15K for a straight forward design.
7. We will reproduce your program as gif file (for graphic languages only) or as text.
If you submit a gif we will not edit it.
If you submit a text source we will convert it to the same font as the other examples. You are advised
to convert tabs to spaces and keep the listing width so it will fit without horizontal scrolling.
The following competitors have accepted our challenge since this was first posted May 7 2006:
The world's easiest controls programming language
We believe SPLat's programming language is the easiest in the world for
embedded OEM control applications. SPLat's language was originally devised, and
has evolved over time, with embedded machine control as its main
driver. The example below shows off just a few of the language features that
make SPLat so easy for control programming. Compared to C,
Basic and other general purpose computer languages, SPLat focusses on
those language elements that are important for programing controls,
which is very different to general computing. SPLat lets you express the
concepts of logic, sequence and time quickly and easily. Compared to
ladder, SPLat lets you tell the controller what to do,
rather than what to be (in ladder you emulate a circuit made up of
relays, timers etc, so in reality you are designing a circuit that will solve
the problem rather than simply solving the problem directly).
... You compare, you decide!
In the two side-by-side windows below you can compare the same program written
in several languages that are used for programming controls. Just click on the
language names to select.
*Statement list. Click for notes
* First button pressed (Sale of the Century) *
LD 0004
ANB 0507
LD 0504
AND 1004
ORL
OUT 0504
LD 0007
ANB 0504
LD 0507
AND 1004
ORL
OUT 0507
LD 0004
OR 0007
LD 1004
ANB T002
ORL
OUT 1004
LD 0504
OR 0507
TMR 002 #00040
LDB T002
AND 0507
OUT 1010
LDB T002
AND 0504
OUT 1009
;****** Push on/ Push off function ***
LD 0005
ANB 1006
AND 0512
OUT 1005
LD 0005
ANB 1006
OR 0512
ANB 1005
OUT 0512
LD 0005
OUT 1006
LD 0512
OUT 0505
;** Short pulse = ON, Long pulse = OFF **
LDB 0000
ANB 1008
AND 1001
OUT 1007
LDB 0000
OUT 1008
LD 0000
OUT 1001
LD 1007
ANB T000
SET 1003
LD 1007
AND T000
RES 1003
LD 0000
TMR 000 #00030
LD 1003
OUT 0500
END
ENDH
Trio BasicTM Click for notes
*** Prog Sale_Century: Run on Process 0
WHILE 1=1
WAIT UNTIL IN(8,9)=0
WAIT UNTIL IN(8,9)<>0
IF IN(8,9)=1 THEN
GOSUB set_10
ELSEIF IN(8,9)=2 THEN
GOSUB set_11
ENDIF
WEND
set_10:
OP(10,1):WA(1000):OP(10,0)
RETURN
set_11:
OP(11,1):WA(1000):OP(11,0)
RETURN
**** Prog Push_on_off: Run on Process 1
WHILE 1=1
IF IN(12,13)=1 AND allow_switch=1 THEN
OP(13,1)
allow_switch=0
ENDIF
IF IN(12,13)=3 AND allow_switch=1 THEN
OP(13,0)
allow_switch=0
ENDIF
IF IN(12)=0 THEN allow_switch=1
WEND
*** Prog Pulse_control: Run on Process 2
timing=0
WHILE 1=1
IF IN(14)=ON AND timing=0 THEN GOSUB start_timing
IF IN(14)=OFF AND timing=1 THEN GOSUB output_decision
WEND
start_timing:
t2=TICKS
timing=1
RETURN
output_decision:
IF t2-TICKS<=500 THEN OP(15,1)
IF t2-TICKS>500 THEN OP(15,0)
timing=0
RETURN