Tải bản đầy đủ (.pdf) (145 trang)

Bài giảng điều khiển logic và plc ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (10.97 MB, 145 trang )

1

Tun

Ni dung Giáo trình

BT, TN,…
1
Chng I: Khái nim v iu khin Logic
1.1 Khái nim v iu khin Logic
1.2 Mô hình hóa các h thng ri rc
1.2.1 i s Bool
1.2.2 Automat hu hn

2
1.2.3 Petri net
1.2.4 State Charts
1.2.5 StateFlow
1.2.6 GRAFCET

3
1.3 Chun IEC 61131 và các b điu khin lp trình
đc
1.3.1 PLC và ngôn ng lp trình theo chun
1.3.2 Các công c đt cu hình
1.3.3 n v t chc chng trình
1.3.4 Phng pháp cu hình đc bit
1.3.5 T chc PLCopen

4
Chng II: Mch logic t hp


2.1 nh ngha và phân loi
2.2 Tng hp mch logic t hp
2.2.1 Phng pháp đi s
2.2.2 Phng pháp ma trn Các nô
Làm bài tp
5 2.2.3 Phng pháp Quine Mc. Clusky
6
Chng III: Mch logic tun t
3.1 Khái nim c bn v mch logic tun t

7
3.2 Tng hp mch logic tun t
3.2.1 Phng pháp ma trn trng thái
Làm bài tp
8
3.2.1 Phng pháp ma trn trng thái (tip)
3.2.2 Phng pháp GRAFCET
Làm bài tp
2

9 3.2.2 Phng pháp GRAFCET Làm bài tp
10
Chng IV: Tng quan v PLC
4.1 Gii thiu v PLC
4.2 Cu trúc phn cng
4.3 Hot đng ca PLC
Làm thí nghim
11 4.4 Các lnh trong PLC Làm thí nghim
12
Chng V: K thut lp trình PLC

5.1 Thit k chng trình da vào lu đ
5.2 Thit k chng trình da vào trng thái

Làm bài tp và
thí nghim
13
5.3 K thut ghi dch
5.4 S dng biu đ chc nng tun t (SFC)

Làm bài tp và
thí nghim
14
Chng VI: Ghép ni và truyn thông vi PLC
6.1 Các thit b vào ra
Làm thí nghim
15
6.2 Ghép ni vi PLC
6.3 Truyn thông vi PLC


Chng VII: Mô hình hóa các s kin ri rc
7.1 FSM – Done
7.2 Petrinet - Done
7.3 State Charts & State Flow



3

CHNG 1: KHÁI NIM CHUNG V IU KHIN LOGIC

1.1 Khái nim v KLG
Mt h thng có th đc coi là mt t hp các b phn tng tác ln nhau,
đc t chc đ thc hin mt mc tiêu nào đó, thông thng là đ đt đc giá tr
gia tng - thông qua quá trình thay đi các tính cht vt lý, hóa hc hay sinh hc, sp
đt li v trí, trao đi thông tin – trên các loi nguyên liu thô, nng lng, bán thành
phm, sc lao đng – trong các điu kin môi trng nht đnh. Nu nh các quá trình
xy ra trong các điu kin nht đnh đu tuân theo nhng quy lut hóa lý hay sinh hc
ca chính nó thì đ đm bo kt qu ca quá trình là các sn phm mong mun ta có
th tác đng vào các điu kin này. Vic tác đng vào các điu kin đ quá trình xy
ra nh mong mun gi là điu khin.  thc hin vic điu khin cn phi theo dõi
các đi lng thay đi liên quan đn bn thân quá trình và các tham s th hin các
điu kin mà quá trình đang xy ra thông qua các thit b đo nh các sensor. Các kt
qu mong mun đc th hin nh các lng đt. Nh vy điu khin liên quan đn
vic tip nhn các giá tr lng đt, các giá tr ca các tham s, các giá tr liên quan
đn đi lng thay đi theo quá trình, x lý các thông tin này theo mt quy lut nào
đó, sau đó đa ra các tín hiu tác đng lên quá trình.
Nu theo dõi quá trình theo thi gian có th phân loi quá trình thành loi liên
tc và loi ri rc. Quá trình là liên tc nu có th xác đnh hoc mô t đc các đi
lng liên quan đn quá trình  mi đim theo thi gian, ví d quá trình thay đi nhit
đ, thay đi áp sut, các phn ng hóa hc, … Quá trình là ri rc nu ch có th bit
đc giá tr các đi lng liên quan đn quá trình  nhng thi đim nht đnh theo
thi gian hoc thm chí không bit đc thi đim xut hin ca chúng. Loi sau này
gi là các s kin. S kin ch cho thy s hin din ca chúng khi chúng xy ra.
 có th điu khin, khng ch đc các quá trình, mt vn đ quan trng là
có th có đc mô t toán hc ca chúng. S dng các công c toán hc đ mô t các
quá trình gi là mô hình hóa. ây chính là quá trình dùng t duy trìu tng đ mô t
các quá trình. Vi t duy trìu tng mt s quá trình có bn cht rt khác nhau li có
th đc mô t bi các mô hình ging nhau, do đó đc nghiên cu bng các công c
toán hc ging nhau.
Các quá trình liên tc có th đc mô t bi h phng trình vi phân. Nh phép tính

vi phân có th mô t đc s thay đi ca các đi lng quan tâm trong nhng khong
thi gian nh tùy ý. Các h thng liên tc là đi tng nghiên cu ca lý thuyt điu
khin t đng. c bit đi vi lp các h thng tuyn tính, đc mô t bi h phng
trình vi phân tuyn tính, các phng pháp và công c nghiên cu đã đc phát trin
và ng dng t lâu nay.
i vi các h thng ri rc, vi cm nhn ban đu, có th ngh rng vic mô t
và nghiên cu chúng s d dàng hn. Mt trong nhng cách tip cn ngây th nht đi
vi h thng ri rc là có th lit kê đc ht nhng đáp ng có kh nng xy ra. Ví
4

d mt chic qut đin thông thng có th  trng thái chy hoc dng. Qut có th
chy nu ta đóng công tc cp ngun đin cho đng c qut. Qut s dng nu ta ct
công tc cp đin cho đng c. Hình dung v chic qut s phc tp dn lên nu b
xung thêm nhng trng thái thc t khác. Ch đ chy có th cn phân bit thêm chy
 tc đ nào, đn gin nht có th là qut có ba cp tc đ, 1, 2, 3. Khi trong ch đ
chy có th có ch đ thay đi hng gió. Gia các cp tc đ c đnh có th có ch
đ chuyn gia tc đ này sang tc đ khác và ngc li đ phng theo ch đ gió t
nhiên, gây cm giác d chu. Nu hình dung chic qut này lp đt  mt v trí xa
ngi s dng hoc đây là mt chic qut đ to nên s thay đi áp sut không khí
trong mt dây chuyn công nghip s cn có mt b phn cm bin gió đ nhn bit
qut có thc s hot đng hay không khi công tc ngun đã đóng.  tránh b nh
hng khi đin áp li có s thay đi bt thng tín hiu t b cm bin gió (cm
bin áp sut không khí) ch thc s đc x lý sau mt khong thi gian nht đnh, ví
d sau 30s. Nhng bin đng nháy, mt đin áp ngun ngn 5 – 10s s không nh
hng gì đn trng thái hot đng ca qut. Rõ ràng là đ mô t h thng xác thc
hn, s lng các trng thái s tng lên nhanh chóng. Thc t, mt trong nhng khó
khn ln khi nghiên cu các h ri rc là s lng các trng thái quá ln, đn mc ch
cn lit kê ra chúng đã là không th, ngay c vi s tr giúp ca các máy tính hin đi.
Khái nim v điu khin logic (Logic Control) liên quan đn các h thng ri
rc, trong đó đáp ng ca quá trình ch có th bit đc  nhng thi đim nht đnh

