Giáo trình Siemens S7-200 - Chương 2: Tập lệnh S7-200 (Phần 2)

Söï kieän ngaét 8 (Port 0), 25 (Port 1) seõ xaûy ra khi thu moät kyù töï, luùc naøy SMB2 chöùa

kyù töï vöøa nhaän coøn SM3.0 chöùa keát quaû kieåm tra parity (0: khoâng coù loãi parity, 1: coù loãi

parity).

Chuù yù laø khoâng cuøng luùc nhaän vaø gôûi döõ lieäu qua port, giöõa hai cheá ñoä caàn coù

khoaûng nghæ.

Ví duï: Truyeàn duøng leänh XMT vaø nhaän kyù töï duøng SMB2, maùy tính gôûi xuoáng kyù töï

A thì Q0.0 ON, gôûi kyù töï B thì Q0.0 OFF, khi I0.0 coù caïnh leân thì PLC gôûi leân kyù töï A, I0.1

coù caïnh leân thì PLC gôûi leân kyù töï B, maùy tính nhaän ñöôïc A thì ñeøn Start saùng, maùy tính

nhaän ñöôïc B thì ñeøn Stop saùng, Coù thôøi gian nghæ 5ms töø khi PLC nhaän döõ lieäu ñeán khi

gôûi leân

pdf40 trang | Chuyên mục: PLC | Chia sẻ: tuando | Lượt xem: 387 | Lượt tải: 0download
Tóm tắt nội dung Giáo trình Siemens S7-200 - Chương 2: Tập lệnh S7-200 (Phần 2), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 
modem, ñaët switch 6 vò trí remote (1), maùy tính laø Master neân choïn switch 5 vò trí 1, neáu 
choïn vaän toác truyeàn 9600 thì vị trí caùc switch laø 01001000 
Töông töï PLC Omron, ôû cheá ñoä freeport coù theå truyeàn vaø nhaän data baèng hai leänh 
XMT vaø RCV. Khi duøng leänh XMT, döõ lieäu truyeàn laáy töø baûng coù ñòa chæ ñaàu ôû TABLE, 
coøn döõ lieäu nhaän chöùa vaøo TABLE, chieàu daøi baûng toái ña 255. Byte ñaàu cuûa baûng cho 
bieát chieàu daøi döõ lieäu. Khi kyù töï cuoái cuûa baûng ñöôïc gôûi seõ baùo söï kieän ngaét 9 hay 26 
hay taùc ñoäng SM4.5 (port 0), SM4.6 (port 1), hai bit naøy ON khi ñaõ thöïc hieän xong vieäc 
truyeàn vaø OFF khi ñang truyeàn. 
Söï kieän ngaét 8 (Port 0), 25 (Port 1) seõ xaûy ra khi thu moät kyù töï, luùc naøy SMB2 chöùa 
kyù töï vöøa nhaän coøn SM3.0 chöùa keát quaû kieåm tra parity (0: khoâng coù loãi parity, 1: coù loãi 
parity). 
Chuù yù laø khoâng cuøng luùc nhaän vaø gôûi döõ lieäu qua port, giöõa hai cheá ñoä caàn coù 
khoaûng nghæ. 
Ví duï: Truyeàn duøng leänh XMT vaø nhaän kyù töï duøng SMB2, maùy tính gôûi xuoáng kyù töï 
A thì Q0.0 ON, gôûi kyù töï B thì Q0.0 OFF, khi I0.0 coù caïnh leân thì PLC gôûi leân kyù töï A, I0.1 
coù caïnh leân thì PLC gôûi leân kyù töï B, maùy tính nhaän ñöôïc A thì ñeøn Start saùng, maùy tính 
nhaän ñöôïc B thì ñeøn Stop saùng, Coù thôøi gian nghæ 5ms töø khi PLC nhaän döõ lieäu ñeán khi 
gôûi leân 
//Chöông trình chính 
//Network 1 
LD SM0.1 
MOVB 9, SMB30 
ATCH INT_0, 8 
ENI 
MOVB 'B', VB103 
MOVB 'A', VB101 
MOVB 1, VB102 
MOVB 1, VB100 
// Network2 
LDN M1.0 
A I0.0 
EU 
XMT VB100, 0 
S Q0.1, 1 
// Network3 
LDN M1.0 
A I0.1 
EU 
XMT VB102, 0 
R Q0.1, 1 
//Chöông trình ngaét0 
//Network1 
LD SM0.0 
LPS 
S M1.0,1 
AB= SMB2, 'A' 
S Q0.0, 1 
LPP 
AB= SMB2, 'B' 
R Q0.0, 1 
//Network2 
LD M1.0 
MOVB 5, SMB34 
ATCH INT1, 10 
//Chöông trình ngaét1 
LD SM0.0 
R M1.0, 1 
DTCH 10 
Chöông trình VB 
 Private Sub cmdQuit_Click() 
