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ện và đ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.
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ạng như 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).
Đặ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ích thướ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ăng kí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