theo thi gian hoc khi nhng s kin xy ra. Thi đim s kin xy ra có th hoàn
toàn không bit trc đc. áp ng ca h thng có th chu s nh hng ca tình
trng trc đó cng nh ca các s kin nên các h thng loi này còn gi là h phn
ng hay h tng tác (Reactive Systems). iu khin logic có th hiu là s la chn
hay s đa ra quyt đnh, trong nhng hoàn cnh nht đnh, trong nhng điu kin
nht đnh, cách tác đng vào quá trình đ có đc đáp ng nh mong mun.
Trong thc t nhng tác đng vào các h ri rc có phm vi rt rng, đt ra nhng vn
đ cn gii quyt cho quá trình điu khin, có th k ra sau đây:
- H thng có th phi  trong các ch đ làm vic khác nhau, tuân theo lnh
điu khin t bên ngoài. Ch đ đn gin nht có th thy là chy (Start), dng
(Stop).
- H thng có th phi chuyn t ch đ này sang ch đ khác theo mt trình t
nht đnh, xác đnh bi mt s điu kin nht đnh. Cách thc hot đng này rt
ph bin đi vi các quá trình công nghip. Ví d đ khi đng mt dây
chuyn công ngh luôn đòi hi nhng trt t cht ch, b phn nào phi chy
trc, b phn nào phi chy sau, cng nh tuân th quá trình tng tc theo quy
lut nht đnh. iu tng t cng xy khi cn dng dây chuyn li.
- m bo quá trình xy ra theo các trình t v thi gian nht đnh. m bo tính
đng b là ví d v nhim v kiu này.
5

- Tng tác gia các b phn. Trong mt h thng các b phn có tng tác ln
nhau, ch đ hot đng  khâu này có th to ra nhng điu kin nht đnh quy
đnh hot đng ca các b phn khác. m bo nhng mi quan h này trong
các h thng phân tán, kích c ln là mt nhim v không h d dàng.
- Phn ng tc thi trc mt s s kin. S kin có th tham gia vào các hot
đng bình thng, ví d nh mt chuyn đng đn mt công tc cui hành
trình, cn phi dng li hoc chuyn đng ngc li, lnh điu khin đn khi
mt nút bm chc nng nào đó tác đng, … S kin thng tham gia đm bo
an toàn cho quá trình nh khi bánh rng truyn chuyn đng b v, vt l thâm

nhp khu vc nguy him, hoc can thip tc thi ca ngi vn hành n nút
dng khn cp khi thy có hin tng bt thng.
iu khin logic đc nghiên cu trong nhiu lnh vc:
- K thut tính toán (Computer Science);
- Lp trình (Programming);
- Mô phng (Simulation);
- Truyn thông (Communication);
- Các h thng điu khin công nghip (Industrial Control).
 đây s ch quan tâm đn nhng vn đ ca điu khin logic trong các h thng điu
khin công nghip, trong đó ngi k s cn thit k h thng điu khin đ đm bo
quá trình xy theo đúng quy trình công ngh yêu cu, hot đng an toàn, tin cy, vi
hiu qu cao nht. Tính hiu qu đc th hin bi s kt hp mt cách tit kim h
thng trang thit b trong khi đm bo đc xác sut gia nhng ln dng máy nh
(Mean Time Between Failures), máy móc d vn hành, d sa cha, tit kim nng
lng, … Nhng thc đo hiu qu ca h thng thit b máy móc có th không d
đánh giá ngay t khâu thit k ban đu nhng có tính đnh hng cho ngi k s khi
tip cn các vn đ đi vi mt h thng điu khin công nghip.
Nhim v thit k mt h thng điu khin logic tuân theo các bc ging nh các
nhim v thit k bt k nào, đó là:
1. Phân tích quá trình đ làm rõ các yêu cu v công ngh mong mun;
2. Trên c s các yêu cu công ngh mong mun cn mô t đc h thng
bng ngôn ng k s phù hp. Ngôn ng k s  đây đc hiu là mt công c mô t
đc thù nào đó mà da trên kt qu mô t h thng, gi là mô hình, có th chuyn mô
hình này sang dng ng dng đc thông qua các thit b phn cng cùng vi các
phn mm cn thit;
3. Mô phng h thng. Vi nhng h thng phc tp hoc quan trng không
th d dàng xây dng ngay các thit b th nghim, có th là do quá đt tin hoc quá
6

nguy him trong th nghim. Các công c mô phng trên máy tính ngày nay cho phép

th nghim trên mô hình gn vi các đc đim thc t, t đó có đc nhng đc tính
ca h thng cn quan tâm.
4. Trin khai h thng điu khin trên các thit b thc. Quá trình này ngày
nay thng đi cùng vi vic thit k phn cng và xây dng các phn mm.
Trong quá trình thit k cn phân bit đc thù ca các phng pháp k s vi
các phng pháp nghiên cu c bn khác. Phng pháp k s nht thit phi đi đn
đc các ng dng mà không nht thit phi đc gii thích ngn ngun bng các suy
lun cht ch, nh trong t duy kiu toán hc.
1.2 Mô hình hóa các h thng ri rc
Mô t các h thng ri rc t ra phc tp hn nhiu so vi các h thng liên
tc. Mc đ phc tp th hin  ch ta có th ri rc hóa các quá trình đn mc đ
nào.  mc đ tip cn ban đu quá trình có th ch phân chia ra theo mt vài ch đ
làm vic, ví d nh chy và dng nh vi chic qut đã nói đn trên đây. Sau đó quá
trình ri rc có th li tip tc đ phn ánh thc t mt cách chi tit hn. Gia các
trng thái làm vic li có th có mi quan h vi nhau, có th xy ra đng thi hoc
theo mt trt t nht đnh nào đó. Khi s lng các trng thái nhiu lên cùng vi các
mi quan h gia chúng, rõ ràng vic xác đnh đc các đc tính, các tính cht ca h
thng tr nên khó khn hn nhiu. Nu nh mc đích ca vic mô hình hóa h thng
là đ suy lun ra đc, đoán trc đc các đáp ng ca h thng thì vic đa ra quá
nhiu các kh nng đáp ng xy ra cng không giúp ích đc gì nhiu cho quá trình
thit k h thng điu khin.
1.1.1 i s Bool
Mt trong nhng công c toán hc có c s đy đ nht đã đc nghiên cu k
lng là đi s Bool, theo tên ca nhà toán hc gia th k XIX Gorge Boole, hay còn
gi là đi s logic [1]. Trong đi s Bool khái nim trìu tng đa ra có dng đn gin
nht là coi s kin ch có th là có hoc không, tn ti hoc không tn ti, đúng hoc
sai. Khái nim đn gin đúng hoc sai đc th hin bng hai ch s 1 và 0 to nên c
s h đm c s 2, bin tt c các phép toán s hc c bn ch còn li là phép cng.
V mt vt lý đúng hay sai có th đc thc hin bng mt mch đin đóng hay m
hay vic to nên mc đin áp gia 0 – 5 V. Các khóa bán dn dùng tranzito có th d