MSComm1.PortOpen = False 
End 
End Sub 
Private Sub cmdSendA_Click() 
MSComm1.Output = "A" 
End Sub 
Private Sub cmdSendB_Click() 
MSComm1.Output = "B" 
End Sub 
Private Sub Form_Load() 
If MSComm1.PortOpen Then MSComm1.PortOpen = False 
With MSComm1 
CommPort = 3 
. Settings = "9600,n,8,1" 
InputLen = 0 
. InputMode = 0 
. RThreshold = 1 
. PortOpen = True 
End With 
With Shape1 
. FillColor = vbWhite 
. Shape = 3 
. FillStyle = 0 
End With 
With Shape2 
. FillColor = vbWhite 
. Shape = 3 
. FillStyle = 0 
End With 
End Sub 
Private Sub MSComm1_OnComm() 
Dim data 
If MSComm1.CommEvent = comEvReceive Then 
data = MSComm1.Input 
Select Case data 
Case "A" 
 Shape1.FillColor = vbBlue 
 Shape2.FillColor = vbWhite 
Case "B" 
 Shape1.FillColor = vbWhite 
 Shape2.FillColor = vbRed 
End Select 
End If 
End Sub 
Leänh RCV duøng ñeå nhaän moät baûn tin chöùa vaøo moät baûng, ta phaûi qui ñònh caùc ñieàu 
kieän khôûi ñaàu vaø keát thuùc cho baûn tin vaø duøng caùc oâ nhôù SMB86..SMB94 (Port 0), 
SMB186..SMB194 (Port 1) hoã trôï, Khi thu xong baèng leänh RCV seõ taùc ñoäng söï kieän 
ngaét 23 Port 0 (24 Port 1) . Chuù yù laø hai leänh XMT vaø RCV khoâng theå söû duïng ñoàng 
thôøi, neáu hai leänh thöïc hieän cuøng luùc thì leänh sau khoâng thöïc hieän vaø ENO laø 0. 
Chuù yù laø thay ñoåi caáu hình chæ hieäu quaû khi thöïc hieän leänh RCV. Khi leänh RCV ñaõ 
gaây ngaét thì ngöøng hoaït ñoäng 
Ñeå nhaän bieát baét ñaàu baûn tin coù theå duøng nhieàu caùch: 
- Qui ñònh kyù töï baét ñaàu trong oâ nhôù SMB88 (SMB188), trong byte ñieàu khieån cho 
bit sc SM87.6 (SM187.6) logic 1 (thöôøng duøng khi truyeàn kyù töï) 
- Phaùt giaùc ñöôøng daây roãi: qui ñònh thôøi gian ñöôøng daây roãi giöõa hai laàn phaùt baûn 
tin, thöôøng laø hôn ba laàn thôøi gian truyeàn moät byte, trong oâ nhôù SMW90 
(SMW190) ñôn vò laø ms. Khi leänh RCV ñöôïc thöïc hieän PLC seõ tính thôøi gian 
ñöôøng daây roãi, caùc byte nhaän tröôùc thôøi gian naøy seõ laøm khôûi ñoäng laïi boä tính 
thôøi gian naøy, sau thôøi gian roãi qui ñònh môùi chaáp nhaän caùc byte ñöa vaøo baûng 
(thöôøng duøng khi truyeàn nhò phaân) trong byte ñieàu khieån cho bit il SM87.4 
(SM187.4) leân 1 
- Phaùt giaùc tín hieäu break: ñöôøng truyeàn ôû ñieàu kieän break khi noù ôû möùc zero hôn 
thôøi gian truyeàn moät byte, luùc ñoù PLC seõ nhaän caùc kyù töï sau ñieàu kieän break, bit 
1 (bk) cuûa byte ñieàu khieån ñaët leân 1 
Ñeå nhaän bieát keát thuùc baûn tin gaây ra ngaét coù theå duøng: 
- Kyù töï cuoái trong oâ nhôù SMB89 (SMB189), bit 5 (ec) byte ñieàu khieån logic 1 
- Timer giöõa kyù töï: neáu thôøi gian giöõa hai kyù töï lôùn hôn thôøi gian trong oâ nhôù 
SMW92 (SMW192) ñôn vò ms thì coi nhö keát thuùc truyeàn baûn tin, bit 2 (tmr) cuûa 
byte ñieàu khieån möùc 1, bit 3 (c/m) möùc 0 
- Timer baûn tin: qui ñònh thôøi gian truyeàn moät baûn tin trong oâ nhôù SMW92 
(SMW192) , sau thôøi gian naøy coi nhö keát thuùc nhaän, bit 2 (tmr) cuûa byte ñieàu 
khieån möùc 1, bit 3 (c/m) möùc 1 
- Soá kyù töï toái ña: qui ñònh truyeàn toái ña bao nhieâu kyù töï SMB94 (SMB194), neáu 
nhaän quaù gaây ra ngaét 
- Sai parity 
- Do keát thuùc thu, ñaët bit 7 (en) cuûa byte ñieàu khieån veà 0 
Ví duï: nhaän baûn tin vaø truyeàn trôû laïi baûn tin ñaõ nhaän duøng leänh RCV vaø XMT 
NETWORK 1 // Main Program 
LD SM0.1 //On the first scan, 
MOVB 16#09 SMB30 //Initialize Freeport: 
 // - Select 9600 baud 
 // - Select 8 data bits 
 // - Select no parity 
