IX. MỘT VÀI LĨNH VỰC TIÊU BIỂU ỨNG DỤNG PLC
TRUYỀN THƠNG NỐI TIẾP DÙNG VISUAL BASIC
I. TRUYỀN THƠNG NỐI TIẾP DÙNG VISUAL BASIC
Bình thường, khi chạy phần mềm Visual Basic ta chỉ thấy một số thành phần
quen thuộc trên hộp cơng cụ. Nhưng VB cho phép nhiều thành phần cĩ thể bổ sung
thêm vào. Điều khiển truyền thơng Mscomm của Visual Basic là một trong số các
đối tượng được bổ sung để tham gia vào một số việc truyền nhận dữ liệu thơng qua cổng nối tiếp.
Trong Visual Basic 6.0 ta cĩ thể bổ sung thành phần Mscomm như sau : Chọn Project( Component(ctrl-t) sẽ xuất hiện cửa sổ. Sau đĩ chọn Microsoft Comm
Control 6.0, Mscomm sẽ xuất hiện trên thanh cơng cụ.
Điều khiển truyền thơng cung cấp hai khả năng để trao đổi thơng tin :
Điều khiển sự kiện
Truyền thơng điều khiển sự kiện là phương pháp tốt nhấtđược sử dụng trong
quá trình trao đổi thơng tin nối tiếp khi nĩ giải phĩng máy tính để làm các cơng việc
khác. Trong nhiều tình huống, ta cần được thơng báo về sự thay đổi. Thí dụ như ta
cần biết khi cĩ ký tự gửi đến hoặc sựthay đổi xảy ra trên đường DCD (Data Carier Detect) hoặc đường RTS(Request to send). Để làm điều đĩ, ta sẽ phải dùng sự kiện
truyền thơng OnComm để bẫy và điều khiển các sự kiện. Điều khiển truyền thơng
cịn phát hiệnvà điều khiển các lỗi truyền thơng.
Hỏi vịng ( Polling )
Ta cũng cĩ thể hỏi vịng các sự kiện và lỗi bằng cách kiểm tra giá trị của đặc
tính ComEvent sau mỗi chu kỳ của chương trình để xác định xem liệu một sự kiện
hoặc một lỗi đã xuất hiện. Chẳng hạn ,chương trình cĩ thể tạo vịng lặp để chờ một
ký tự cần được nhận. Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận. Thơng thường, phương pháp này được sử dụng khi chương trình cĩ thời gian để tiến hành hỏi vịng bộ nhận thơng tin, hay nĩi cách khác là trong những ứng dụng khơng lớn.
Đặc tính
Theo mặc định, cổng thứ nhất tạo ra đối tượng cĩ tên là MSComm1, đối tượng thứ hai là MSComm2,…
Thí dụ chỉ ra cách truyền thơng qua cổng nối tiếp cĩ thể được tiến hành như
thế nào bằng cách sử dụng một MODEM.
Private sub Form_load() Dim Instring as String Mscomm1.ComPort=1
‘sử dụng COM1
Mscomm1.Setting=”9600,N,8,1” ‘9600baud,no parity,8bit data,1bit stop Mscomm1.InputLen=0
‘Mscomm đọc heat bộ đệm nhận khi dùng lệnh Input
Mscomm1.PortOpen=True ‘mở cổng
Mscomm1.Output=”ATVQ0”&Chr$(13) ‘gửi lệnh attention tới MODEM
‘đợi dữ liệu trở lại cổng nối tiếp
Do DoEvents
Buffer$=Buffer$&Mscomm1.Input
Loop Until InStr(Buffer$,”OK”&vbCRLF)
‘đọc dữ liệu trả lời “OK”
Mscomm1.PortOpen=False
‘đĩng cổng nối tiếp
End Sub
Settings:
Các đặc tính settings đặt và trả lại các thơng số truyền thơng cho cổng RS-
232, như tốc độ baud, chẳn lẻ, số bit dữ liệu và số các bit dừng.
Cú pháp của câu lệnh là:
Nếu paramString khơng cĩ khi mở cổng thì điều khiển truyền thơng phát sinh ra lỗi 380.
Paramstring là một xâu chứa bốn thơng số thiết lập cho cổng RS-232 và cĩ dạngnhư sau:
“BBBB, P, D, S”
Ở đây, BBBB xác định tốc độ baud, P là bit chỉ tính chẳn lẻ, D là số bit dữ
liệu, và S là số các bit dừng (bit stop). Giá trị mace định của Paramstring là: “9600, N, 8, 1”
Comport :
Đặc tính này đặt và trả lại số cổng truyền thơng. Cú pháp của câu lệnh là: [form]MSComm.CommPort[=port number%]
Trong khi thiết kế ta cĩ thể đặt portnumber bằng một giá trị name trong
khoảng từ 1 đến 99(giá trị mace định là 1). Trước khi dùng lệnh này, phải thiết lập
cổng bằng CommPort. Nếu ta dùng đặc tính PortOpen trước khi thiết lập cổng bằng
CommPort thì điều khiển truyền thơng sinh ra lỗi 68 (lỗi chu6a cĩ thiết bị hoặc
cổng khơng tồn tại).
Đặc tính PortoPen
Đặc tính PortOpen đặt và trả lại trạng thái của cổng truyền thơng(đĩng hoặc
mở). Đặc tính này khơng cĩ trong thời gian thiết kế chương trình. Cú pháp câu lệnh
là:
[form]MSComm.PortOpen[=True/False]
Thơng số thiết lập là True để mở cổng, cịn False để đĩng (giải phĩng) cổng và xố nội dung các bộ đệm nhận và truyền (tác động này tự động xảy ra khi một ứng
dụng được đĩng).
Trước khi dùng đặc tính này, phải đặt số cổng bằng đặc tính CommPort, nếu ta quên đi đặc điểm này thì lỗi 68 phát sinh.
Thí dụ về mở cổng truyền thơng số 1(COM1) với tốc độ Baud là 4800 Baud, khơng kiểm tra tính chẳn lẻ, 8 bit dữ liệu, 1 bit stop.
MSComm1.Setting=”4800, N, 8, 1” Kiểu dữ liệu MSComm1. Setting là String.
Đặc tính Input
Input trả lại và xố bỏ một chuỗi ký tự từ bộ đệm nhận.Đặc tính này khơng cĩ sẵn trong khi thiết kế và là chỉ đọc (Read_only) khi chạy chương trình. Cú pháp của
câu lệnh là:
[form]MSComm.Input
Đặc tính InputLen qui định số ký tự được đọc bởi câu lệnh Input.Để xác định
số các ký tự trong bộ đệm, đặc tính InBufferCount được kiểm tra. Đặt InputLen
bằng 0 để đọc heat bộ đệm nhận.
Đặc tính InputMode quyết định kiểu dữ liệu thu về qua đặc tính Input. Nếu đặc tính này được đặt là CommInputModeText thì đặc tính Input sẽ trả về dữ liệu
kiểu Text. Nếu đặc tính này được đặt là CommInputModeBinary thì Input sẽ trả về
dữ liệu nhị phân.
Thí dụ chỉ cách đọc dữ liệu từ bộ đệm nhận : Mscomm1.InputLen=0
‘đọc toàn bộ nội dung của bộ đệm nhận
If Mscomm1.InBufferCount then ‘kiểm tra cĩ dữ liệu hay khơng
InString$=Mscomm1.Input End if
Kiểu dữ liệu của đặc tính này là Variant
Đặc tính InBufferSize
Đặt và trả lại kích thước bộ đệm nhận, tính theo số byte.Cú pháp của câu lệnh
là :
[form]Mscomm.InBufferSize[=numbyte%]
Đặc tính này cĩ liên quan đến kích thước bộ đệm nhận. Giá trị mặc định là 1024 bytes. Kích thước của bộ đệm phải được đặt sao cho nĩ cĩ thể cất giữ được số
lớn nhất của các ký tự sẽ được nhận trước khi chương trình ứng dụng cĩ thể đọc
chúng từ bộ đệm, trừ khi ta làm việc ở chế độ bắt tay (handshaking). Kiểu dữ liệu của đặc tính này là Integer
Đặc tính InBufferCount
Trả lại số ký tự trong bộ đệm nhận. Nĩ cũng cĩ thể được dùng để xố bộ đệm
bằng cách đặt số của các ký tự bằng 0. Đặc tính này khơng cĩ trong thời gian thiết
kế chương trình. Cú pháp của câu lệnh này là: [form]Mscomm.InBufferCount[=Count%]
Ta cĩ thể xố bộ đệm nhận bằng cách đặt đặc tính InBufferCount=0
Kiểu dữ liệu của đặc tính này là Integer.
Đặc tính Output
Đặc tính Output sẽ viết một chuỗi ký tự vào bộ đệm truyền, đặc tính này khơng cĩ trong thời gian thiết kế chương trình. Cú pháp của câu lệnh này là :
Mscomm1.Output[=OutString$]
Thí dụ sau cho biết cách gửi ký tự mà người gõ từ bàn phím: Private Sub Form_load(key Ascii as Integer)
Mscomm1.Outport=Chr$(Key Ascii) End sub
Đặc tính Output cĩ thể xuất dữ liệu dạng Text hay Binary. Để gửi dữ liệu
Text, ta phải khai báo một biến Variant và cho nĩ chứa chuỗi muốn gửi sau đĩ gán
biến này cho một đặc tính Output. Để gửi dữ liệu Binary, ta phải truyền một biến Variant chứa một mảng các byte cho đặc tính Output.
Kiểu dữ liệu của dạng này là Variant.
Đặc tính OutputBufferSize
Đặc tính này đặt và trả lại kích thước của các ký tự trong bộ đệm truyền. Cú pháp của câu lệnh này là :
[form]Mscomm.OutputBufferSize[=numbyte%] Giá trị mặc định của đặc tính này là 512 bytes
Chú ý:
Khơng được nhầm lẫn giữa hai đặc tính OutBufferCount và OutBufferSize với
nhau. Đặc tính OutBufferCount nĩi lên số byte hiện đang cĩ trong bộ đệm truyền,
cịn OutBufferSize qui định tổng kíchthước của bộ đệm truyền.
thường nên bắt đầu kích thước bộ đệm truyền 512 bytes. Nếu lỗi tràn xảy ra phải tăngkích thước bộ đệm thích hợp.
Đặc tính OutBufferCount:
Đặc tính này trả lại số ký tự trong bộ đệm truyền. Nhờ đặc tính này, ta cĩ thể
xố nội dung bộ đệm truyền bằng cách đặt giá trị của OutBufferCount=0.Cú pháp
của câu lệnh này là:
[form]Mscomm.OutBufferCount[=value%] Kiểu dữ liệu của đặc tính này là Integer.
Đặc tính SThreshold
Đặt và trả lại số ký tự tối thiểu của các ký tự cĩ thể cho phép trong bộ đệm
truyền trước khi điều khiển truyền thơng xác lập đặc tính CommEvent và phát sinh sự kiện OnComm. Xác lập đặc tính SThreshold bằng 0 để vơ hiệu hố sự phát sinh sự kiện OnComm. Ngược lại, nếu đặt SThreshold bằng 1 thì điều khiển truyền
thơng phát sinh sự kiện OnComm (sự kiện OnComm được gọi) khi bộ đệm truyền
khơng cĩ dữ liệu (hay bộ đệm truyền rỗng). Cú pháp của câu lệnh này là : [form}MScomm.SThreshold[=numChars%]
II.CƠ SỞ DỮ LIỆU