dàng thc hin đc các quá trình vt lý này đã to nên cuc cách mng ln là s ra
đi ca các thit b đin t s, sau đó là máy tính đin t mà nh hng ca chúng đn
mi mt đi sng, kinh t, k thut thì mi ngi đu bit.
Mc dù da trên khái nim c bn nht là đúng hoc sai, 0 hoc 1, đi s Bool
có kh nng mô t hàng lot các quá trình thc t. Các mi quan h logic phc tp nh
7

s la chn các tác đng cn thit trong mt t hp rt ln các tín hiu đu vào th
hin qua các hàm logic. Các công c phân tích ca đi s Bool cho phép ti thiu hóa
các phn t logic cn thit đ xây dng nên các b điu khin logic hu hiu là c s
cho nhng ng dng thc t ca lý thuyt này.
i s Bool là c s đ xây dng nên các mch đin tính toán, các vi mch
logic đ phc hp cao (Complex Programmable Logic Device – CPLD) hay các mch
t hp logic có th lp trình đc (Flexible Programmable Gate Array – FPGA), ngày
càng đc ng dng rng rãi.
Tuy nhiên trìu tng hóa đn mc coi mt cái gì đó ch là đúng hoc sai s là
quá khiên cng khi mô t các quá trình thc t hoc s dn đn phi phân chia quá
trình ra quá nhiu mc đ chi tit đn mc không th phân tích ni.  bù đp nhng
khim khuyt này lnh vc đi s logic đã phát trin lên các hng chuyên sâu mi là
logic m (Fuzzy Logic) và mng nron. Các bc phát trin cao hn ca logic đã t ra
có nhng ng dng thc t quan trng và cn đn nhng nghiên cu chuyên sâu,
ngoài phm vi mun đ cp đn  đây.
Vi s phát trin ca k thut máy tính con ngi đã có nhng công c hu hiu khác
đ mô t mt cách trìu tng nhng quá trình thc t mà không phi da trên t duy
kiu toán hc. ó là nhng công c t duy bng ngôn ng hay bng hình nh.  đây
mun nói đn các công c đ mô hình hóa các quá trình mt cách trc giác thông qua
các loi đ th.
1.1.2 Automat hu hn (Finite State Machine - FSM)
Automat hu hn hay là máy trng thái hu hn dùng ngôn ng hình nh, di
dng đ th đ mô t các quá trình [2]. Các trng thái (state), th hin di dng đ th

là mt hình khép kín, ch nht hay tròn, có th gi chung là qu bóng. Ni gia các
trng thái là các mi tên ch kh nng chuyn t bc này sang bc khác
(Transition).  th này đc gi là đ th trng thái (State graph). Mi mi tên ng
vi mt điu kin logic cn kim tra hay là các tín hiu đu vào. FMS hot đng bt
đu t mt trng thái ban đu, qua các bc chuyn ph thuc vào các điu kin logic
có cho phép hay không, đn mt trng thái bt k nào đó nu có th. Nhng trng thái
có th đn đc t trng thái ban đu trong đ th gi là trng thái đc phép. FMS có
th đa ra tác đng đu ra ph thuc vào các đu vào và trng thái hin ti. Nu đánh
s các trng thái và gán cho các điu kin logic các mc logic 0,1, có th biu din
FMS di dng bng, rt thun li cho biu din di dng ký t, có th chuyn t
môi trng son tho này sang môi trng khác mt cách d dàng.
8


Hình Error! No text of specified style in document 1 Ví d v FSM mô hình
b điu khin thang máy.
Ví d FSM cho trên hình 1.1. Gi s có b điu khin thang máy, ch có hai
tng, tng 1: First; và tng ngm: Floor. Có hai lnh chuyn đng, lên: Up; và xung:
Down. B điu khin có hai đèn ch th, đèn đ ch tng ngm: Red; và đèn xanh ch
tng 1: Green. Mi đèn s sáng khi thang  tng tng ng.  th trên hình 1.1 gm
hai qu bóng ch hai trng thái Floor và First. Tín hiu đu vào là hai lnh Up, Down.
Hành đng cn thc hin khi  các trng thái là làm sáng đèn tng ng và tt đèn
kia.  mi thi đim b điu khin s theo dõi tín hiu đu vào và thc hin bt, tt
đèn nh mong mun.
Nu coi đu vào: Up = 1; Down = 0;
Trng thái: Floor = 0; First = 1;
èn (tín hiu ra): On = 1; Off = 0,
Có th lp bng trng thái nh sau:
Bng Error! No text of specified style in document 1 Bng trng thái ca
FSM trên hình 1.1.

Trng thái u vào Trng thái tip
theo
èn đ
Red
èn xanh
Green
0 0 0 1 0
0 1 1 0 1
1 0 0 1 0
1 1 1 0 1

FSM có th mô t h thng mt cách hu hiu, và đc ng dng trong thit k
các mch đin t s, các th tc truyn thông [3]. Các phn mm thit k h thng s
ngày nay cho phép khai báo các FMS phc tp và t đng hóa quá trình chuyn t mô
9

hình sang ng dng trên mch đin t rt thun tin. Trong các h thng t đng hóa
phc tp State graph rt hay đc dùng, có th không phi đ thit k mà là đ mô t
hot đng và các tng tác gia các b phn ca h thng.
Mc dù FSM có công c toán hc c s là lý thuyt đ th, nó cng t ra còn
nhiu hn ch, đó là mi trng thái đc coi là không chia nh ra đc na, dn đn
s trng thái có th là rt ln cng nh là các bc chuyn gia chúng.
1.1.3 Petri Net
Petri Net, đc phát minh bi Carl Adam Petri nm 1939 dùng đ mô t các
quá trình hóa hc, là mt ngôn ng toán hc mô hình hóa cho các h thng phân tán
[7]. Petri Net là mt đ th có hng, trong đó mi nt ca đ th th hin bc
chuyn (transition, các s kin có th xy ra), ký hiu bng mt gch đng, và các v
trí (ngha là các điu kin), ký hiu bng vòng tròn nh. Nhng cung có hng, ký
hiu bng các mi tên, ni các nt vi các v trí và ngc li, th hin các v trí đã
chun b các điu kin cho các bc chuyn xy ra. Các cung không bao gi ni gia

cùng các v trí cng nh cùng các bc chuyn.
Các cung ni t v trí đn bc chuyn gi là cung đu vào. Các cung ni bc
chuyn vi v trí gi là các cung đu ra.
Ti các v trí có mt s lng các token nào đó. S phân b các token ti các v
trí gi là s đánh du. Bc chuyn s xy ra nu có token  tt c các cung đu vào.
Khi chuyn các token s b đa sang đu cui ca tt c các cung đu ra. Khi có kh
nng chuyn, tt c các bc chuyn đu có kh nng chuyn nh nhau, tuy nhiên
không th bit là cái nào s chuyn vì mi ln ch có mt token đc chuyn đi. Vì
các token có th phân b  các v trí khác nhau, thm trí nhiu token ti mt v trí, nên
do tính không th bit trc ca mô hình PetriNet mô hình này có th mô t rt tt
tình trng tranh chp (concurrent) ca h thng phân tán.

Hình Error! No text of specified style in document 2 Ví d v Petri Net.
Ging nh các ngôn ng dùng hình nh khác Petri Net cho phép mô t bng đ
th các quá trình nhy cp, bao gm la chn, suy lun và các hot đng tranh chp.
10