MOVB 16#B0 SMB87 //Initialize RCV message control byte: 
 // RCV enabled, detect end of message character, detect idle line condition as message start condition 
MOVB 16#0A SMB89 //Set end of message character to hex 0A (line feed) 
MOVW +5 SMW90 //Set idle line timeout to 5 ms. 
MOVB 100 SMB94 //Set maximum number of characters to 100. 
ATCH INT_0 23 //Attach interrupt 0 to the receive complete event. 
ATCH INT_2 9 //Attach interrupt 2 to the transmit complete event. 
ENI 
RCV VB100 0 //Enable receive box with buffer at VB100 for port 0 
NETWORK 1 // Interrupt 0 
//Receive complete interrupt routine 
LDB= SMB86 16#20 //If receive status shows receive of end character, 
MOVB 10 SMB34 //then attach a 10 ms timer 
ATCH INT_1 10 //to trigger a transmit 
CRETI //and return. 
NOT 
RCV VB100 0 //If the receive completed for any other reason, then start a new receive. 
NETWORK 1 // Interrupt 1 
//10 ms timer interrupt 
LD SM0.0 
DTCH 10 //Detach timer interrupt 
XMT VB100 0 //Transmit message back to user on port 0 
NETWORK 1 // Interrupt 2 
LD SM0.0 
RCV VB100 0 
Ví dụ: Viết chương trình PLC nhận dữ liệu nối tiếp dạng mã ASCII, baudrate 19200. Lệnh thứ 
nhất ký tự “A” sau đó là sáu byte, sẽ được PLC cất vào ba ô nhớ từ VB0, dùng làm chu kỳ xung và số 
lượng xung cho lệnh phát xung PTO ở Q0.0. Lệnh thứ hai “BC” cho M0.0 ON.. Khi nhận được dữ liệu 
PLC gởi trả lại thông tin đã nhận, nếu M0.0 chuyển trạng thái từ OFF sang ON thì PLC cho M0.0 OFF 
và phát xung, phát đủ xung gởi lên máy tính ký tự ‘@’. Viết chương trình VB gởi và nhân dữ liệu với 
PLC như hình dưới. Trong ô txtPeriod gõ hai số hex, ô txtNumber gõ bốn số hex, bầm cmdSend gởi lệnh 
thứ nhất, bấm nút cmdRun gởi lệnh thứ hai. Khi PLC gởi trả lại lệnh thứ nhất hiển thị sáu byte trong hai ô 
text dạng số nguyên, khi PLC gởi trả lại lệnh thứ hai cho đèn shpRun màu xanh, khi PLC gởi “@” cho 
đèn này màu đỏ. Khi máy tính gởi lệnh, nếu sau 0.1s không nhận được trả lời từ PLC thì báo nhãn 
lblError “NOT CONNECTED” 
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long 
Dim datain 
Dim received 
Dim timeout 
Private Sub cmdQuit_Click() 
MSComm1.PortOpen = False 
End 
End Sub 
 Private Sub cmdRun_Click() 
