Îïåðàòîðû 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, äðóãèå ñòàíäàðòíûå îïåðàòîðû ìîæíî íàéòè â ãëàâå “Ñòàíäàðòíûå îïåðàòîðû, ôóíêöèîíàëüíûå áëîêè è ôóíêöèè”.
Îïåðàöèÿ: çàãðóæàåò çíà÷åíèå â òåêóùèé ðåçóëüòàò
Äîïóñòèìûå ìîäèôèêàòîðû: 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 ) *)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: çàïîìèíàåò òåêóùèé ðåçóëüòàò â ïåðåìåííîé
Òåêóùèé ðåçóëüòàò ýòèì îïåðàòîðîì íå èçìåíÿåòñÿ
Äîïóñòèìûå ìîäèôèêàòîðû: 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 *)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: çàïîìèíàåò TRUE â áóëåâñêîé ïåðåìåííîé, åñëè òåêóùèé ðåçóëüòàò èìååò çíà÷åíèå TRUE. Íèêàêèõ îïåðàöèé íå âûïîëíÿåòñÿ, åñëè òåêóùèé ðåçóëüòàò ðàâåí FALSE. Òåêóùèé ðåçóëüòàò íå ìîäèôèöèðóåòñÿ.
Äîïóñòèìûå ìîäèôèêàòîðû: (íåò)
Îïåðàíä: âíóòðåííÿÿ èëè âûõîäíàÿ áóëåâñêàÿ ïåðåìåííàÿ
Ïðèìåð:
(* ÏÐÈÌÅÐ S ÎÏÅÐÀÖÈÉ *)
SETex: LD true (*òåêóùèé ðåçóëüòàò := TRUE *)
S boo_var1 (* boo_var1 := TRUE *)
(*òåêóùèé ðåçóëüòàò íå èçìåíÿåòñÿ *)
LD false (*òåêóùèé ðåçóëüòàò := FALSE *)
S boo_var1 (* íè÷åãî íå äåëàòü - boo_var1 íå èçìåíÿåòñÿ *)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: çàïîìèíàåò 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 íå èçìåíÿåòñÿ *)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: ïðûãàåò íà óêàçàííóþ ìåòêó
Äîïóñòèìûå ìîäèôèêàòîðû: 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 ïðîãðàììû*)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: çàêàí÷èâàåò òåêóùèé ñïèñîê èíñòðóêöèé. Åñëè 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 *)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: âûïîëíÿåò çàäåðæàííóþ îïåðàöèþ. Çàäåðæàííàÿ îïåðàöèÿ îáîçíà÷àåòñÿ “(“
Äîïóñòèìûå ìîäèôèêàòîðû: (íåò)
Îïåðàíä: (íåò)
Ïðèìåð:
(* Ñëåäóþùàÿ ïðîãðàììà èñïîëüçóåò çàäåðæàííûå îïåðàöèè: *)
(* 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 *)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Ïîäïðîãðàììà èëè ôóíêöèÿ ( íàïèñàííàÿ íà ëþáîì èç ÿçûêîâ 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 (* âîçâðàòèòü òåêóùèé ðåçóëüòàò â âûçûâàþùóþ ïðîãðàììó*)
![](image/a-11-ispolzovanie-redaktora-soedinenij-v-v_1.gif)
Îïåðàöèÿ: âûçûâàåò ôóíêöèîíàëüíûé áëîê
Äîïóñòèìûå ìîäèôèêàòîðû: 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 ýêâèâàëåíò : *)
![](image/index-image364.gif)
Ïðèìåð 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 ýêâèâàëåíò : *)
![](image/index-image365.gif)