Petri Net có đnh ngha toán hc chính xác cho các ng ngha ca nó và có nn tng lý
thuyt đy đ đ phân tích nó.
1.1.4 Statecharts và stateflows
o Statecharts
Statecharts m rng kh nng ca FSM do David Harel đa ra trong nhng
nm 1980 và công b 1987 [4, 5], có kh nng mô t nhng h thng ri rc kiu phn
ng theo s kin phc tp nh h tính toán nhiu CPU, các th tc truyn thông và
các h điu khin đin t trong t đng hóa. Statecharts s dng FSM c bn nhng
b xung thêm ba khái nim c bn, đó là phân cp, tranh chp và qung bá truyn
thông. Nh đó Statecharts vn gi nguyên đc nhng u đim do tính trc giác ca
FSM mang li nhng m rng kh nng din t vi các mc đ chi tit khác nhau,
làm cho đc tính ca nhng h rt ln đc mô t mt cách d hiu và qun lý đc.
Khi s dng công c đ ha máy tính Statecharts có th tr thành mt môi trng mô

t đng riêng, trong đó có th phân chia h thng thành các b phn chc nng và các
đc tính dòng s liu liên quan đn mi b phn và xem xét đc tng tác gia các
b phn vi nhau.
Ví d v Statecharts cho trên hình 1.2 v ch đ ca đng h bm gi. Trong
ch đ bm gi ta mun đng h ch th thi gian theo phút, chính xác đn phn trm
giây, di dng: mm:ss:cc. Ch đ bm gi có th chy lp li (Lap) hoc ch bm gi
mt ln (Lap_stop).  th gm hai trng thái Stop (dng) và Run (chy). Trong Stop
có hai trng thái con là Reset (xóa ht) và Lap_stop (dng vòng lp). Trong trng thái
Run có hai trng thái con là Running và Lap, ngoài ra còn cha mt đ th trng thái
TIC thc hin vic đm gi chính xác đn phn trm giây (cent). Các trng thái đc
kích hot nh nút bm đt ch đ, tng ng vi các tín hiu logic chy (START) và
chy lp li (LAP). Các nút bm này nu bm tip s v ch đ trc đó. Ví d đang
trong trng thái Reset, bm nút START s chuyn sang Running. Nu đang trong
Running bm START ln na s v ch đ xóa ht Reset. Tín hiu START cng tác
đng tng t gia trng thái vòng lp (Lap) và xóa vòng lp (Lap_stop). Trong các
trng thái có th gn vi các hot đng (activities). Ví d trng thái Running có hot
đng trong quá trình trng thái này tích cc, ký hiu là:
during: /trong khi
disp_cent=cent; /ch th phn trm giây
disp_sec=sec; /ch th giây
disp_min=min ; /ch th phút

11


Hình Error! No text of specified style in document 3 Ví d Statecharts v ch
đ đng h bm gi.
Tng t nh Statecharts nhng phát trin thành ngôn ng mô t tiêu chun là
UML (Unified Modelling Language) [9] đã đc s dng rng rãi trong mô hình hóa
và thit k các h tng tác kích c ln, trong lp trình cho các ng dng nhúng và

các h điu khin nói chung.
c bit Stateflow do Matlab phát trin, cng là mt dng ca Statecharts, đa ra kh
nng thit k h thng đa trên mô hình (Model-based design), tích hp trong môi
trng mô phng cùng Simulink, to nên kh nng thit k mu nhanh (Fast
Prototyping).
o Stateflow
Stateflow là mt dng công c đ ha tng tác, tích hp cùng công c mô
phng Simulink ca Matlab dùng đ mô hình hóa các h tng tác. Các h tng tác
chuyn t trng thái hot đng này sang trng thái hot đng khác do tác đng ca các
s kin hoc các điu kin nht đnh. Các h thng này mô hình hóa logic hay cách
thc hot đng cho các thit b hay mt h thng t đng hóa nh bm, qut, đng c
hoc mt h máy móc thit b nào đó.
Stateflow biu din các ch đ hot đng ca thit b bng đ th trng thái
(FSM), ví d ch đ làm vic ca chic qut trong nhà có th là cao, trung bình, thp
và dng (High, Medium, Low, Off). Phn mm Stateflow cung cp các đi tng đ
ha, có th gp ra t hp thoi các mu, ni chúng vi nhau bng các cung có hng
đ ch ch đ hay điu kin chuyn t trng thái này sang trng thái khác. Ngoài ra
còn có th xác đnh:
- Các s liu đu vào, đu ra;
- Các s kin đ kích hot đ th trng thái;
12

- Các tác đng và các điu kin gn vi các trng thái và các điu kin đ
xác đnh hành vi ca đ th trng thái.
Vi Stateflow có th m rng kh nng ca đ th trng thái bng cách:
- Thêm vào các cu trúc phân cp;
- Mô hình các trng thái làm vic song song (tranh chp);
- Xác đnh các hàm chc nng bng đ th, bng các th tc chèn vào
hoc bng các bng trng thái.
- S dng logic thi gian đ lp lch cho các s kin.

- Xác đnh các vector, ma trn và các kiu d liu.
Hn na, Stateflow s tin hành mô phng mô hình đã đc xây dng đ
nghiên cu các đc tính cn quan tâm ca h thng. Kh nng rt mnh ca Stateflow
là t đng chuyn sang dng mã chng trình C dùng Stateflow
®
Coder™, tích hp
cùng phn mã C ca Simulink ra dng có th cài đt vào các b điu khin. iu này
rút ngn rt nhiu thi gian lao đng ca các k s trong quá trình thit k h thng
điu khin.
Ví d v đ th trng thái ca Stateflow cho trên hình 1.4. ây là mô hình mt
hp s t đng điu khin ô tô. Hp s s t đng chuyn s tùy theo tc đ ca xe và
đ m ca đng vào ga cho đng c.
- Mô hình có hai trng thái có th hot đng song song là: gear_state
(trng thái hp s) và selection_state (la chn s). Các trng thái song song, cùng
xy ra (parallel AND states) có vành bao bên ngoài bng đng nét đt. Trong mi
hai trng thái song song này có các trng thái con. Các trng thái con có vành ngoài
nét lin là nhng trng thái loi tr nhau, ngha là  mi thi đim ch có mt trong
chúng đc kích hot.
- Các trng thái ni vi nhau bng các cung ch s kin (UP, DOWN)
hoc các điu kin (speed > down_th: tc đ ln hn ngng thp; speed < down_th:
tc đ nh hn ngng thp; speed > up_th: tc đ ln hn ngng tc đ cao; speed
< up_th: tc đ nh hn ngng tc đ cao; …).
- Vi mi trng thái có th có các tác đng (action) gây nên các hot đng
cn thit khi h thng đang  trong mt trng thái nào đó. Các tác đng có th là loi
kích hot khi vào trng thái, entry; khi đang  trong trng thái, during, khi ra khi
trng thái, exit.
- Trong trng thái có th có hàm tính toán, nh hàm calc_th:
[down_th,up_th] = calc_th(gear,throttle). Hàm calc_th tính toán các giá tr ngng tc
đ thp, tc đ cao t v trí hp s gear và đ m ca đng đa ga vào bung đt
throttle.

13


