IL
IL:
|
|
|
|
|
|
|
|
|
| LD
|
| N
|
| ,
|
|
|
|
| ST
|
| N
|
|
|
|
|
|
| S
R
|
|
|
| BOO
BOO
|
| TRUE
FALSE
|
|
| AND
&
OR
XOR
|
| N (
N (
N (
N (
|
| BOO
BOO
BOO
BOO
|
|
|
|
| ADD
SUB
MUL
DIV
|
| (
(
(
(
|
| ,
,
,
,
|
|
|
|
| GT
GE
EQ
LE
LT
NE
|
| (
(
(
(
(
(
|
| ,
,
,
,
,
,
|
| : >
: >=
: =
: <=
: <
: <>
|
|
| CAL
JMP
RET
|
| C N
C N
C N
|
|
|
|
|
|
| )
|
|
|
|
|
|
|
|
, IL, , .
LD
:
: N
: , ,
:
(* LD *)
LDex: LD false (* := FALSE boolean constant *)
LD true (* := TRUE boolean constant *)
LD 123 (* := integer constant *)
LD 123.1 (* := real constant *)
LD t#3ms (* := time constant *)
LD boo_var1 (* := boolean variable *)
LD ana_var1 (* := analog variable *)
LD tmr_var1 (* := timer variable *)
LDN boo_var2 (* := NOT ( boolean variable ) *)
ST
:
: N
:
:
(* ST *)
STboo: LD false
ST boo_var1 (* boo_var1 := FALSE *)
STN boo_var2 (* boo_var2 := TRUE *)
STana: LD 123
ST ana_var1 (* ana_var1 := 123 *)
STtmr: LD t#12s
ST tmr_var1 (* tmr_var1 := t#12s *)
S
: TRUE , TRUE. , FALSE. .
: ()
:
:
(* S *)
SETex: LD true (* := TRUE *)
S boo_var1 (* boo_var1 := TRUE *)
(* *)
LD false (* := FALSE *)
S boo_var1 (* - boo_var1 *)
R
: FALSE TRUE. FALSE. .
: ()
:
:
(* R *)
RESETex: LD true (* := TRUE *)
R boo_var1 (* boo_var1 := FALSE *)
(* *)
ST boo_var2 (* boo_var2 := TRUE *)
LD false (* := FALSE *)
R boo_var1 (* - boo_var1 *)
JMP
:
: C N
: IL
:
(* (0 1 2) *)
(* 3 . " 0" *)
(* JMPC *)
JMPex: LD selector (* selector is 0 or 1 or 2 *)
BOO (* boolean *)
JMPC test1 (* if selector = 0 then *)
LD true
ST bo0 (* bo0 := true *)
JMP JMPend (* *)
test1: LD selector
SUB 1 (* selector: 0 1 *)
BOO (* boolean *)
JMPC test2 (* if selector = 0 then *)
LD true
ST bo1 (* bo1 := true *)
JMP JMPend (* *)
test2: LD true (* *)
ST bo2 (* bo2 := true *)
JMP end: (* IL *)
RET
: . IL - , .
: C N
: ()
:
(* (0 1 2) *)
(* 3 . " 0" *)
(* the JMPC operator *)
JMPex: LD selector (* selector 0 1 2 *)
BOO (* boolean *)
JMPC test1 (* if selector = 0 then *)
LD true
ST bo0 (* bo0 := true *)
RET (* end - return 0 *)
(* selector *)
test1: LD selector
SUB 1 (* selector 0 1 *)
BOO (* boolean *)
JMPC test2 (* if selector = 0 then *)
LD true
ST bo1 (* bo1 := true *)
LD 1 (* selector *)
RET (* end - return 1 *)
(* *)
test2: RETNC (* selector *)
(* *)
LD true
ST bo2 (* bo2 := true *)
LD 2 (* selector *)
(* - 2 *)
)
: . (
: ()
: ()
:
(* : *)
(* res := a1 + (a2 * (a3 - a4) * a5) + a6; *)
Delayed: LD a1 (* result := a1; *)
ADD( a2 (* ADD - result := a2; *)
MUL( a3 (* MUL - result := a3; *)
SUB a4 (* result := a3 - a4; *)
) (* . MUL-result:=a2*(a3-a4); *)
MUL a5 (* result := a2 * (a3 - a4) * a5; *)
) (* ADD *)
(* result := a1 + (a2 * (a3 - a4) * a5); *)
ADD a6 (* result := a1 + (a2 * (a3 - a4) * a5) + a6; *)
ST res (* . res *)
( IL, ST, LD, FBD C) IL, .
: - IL
: ()
: .
:
(* : *)
Main: LD bi0
SUBPRO bi1,bi2 (* *)
ST result (* result := *)
GT vmax (* *)
RETC (* *)
LD result
MUL 1000 (* *)
TMR (* *)
ST tmval (* *)
(* 'SUBPRO' : *)
(* : in0, in1, in2 - *)
LD in2
ANA (* result = ana (in2); *)
MUL 2 (* result := 2*ana (in2); *)
ST temporary (* temporary := result *)
LD in1
ANA
ADD temporary (* result := 2*ana (in2) + ana (in1); *)
MUL 2 (* result := 4*ana (in2) + 2*ana (in1); *)
ST temporary (* temporary := result *)
LD in0
ANA
ADD temporary (* result := 4*ana (in2) + 2*ana (in1)+ana (in0); *)
ST SUBPRO (* *)
: CAL
:
: C N
: . LD/ST . .
1:
(* SR : SR1 - SR *)
LD auto_mode
AND start_cmd
ST SR1.set1
LD stop_cmd
ST SR1.reset
CAL SR1
LD SR1.Q1
ST command
(* FBD : *)
2
(* , R_TRIG1 - R_TRIG CTU1 - CTU*)
LD command
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ST CTU1.cu
LDN auto_mode
ST CTU1.reset
LD 100
ST CTU1.pv
CAL CTU1
LD CTU1.Q
ST overflow
LD CTU1.cv
ST result
(* FBD : *)