lblError.Visible = False 
datain = "" 
Shape1.FillColor = vbRed 
MSComm1.Output = "BC" 
Timer1.Enabled = True 
received = False 
End Sub 
Private Sub cmdSend_Click() 
lblError.Visible = False 
datain = "" 
MSComm1.InBufferCount = 0 
Text3.Text = "" 
Text4.Text = "" 
datain = "" 
MSComm1.Output = "A" & Text1.Text & Text2.Text 
cmdRun.Enabled = True 
Timer1.Enabled = True 
received = False 
End Sub 
Private Sub Form_Load() 
With MSComm1 
.CommPort = 3 
.Settings = "19200,n,8,1" 
.RThreshold = 1 
.InputLen = 0 
.PortOpen = True 
End With 
lblError.Visible = False 
Timer1.Interval = 500 
Timer1.Enabled = False 
Text1.Text = F0 
Text2.Text = 0056 
cmdRun.Enabled = False 
received = False 
datain = "" 
End Sub 
Private Sub MSComm1_OnComm() 
If MSComm1.InBufferCount > 0 Then 
received = True 
datain = datain & MSComm1.Input 
End If 
Text5.Text = datain 
If (Mid(datain, 1, 2) = "BC") Then 
Shape1.FillColor = vbBlue 
cmdRun.Enabled = False 
datain = "" 
End If 
If (Mid(datain, 1, 1) = "A") And Len(datain) > 6 Then 
Text3.Text = Mid(datain, 2, 2) 
Text4.Text = Mid(datain, 4, 4) 
datain = "" 
End If 
If Mid(datain, 1, 1) = "@" Then 
Shape1.FillColor = vbRed 
cmdRun.Enabled = True 
Beep 2000, 500 
datain = "" 
End If 
End Sub 
Private Sub Timer1_Timer() 
If Not (received) Then 
lblError.Visible = True 
Beep 1000, 200 
timeout = True 
End If 
Timer1.Enabled = False 
End Sub 
Chương trình PLC 
Chương trình chính MAIN 
Network 1 AENO 
LD SM0.1 MOVB 1, VB20 
LPS AENO 
MOVB 5, SMB30 MOVB '@', VB21 
ATCH INT1, 19 LRD 
AENO MOVB 0, SMB68 
ATCH INT0, 9 AENO 
AENO MOVW 50, SMW90 
ATCH INT2, 23 AENO 
LRD MOVW 20, SMW92 
ENI LRD 
 MOVD 0, VD10 
MOVB 2#10011101, SMB67 AENO 
AENO MOVD 0, VD14 
MOVB 2#10010100, SMB87 AENO 
AENO MOVW 0, SMW72 
MOVB 100, SMB94 LPP 
LRD RCV VB10, 0
Ngắt Thu INT4 
Network 1 
LD SM0.0 
XMT VB10, 0 
= M0.1 
= Q0.1 
Network 2 
LDB= VB10, 7 
ATH VB12, VB0, 6 
MOVB VB0, SMB69 
MOVW VW1, SMW74 
Network 3 
LDB= VB10, 2 
R Q0.0, 1 
PLS 0 
S M0.0, 1 
Ngắt Truyền INT0 
Network 1 
LDN M0.0 
RCV VB10, 0 
Ngắt PTO INT1 
Network 1 / 
LD SM0.0 
R M0.0, 1 
XMT VB20, 0 

File đính kèm:

  • pdfgiao_trinh_siemens_s7_200_chuong_2_tap_lenh_s7_200_phan_2.pdf