Hình Error! No text of specified style in document 4 Ví d Stateflow điu
khin hp s t đng xe ô tô.
Mc dù không có phn ng ngha cht ch nh UML [6, 9], điu có th dn ti
không ti u v mã phát sinh, li chng trình rt khó phát hin và g ri, nhng
Stateflow rt phù hp cho nhng ngi phát trin ng dng trong các h thng điu
khin, trong đó ngi k s tp trung vào các nhim v đm bo chc nng điu khin
cho h thng ch không phi là các chuyên gia v lp trình hay mô hình hóa.
1.1.5 GRAFCET
GRAFCET cng là mt ngôn ng đ th đc phát trin  Pháp t 1977, nh là
mt phng pháp mô t đc tính cho các b điu khin logic [10]. T nm 1988
GRAFCET đc công nhn nh mt chun quc t bi IEC và mang tên đ th hàm
tun t (Sequential Function Charts – SFC). Ngày nay GRAFCET/SFC là mt phn
trong chun quc t ngôn ng lp trình IEC 61131 cho các b điu khin logic lp
trình đc (Programmable Logic Controller – PLC). GRAFCET đc dùng ph bin
trong công nghip vì giao din đ th rõ ràng ca nó. GRAFCET có c s toán hc t
mng Petri Net.
GRAFCET có cú pháp đ th, ví d cho trên hình 1.5. Nó bao gm các trng
thái (steps), th hin bng mt hình ch nht, và các bc chuyn (transitions), th
hin bng các gch ngang. Lu ý đi vi GRAFCET trng thái (state) đc gi là
step. Trng thái ban đu (Initial step) th hin bi hình vuông nét đôi s đc kích
14

hot trc tiên khi h thng bt đu hot đng. Các trng thái có th đc kích hot
ln lt hoc đng thi.
Trng thái (steps): trng thái có th tích cc hoc không. Trng thái tích cc đc
đánh du bng mt token trong nó. Các trng thái tích cc xác đnh trng thái ca h
thng ti mt thi đim nào đó. Gn vi mi trng thái có th có mt hay vài hành

đng. Các hành đng đc thc hin khi trng thái tích cc.

Hình Error! No text of specified style in document 5 Cú pháp ca GRAFCET.
Các bc chuyn (transitions): dùng đ kt ni các trng thái. Mi bc
chuyn có mt đ hp th nht đnh. Bc chuyn là đc phép nu tt các trng thái
phía trên nó đu tích cc. Khi đ hp th ca mt bc chuyn đc phép tr nên là
đ thì bc chuyn đc kích hot ngay lp tc. Khi bc chuyn kích hot các trng
thái trên nó tr nên th đng và các trng thái tip sau nó tr nên tích cc.
Hành đng (actions): gm hai loi, loi theo mc và loi theo xung. Loi theo
mc kéo dài mt khong thi gian hu hn theo mt bin logic nào đó và gi nguyên
trng thái tác đng chng nào trng thái gn vi nó còn tích cc. Hành đng theo mc
có th là có điu kin hoc không điu kin. Loi hành đng theo xung có nhim v
thay đi giá tr mt bin nào đó. Bin có th là logic nhng không nht thit nh vy.
Mt hành đng theo xung đc thc hin ngay khi trng thái ca nó tr nên tích cc.
Có th đa vào các bin ph thuc thi gian đ to nên các hành đng có tr hoc xy
ra trong khong thi gian nht đnh. Mt hành đng theo mc bao gi cng có th
chuyn thành mt hành đng theo xung.
 hp th (receptivities). Mi bc chuyn có mt đ hp th nht đnh. 
hp th có th là mt điu kin logic, mt s kin hay điu kin logic kt hp vi s
kin. Trên đ th s kin th hin bng mt ch cái (bin) bên cnh trái ca nó có mi
tên lên hoc xung, ví d
,x y  . Mi trên lên ch s kin xy ra  sn lên ca
xung, mi tên xung ch s kin gn vi sn xung.
Ngôn ng GRAFCET đc phát trin vi mc đích s dng cho các b PLC.
Ngôn ng đc dùng trc ht vi mc đích mô t h thng bng đ th đ có th
15

phân tích, đánh giá s hot đng mt cách trc giác. Vic ng dng thc t đc thc
hin bng cách chuyn đ th GRAFCET sang mt ngôn ng thông dng khác là đ
th dng bc thang (Ladder Diagrams – LD). LD là ngôn ng đn gin, tha hng t

các s đ điu khin logic dùng rle trc đây. Các s đ LD rt d thc hin đi vi
các h thng nh nhng khi h thng tr nên phc tp hn thì s đ LD s rt khó
qun lý.
V mt ng dng GRAFCET thng đi cùng vi mt loi PLC do mt hãng
phát trin. Do đó s dng GRAFCET ch hiu qu khi ta đnh xây dng h thng điu
khin trên loi PLC đó, khi đó phn mm son tho chng trình s chuyn t đng
h thng mô t bi GRAFCET sang ngôn ng LD, cài đt trên PLC. Nu không có
nhng điu kin này thì vic chuyn GRAFCET sang dng cài đt trên PLC s rt khó
khn, đn mc mà nhng u th ca ngôn ng đ th cng không còn giá tr gì.
1.3 Chun IEC 61131 và các b điu khin lp trình đc
1.3.1 PLC và ngôn ng lp trình theo chun
PLC là b điu khin logic lp trình đc, đc nhiu nhà sn xut phát
trin vi kích c t nh đn ln và đc ng dng rng rãi trong công nghip.
Tuy nhiên tính ph bin ca PLC làm ny sinh hàng lot vn đ. Mc dù vn
mang mt s đc đim chung v phn cng, phn mm nhng gia các loi
PLC có nhiu đim khác nhau, đc bit là v phn mm mà c th là ngôn ng
lp trình điu khin. Các hãng khác nhau có th phát trin nhng tp lnh khác
nhau, các hàm khác nhau và cách s dng các chc nng quan trng nh b
đm, b đnh thi, truyn thông cng có nhiu đim khác bit. Ngay c gia
các loi PLC ca cùng mt hãng cng có th có s khác nhau rt ln. S bt
tng thích gây ra nhiu khó khn cho ngi s dng khi mun chuyn đi
chng trình điu khin có sn trên mt loi PLC này sang mt loi PLC khác
khi nâng cp hoc sa cha h thng, khi mun s dng phi hp nhiu loi
PLC khác nhau trong cùng mt thit b máy móc. Ngay c vic hc và s dng
các loi PLC khác nhau cng s tiêu tn nhiu công sc và thi gian.
Do nhng lý do trên mà t chc IEC (International Electrotechnical
Commission) đ ra chun cho ngôn ng lp trình mang tên IEC 61131 [12].
IEC 61131 không phi là mt ngôn ng mà là các chun đ ngôn ng c th
phi tuân theo. Chun IEC 61131 đa ra các quy đnh v b điu khin kh
trình, trong đó có PLC, và các thit b ngoi vi đi kèm, t phn cng (c khí,

đin, đin t, khí nén, thy lc, ), truyn thông đn phn mm và ngôn ng
lp trình. B tiêu chun này gm nhiu phn, mi phn xét đn mt khía cnh
nht đnh, và do đó to thành mt chun “con” bên trong b tiêu chun IEC
61131 và thng đc kí hiu bi s th t ca phn (ví d IEC 61131-1, IEC
61131-2, ). Trong đó tiêu chun IEC 61131-3, tc phn 3 ca b tiêu chun
16

IEC 61131, vi tên gi “Programming Languages”, qui đnh v các ngôn ng lp trình
cng nh cách thc lp trình điu khin cho tt c các thit b, các quá trình và các b
điu khin. Nhng qui đnh trong tiêu chun IEC 61131-3 đem li mt cách nhìn nhn
mi v lp trình cho các h thng điu khin, đm bo tính hiu qu cao và sc mnh.
Chun IEC 61131-3 nói riêng và b tiêu chun IEC 61131 nói chung đã vt ra
ngoài gii hn là mt b tiêu chun v PLC mà tr thành mt b tiêu chun cho các
thit b điu khin kh trình (Programmable Controller) nói chung. Hin nay, phn ln
các b điu khin trong thc t đu là các b điu khin kh trình. Bi vy, phm vi
áp dng ca b tiêu chun IEC 61131 tr nên rt rng ln. Mt đim cn chú ý na là
phn nhiu các qui đnh trong b tiêu chun IEC 61131  dng khuyn cáo, ngha là
nên đc tuân theo ch không bt buc. Bi vy mc dù nhiu sn phm ca các hãng
khác nhau đc nói là “tuân theo chun IEC 61131” nhng vn có th không thc
hin đy đ và hoàn toàn đúng nh nhng qui đnh đ ra trong chun.
Di đây s ch ra nhng đc đim quan trng nht mà chun IEC 61131-3
đem li cho các ngôn ng lp trình điu khin.
1.3.2 Không ph thuc vào mt phn cng c th nào.
iu này cn thit đ chng trình có th mang đi đc (Portable). Do tính có
th mang đi đc có th to nên các th vin gm các chng trình nh, đc xây
dng cho các ng dng ph bin, có th ghép ni vào các ng dng ln hn. iu này
cng có ngha là các đon mã có th s dng li (reuseable). Rõ ràng là thi gian và
công sc ca nhng ngi phát trin ng dng s đc gim đáng k.
1.3.3 Dùng nhiu ngôn ng trong cùng mt chng trình điu khin
ây là mt trong nhng u đim ni bt nht ca chun. Vic s dng kt hp

nhiu ngôn ng lp trình khác nhau trong cùng mt chng trình là điu mong mi
ca hu ht các lp trình viên. Trong cùng mt chng trình điu khin, ngi lp
trình có th s dng đng thi và trc tip nhiu ngôn ng lp trình khác nhau. iu
này giúp tng tính linh hot và hiu qu ca vic lp trình bi có th tn dng ti đa
các u đim ca tng ngôn ng lp trình.
IEC 61131-3 đnh ngha 5 ngôn ng lp trình: Ladder (LD), Function block
diagram (FBD), Sequential function chart (SFC), Structure Text (ST), Instruction List
(IL) phc v cho mt di rng các ng dng. Ngi lp trình PLC mi ni s s dng
cùng ngôn ng lp trình, ngân sách đào to s gim đi, nht là khi dùng thit b ca
nhiu hãng khác nhau tuân theo chun này, khi cn thit ch cn b sung thêm mt vài
kin thc v mt b điu khin mi. Chun giúp tng hiu sut cng nh gim thi
gian thc hin mt d án t đng hóa bng cách tái s dng các thành phn (chng
trình) đã đc phát trin trc trong các d án khác hoc bi nhng ngi khác.
17

Tuy nhiên không phi khi nào cng s dng đc 5 ngôn ng lp trình
này, còn ph thuc vào tc đ vi x lý, loi PLC hay mc đ h tr ca hãng.
Thông thng thì vic s dng ngôn ng nh sau đây:
- SFC dùng cho quá trình x lý lp đi lp li, có liên đng hay nhng hot
đng đng thi.
- LD đc chp nhn rng rãi bi ngi lp trình PLC khp toàn cu, dùng
cho nhng ng dng vào ra s, x lý c bn, khá d dàng cho vic thay th
code v sau.
- IL có tc đ x lý nhanh do sát vi ngôn ng máy và hay đc s dng 
châu Âu.
- ST là ngôn ng hay đc dùng  châu Âu, dùng cho nhng ngi quen vi
lp trình bc cao, thc hin đc các phép toán phc tp, nu lp trình bng
IL và ST gây khó khn trong vic phát hin và sa li sau này.
- FBD dùng cho các vào ra s hay nhng x lý c bn, tuy nhiên li tn din
tích màn hình quan sát khi lp trình.

1.3.4 Các công c đt cu hình
 các phng pháp cu trúc hóa các chng trình PLC truyn thng,
các ng dng đc gói gn trong các khi vi các đc tính runtime (khi đang
chy) không rõ ràng, vic cu hình đn thun là chn PLC và phân cng vào
ra, sau đó lp trình da theo phân công ban đu này, s là rt khó khn khi
chng trình ca chúng ta dài hàng trm trang. IEC 61131-3 cung cp các
phng tin chun hóa và tinh vi đ tháo g khó khn này. Vì chng trình là
đc lp vi phn cng, nên vic cu hình cn phi xác đnh đc tính runtime
cho chng trình (PROGRAMs) và khi chc nng (FBs), giao tip gia các
cu hình và gán các bin cho đa ch phn cng PLC c th. Gi đây chúng ta
có th cu hình bng chng trình nên thoát khi gò bó lúc lp trình và cng
không phi nh nhiu na. Qun lý d án có th chia chng trình thành các
module cho nhiu ngi làm sau đó tng hp li mt cách d dàng.
1.3.5 Lp tài liu d án mt cách tin li và nhanh chóng
Chun cng cho phép chng trình cng nh thit b to điu kin đ
giám sát, chn đoán h thng và thu thp d liu phc v cho vic tng kt và
lp k hoch chính xác, d dàng.
1.3.6 An toàn và tin li hn khi dùng các bin và kiu d liu
Vi PLC và phng pháp lp trình thông thng thì vic truy cp d
18

liu đc thc hin bi các bin toàn cc hay là đa ch tuyt đi (phn cng), thông
thng là đa ch vào ra, c, khi d liu chng hn nh I0.0, I0.1, Q0.0,… Ngi lp
trình phi t phân b v trí ca chúng và phi ht sc cn thn nu không s xy ra
trng hp các phn ca chng trình nh hng ln nhau (ví d ghi đè d liu).
Khi lp trình theo chun IEC 61131-3 thì không dùng đa ch phn cng trc
tip mà thay vào đó là vic s dng các bin đc đt tên rõ ràng. Ngi lp trình
cng không phi xác đnh chúng cn đc lu gi  đâu mà chng trình t đng sp
xp. Mi bin có mt kiu d liu c th nh Bool, Byte, WORD, DWORD,
LWORD, Integer (SINT, INT, DINT, LINT, USINT, UINT, UDINT, ULINT),

REAL, LREAL, TIME, DATE, TOD hay TIME_OF_DAY, DT hay
DATE_AND_TIME, WString. Bin cc b ch có ý ngha trong phm vi mt đn v
t chc chng trình, nên không lo nh hng khi s dng  đn v khác.
1.3.7 n v t chc chng trình
i vi các chng trình điu khin ln và phc tp, phng pháp lp trình có
cu trúc đc s dng thay cho phng pháp lp trình tuyn tính. Trong các h lp
trình cho PLC trc kia, phng pháp lp trình có cu trúc đc h tr thông qua vic
t chc chng trình thành các khi (block), vi ý ngha nh là các thành phn nh
nht xây dng nên chng trình (vì vy gi là các building block). Các khi này đc
phân loi theo ni dung cha bên trong khi, thông thng bao gm: khi t chc
chng trình (OB - Organisation Block), khi chc nng (FB - Function Block), khi
d liu (DB - Data Block). Có th thy là  đây khi chc nng và d liu ca khi
chc nng đc tách ri nhau tng ng trong các khi FB và DB. Cách phân chia
nh th này gi nh đn các ngôn ng lp trình quen thuc nh Pascal hay C vi
chng trình chính, hàm và d liu toàn cc (global data).
Chun IEC 61131-3 đã tin mt bc xa hn khi phân chia các khi, đc gi
tên là các đn v t chc chng trình (POU - Program Organisation Unit), theo chc
nng và s phân cp cu trúc. Có ba loi POU đc quy đnh là: Hàm (FUN -
FUNction), khi chc nng (FB - Function Block) và chng trình (PROG -
PROGram). Mt đim đáng chú ý là d liu ca các khi chc nng không nm riêng
na mà đc đa vào ngay trong chính khi đó. ó chính là s đóng gói d liu, mt
trong nhng nguyên tc c bn ca phng pháp lp trình hng đi tng. Vic s
dng POU giúp hn ch đc chng loi khi đc s dng, thng nht hóa và đn
gin hóa đ ngi s dng d dàng hn. Hn na, POU đc thit k hoàn toàn đc
lp vi đi tng, chính vì th mà có th tái s dng chúng trên nhiu nn khác nhau.
1.3.8 Phng pháp cu hình đc bit
Thông thng khi lp trình PLC vic cu hình là chn loi PLC và phân cng
19

vào ra, sau đó vit chng trình da theo phân b ban đu này. Các ng dng đc

đa vào các khi (ví d OB) và không có đc tính lúc vn hành rõ ràng.
IEC 61131-3 áp dng nhng tin b ca công ngh k thut mi cho phép vic mô
hình mt d án PLC gm nhng ng dng có nhiu vi x lý. Mô hình phn mm theo
chun giúp ngi dùng cu trúc hóa các ng dng hng ti thc tin bng cách xây
dng các khi t chc chng trình POU đ to điu kin d dàng cho vic bo trì,
thu thp d liu và tng kh nng chn đoán ca PLC. Mt phn mm đng nht là rt
cn thit cho vic tng tính linh hot ca các ng dng. Các tài nguyên ca PLC (các
vi x lý hay khi CPU) đc gán đc tính vn hành khi cu hình và điu đó làm cho
chng trình ca ta đc lp vi phn cng.
1.3.9 T chc PLCopen
IEC 61131 ra đi mang li nhiu li ich cho c ngi s dng cui và c nhà
sn xut thit b logic kh trình. Hin nay hu ht các hãng đu cam kt sn xut sn
phm tuân theo chun này, có th là mt phn hay toàn phn. Cng phi nói rng
chun không ch áp dng cho PLC, mà cho hu ht các thit b điu khin kh trình
nh PAC, PLC, các b điu khin quá trình, Nhiu t chc đang hot đng nhm
ph bin rng rãi chun, trong đó có vic ra đi ca t chc PLCopen, t chc khuyn
khích các thành viên theo chun. PLCopen đã có rt nhiu thành viên, mà đc bit là
các công ty tp đoàn ln nh Siemens, ABB, Allen Bradley, OMRON, Mitsubishi
Electric, … Hin t chc không ch hot đng  châu Âu mà c c  M, Á.
Công ty Smart software solution, cng là thành viên ca PLCopen, phát trin
phn mm CoDeSys và thành lp t chc automation alliance vi hn 100 thành viên
cam kt s dng phn mm ca hãng. CoDeSys không ch đc chp nhn  châu Âu
mà đang dn phát trin trên toàn th gii, là các công ty  c, Thy s, Italia, Áo,
Pháp, Anh, B, Phn Lan, Thy in, Nga, M và Trung Quc vi nhiu loi sn
phm nh PLC, CNC/PLC combination, B truyn đng thông minh, DCS
(decentralized control system), Panel PLC, Lõi PLC, các module vào ra thông minh,
Phn mm CoDeSys lp trình cho thit b điu khin kh trình hoàn toàn tuân theo
chun IEC 61131-3. Vi mt phn mm lp trình chung theo chun và các hãng sn
xut thit b phn cng cam kt sn phm hoàn toàn h tr thì vic lp trình s thng
nht và đn gin hn cho ngi s dng.

Ngoài các hãng đc k trên còn rt nhiu hãng ln nh na sn xut các sn phm h
tr theo tiêu chun IEC 61131 nh BECKHOFF, Rexroth, Danfoss, Schneider,
Yokogawa, Emerson, Qua đó đ thy rng chun đã đc chp nhn rng rãi nh
th nào. Có mt thc t là nhiu hãng vn dùng phn mm riêng cho PLC hay PAC và
các b điu khin kh trình ca h, do vy vn cha phi là hoàn toàn theo chun nên
cha th tn dng ht đc nhng u đim ca lp trình theo chun, cng cha th tit
kim đc ti đa thi gian và công sc cho vic lp trình. Chng hn, khi mua PLC
ca nhiu hãng, chúng ta vn phi hc khá nhiu, c phn cng ln phn mm, cng
20

cha th ly chng trình lp trình vi phn mm ca hãng này đ sang PLC ca hãng
khác đc. Trong tng lai, nhng hn ch trên s đc khc phc vì tiêu chun này
chc chn s còn đc chp nhn rng hn na và lp trình theo.

21

CHNG 2: MCH LOGIC T HP
2.1 C s toán hc v đi s logic
2.1.1 Hàm và bin logic
a. Bin logic
Bin s x đc gi là bin logic nu x thuc tp hp B ch gm 2 phn t ký
hiu là 0 và 1. Ngha là bin logic x ch nhn hai giá tr 0 và 1.
x B = {0;1}
b. Hàm logic
Hàm s f ca các bin x1, x2, …, xn đc gi là hàm logic khi và ch khi các
bin x1, x2, …, xn là các bin logic và giá tr ca hàm s f cng là giá tr logic, tc là
f cng ch có 2 giá tr 0 và 1.
f(x1, x2, …, xn) B = {0;1} vi x1, x2, …, xn  B = {0;1}.
c. Các phép toán logic c bn
 Phép nghch đo (NOT)

Ký hiu: nghch đo ca mt bin logic x ký hiu là x.
Phép nghch đo đc đnh ngha thông qua bng giá tr 2.1 nh sau
Bng 2.1. Bng giá tr ca phép nghch đo
x
f(x) =
x


0 1
1 0
 Phép cng logic (OR)
Phép cng logic đc thc hin vi 2 bin logic x và y ký hiu là x+y
Phép cng logic đc đnh ngha thông qua bng giá tr 2.2 nh sau:
Bng 2.2. Bng giá tr ca phép cng logic
x Y f(x,y) = x+y
0 0 0
0 1 1
1 0 1
1 1 1
Kt qu ca phép cng logic hai bin logic ch nhn giá tr 0 khi và ch khi c hai bin
logic có giá tr 0
22

 Phép nhân logic (AND)
Phép nhân logic đc thc hin vi 2 bin logic x và y ký hiu là x.y hoc x*y
hoc đn gin là xy
Phép nhân logic đc đnh ngha thông qua bng giá tr 2.3 nh sau:
Bng 2.3. Bng giá tr ca phép nhân logic
x y f(x,y) = x+y
0 0 0

0 1 0
1 0 0
1 1 1
Kt qu ca phép nhân logic hai bin logic ch nhn giá tr 1 khi và ch khi c hai bin
logic có giá tr 1
2.1.2 Các tính cht và đnh lut logic c bn
a. Các tính cht ca phép toán logic
 Tính cht giao hoán
Kt qu ca phép tính giao hoán là không đi nu ta đi ch hai bin logic cho
nhau
x+y = y+x
x.y = y.x
 Tính cht kt hp
x+y+z = (x+y)+z = x+(y+z)
x.y.z = (x.y).z = x.(y.z)
 Tính cht phân phi
x.(y+z) = x.y + x.z
x+(y.z) = (x+y).(x+z)
 Lut De Morgan

n21n11
n21n21
x xxx x.x
x x.xx xx



Ph đnh ca mt tng các bin logic bng tng các ph đnh các bin logic.
Ph đnh ca mt tích các bin logic bng tích các ph đnh ca các bin logic
 Tính đi ngu

Nu trong mt h thc ta thay phép cng bng phép nhân, phép nhân bng phép
cng, thay 0 bng 1 và 1 bng 0 thì s thu đc mt h thc mi gi là h thc đi
ngu. Nu h thc ban đu đúng thì h thc đi ngu ca nó cng đúng.

23

b. Mt s h thc logic c bn
 x+0 = x ; x.1 = x
 x.0 = 0 ; x+1 = 1
 x+x = x ; x.x = x

0
x
.
x
;

1
x
x




 x+xy = x ; x.(x+y) = x

x
)
y
x

)(
y
x
(
;

x
y
x
xy






2.1.3 Các cách biu din hàm logic t hp
a. Biu din bng bng chân lý
Bng chân lý là bng lit kê tt c các t hp các giá tr ca các bin và giá tr
tng ng ca hàm s vi mi t hp bin đó. Nh vy, vi mt hàm n bin thì ta s
có 2
n
t hp bin. Bng 2.4 cho ta mt ví d v bng chân lý vi hàm 3 bin
Bng 2.4 Bng chân lý biu din hàm 3 bin
Giá tr thp phân ca
t hp bin
x1 x2 x3 f(x1,x2,x3)
0 0 0 0 1
1 0 0 1 0
2 0 1 0 “x”

3 0 1 1 “x”
4 1 0 0 0
5 1 0 1 1
6 1 1 0 “x”
7 1 1 1 1
Ghi chú:
Nhng ch đánh du “x” là giá tr hàm không xác đnh (có th là 0 hoc 1), có
ngha là giá tr hàm ng vi các t hp giá tr bin đu vào không nh hng đn vai
trò ca hàm logic này.
u đim ca cách biu din này là d nhìn, ít nhm ln vì tt c các kh nng
có th ca hàm s đã đc lit kê ra ht. Nhc đim ca phng pháp này là cng
knh, đc bit là khi bin s ln.
b. Biu din bng biu thc đi s
Hàm logic có th đc biu din bng biu thc đi s s dng các phép toán
cng và nhân logic. Bng cách biu din hàm logic bng biu thc đi s, có th dùng
các thit b logic đ thc hin hàm logic mt cách dàng.
24

Mt hàm logic n bin bt k bao gi cng có th biu din thành tng chun
đy đ và tích chun đy đ.
 Cách vit hàm di dng tng chun đy đ
 Ch quan tâm đn t hp các giá tr ca bin làm cho hàm có giá tr 1. S
ln hàm bng 1 chính bng s tích ca các t hp bin này.
 Trong mi tích ng vi mt t hp bin làm cho hàm có giá tr bng 1,
các bin có giá tr 1 thì gi nguyên, các bin có giá tr 0 thì đc ly giá
tr đo
 Hàm tng chun đy đ s là tng các tích đó
Ví d: Cho hàm logic 2 bin nh bng 2.5
Bng 2.5: Hàm logic 2 bin s
x1 x2 y=f(x1,x2)


0 0 1
0 1 0
1 0 0
1 1 1
Ta nhn thy có 2 t hp giá tr bin làm cho hàm có giá tr 1 là (x1,x2) = (0,0)
và (x1,x2) = (1,1). Vi t hp (x1,x2) = (0,0), vì hai bin đu nhn giá tr 0 nên tích
các bin tng ng s là x




x



. Vi t hp (x1,x2) = (1,1), vì hai bin đu nhn giá tr
1 nên tích các bin tng ng s là x1.x2. Do đó hàm logic có th đc biu din di
dng tng chun đy đ nh sau
y= f(x1,x2) = x




x



+ x1.x2
 Cách vit hàm di dng tích chun đy đ

 Ch quan tâm đn t hp các giá tr ca bin làm cho hàm có giá tr 0. S
ln hàm bng 0 chính bng s tng ca các t hp bin này.
 Trong mi tng ng vi mt t hp bin làm cho hàm có giá tr bng 0,
các bin có giá tr 0 thì gi nguyên, các bin có giá tr 1 thì đc ly giá
tr đo
 Hàm tích chun đy đ s là tích các tng đó
Ví d: Cho hàm logic 2 bin nh bng 2.5
Ta nhn thy có 2 t hp giá tr bin làm cho hàm có giá tr 0 là (x1,x2) = (0,1)
và (x1,x2) = (1,0). Vi t hp (x1,x2) = (0,1), vì bin x1 nhn giá tr 0 nên đc gi
nguyên, bin x2 nhn giá tr 1 nên phi ly giá tr đo, tng các bin tng ng s là
x  x



. Vi t hp (x1,x2)=(1,0), vì bin x1 nhn giá tr 1 nên phi ly giá tr đo,
bin x2 nhn giá tr 0 nên đc gi nguyên, tng các bin tng ng s là x



+x2. Do
đó hàm logic có th đc biu din di dng tích chun đy đ nh sau
y=f(x1, x2)= (x  x



)(x



+x2)

25

 vit các hàm logic di dng ngn gn, ngi ta có th vit các hàm logic
di dng nh sau:
 Dng tng chun đy đ
Hàm logic  bng 2.4 có th vit nh sau:
f(x1,x2,x3)=(0,5,7) vi N = 2,3,6
Trong đó các s 0, 5, 7 là giá tr thp phân ca t hp bin (theo th t
x1x2x3) làm cho hàm có giá tr bng 1; và 2, 3, 6 là các giá tr thp phân ca
t hp bin làm cho hàm có giá tr không xác đnh.
 Dng tích chun đy đ
Hàm logic  bng 2.4 có th vit nh sau:
f(x1,x2,x3)=(1,4) vi N = 2,3,6
Trong đó các s 1, 4 là giá tr thp phân ca t hp bin (theo th t
x1x2x3) làm cho hàm có giá tr bng 0; và 2, 3, 6 là các giá tr thp phân ca
t hp bin làm cho hàm có giá tr không xác đnh.
c. Biu din bng bng Các nô
Nguyên tc xây dng bng Các nô nh sau:
  biu din mt hàm logic có n bin s, cn lp mt bng có 2
n
ô, mi ô
tng ng vi mt t hp bin.
 Các ô cnh nhau hoc đi xng nhau ch cho phép khác nhau v 1 giá tr ca
mt bin
 Trong các ô ghi các giá tr ca hàm tng ng vi t hp bin ng vi ô đó
Ví d: Bng Các nô biu din hàm logic trong bng 1.5
Bng 2.6 Bng Các nô biu din hàm logic trong bng 2.5
x2
x1
0 1

0 1 0
1 0 1

Bng Các nô biu din hàm logic trong bng 2.4
x2x3
x1
00 01 11 10
0 1 0 “x” “x”
1 0 1 1 “x”
Chú ý: vi các ô ng vi các t hp bin làm cho hàm có giá tr không xác đnh thì có
th đin “x” hoc b trng
Bng Các nô cho hàm 5 bin

×