Professional Documents
Culture Documents
DeHK1 18 19 CQ DA
DeHK1 18 19 CQ DA
Câu 1 : Viết chương trình PLC S7-1200 và thực hiện giao tiếp máy tính qua cổng TCP/IP điều
khiển và giám sát hoạt động của đèn giao thông, chuẩn truyền Modbus TCP.
a. (L.O.1) (1đ)
- Nêu phần mềm lập trình PLC và giao diện máy tính để thực hiện bài toán.
o Lập trình cho PLC Siemens s71200 : TIA Portal
o Lập trình giao diện: Visual Studio, Labview,…
- Lập bảng mapping thông số và tín hiệu điều khiển giữa PLC và giao diện máy tính.
Vi dụ:
b. (L.O.2) (1.5đ) Viết chương trình PLC thực hiện liên kết thông số từ PC và thực hiện điều
khiển đèn giao thông.
- Sử dụng hàm Modbus server V4.0 để liên kết dữ liệu với datablock theo bảng mapping ở câu a:
- Sinh viết chương trình điều khiển đèn giao thông sử dụng 1 timer hoặc 4 timer; không hiển thị
led 7 đoạn; sử dụng hàm move để sao chép các dữ liệu liên quan vào datablock.
c. (L.O.4) (1.5đ) Thiết kế giao diện và viết chương trình giao diện cho PC.
- Xác định và nêu hoạt động cơ bản các hàm Modbus liên kết dữ liệu giữa PC PLC
Sinh viên giải thích hoạt động của các hàm ReadmultiRegister và WritemultiRegister theo giao thức
Modbus TCP trên C#.
- Viết chương trình cấu hình và kết nối giữa PLC và PC
Sinh viên viết đoạn chương trình kết nối TCP/IP trên C#:
this.mSocket.SendBufferSize = READ_BUFFER_SIZE;
this.mSocket.ReceiveBufferSize = WRITE_BUFFER_SIZE;
this.mSocket.Connect(sever);
- Giã sử các hàm Modbus có sẵn, viết chương trình cho nút nhấn “Update_Pars” cho phép
cập nhật nội dung đèn XA, VA, XB, VB xuống PLC; và chương trình cho Timer cập nhật
trạng thái PLC.
Sinh viên sử dụng hàm WriteMultiRegister() trong Update_Pars để cập nhật thông tin xuống PLC;
Sử dụng ReadMutiRegister() trong ngắt timer để đọc thông tin từ PLC về trạng thái đèn.
a. (L.O.3) (1.5đ) Thiết kế và vẽ mạch card thu thập dữ liệu thỏa mãn các yêu cầu sau:
Ngõ vào, ngõ ra: 3 kênh ADC input hoạt động đồng thời, 4 kênh PWM.
Chip Vi Xử lý AVR, PIC hoặc ARM; Chip ADC 0808
Kết nối với PC qua chuẩn RS-485 full duplex.
Vd: “A0” – đọc ADC0; “P0,050,0100” xuất PWM0, độ rộng xung 50%, chu kỳ 100ms
+ Các hàm
- Hàm xử lý thông tin: Kiểm tra <Mã lệnh>, thực thi các mã lệnh liên quan
- Hàm đọc ADC có nội dung như sau:
ADC_Start = 1;
ADC_Start =0;
Delay_us(1)
ADC1_Read = 1;
ADC1_Data = PINB;
ADC1_Read = 0;
ADC2_Read = 1;
ADC2_Data = PINB;
ADC2_Read = 0;
ADC3_Read = 1;
ADC3_Data = PINB;
ADC3_Read = 0;
- Hàm xuất PWM1
If (PWM1time_count<PW1) PORTC.0=1;
Else PORTC.0=0;
If (PWM1time _count>=T1) PWM1time _count =0;
Tương tự cho các chân PWM2,3,4 với PORTC.1; PORTC.2 và PORTC.3.
c. (L.O.6) (2đ) Thiết kế giao diện và viết chương trình điều khiển ON/OFF trên PC điều khiển
2 lò nhiệt với mạch vừa được thiết kế trên. Biết rằng: Chu kỳ lấy mẫu là 1000ms, tầm nhiệt
độ của lò 1 là 150OC; lò 2 là 250OC; các cảm biến nhiệt độ đã được xử lý và cho ra điện áp 0-
5V trong tầm nhiệt độ 0-400OC.
- Trong ngắt timer sử dụng ReadADC cho phép đọc dữ liệu cả 3 kênh ADC
- Trong hàm ngắt nhận nối tiếp
o Kiểm tra mã lệnh trã dữ liệu ADC về
o Sử dụng hàm Split để tách các dữ liệu ADC1, ADC2,ADC3.
o Sử dụng hàm convert để chuyển sang dạng dữ liệu số nguyên
o Chuẩn hóa nhiệt độ T1 = ADC1_Value*400/255; T2 = ADC2_Value*400/255
o Xuất các giá trị T1, T2 ra các ô PV
o So sánh với nhiệt độ đặt và điều khiển
If T1<T1_ref OutPWM(0,100,1000)
Else OutPWM(0,0,1000”)
If T2<T2_ref OutPWM(1,100,1000)
Else OutPWM(1,0,1000”)
2
27pF LD1 34 20 RS
RB1/AN10/INT1/SCK/SCL RD1/SPP1
X1 LD2 35
RB2/AN8/INT2/VMO RD2/SPP2
21 RW
LD3 36 22 E
20MHz RB3/AN9/CCP2/VPO RD3/SPP3
C2 PB1 37 27 D4
RB4/AN11/KBI0/CSSPP RD4/SPP4
PB2 D5
1
38 28
RB5/KBI1/PGM RD5/SPP5/P1B
PB3 39 29 D6
RB6/KBI2/PGC RD6/SPP6/P1C
27pF 40 30 D7
RB7/KBI3/PGD RD7/SPP7/P1D
R1
8 10k
RE0/AN5/CK1SPP
9
RE1/AN6/CK2SPP
10
RE2/AN7/OESPP
18 1
VUSB RE3/MCLR/VPP
J1 PIC18F4550
USBCONN
R6 R7 R8
LD0
LD1
LD2
LD3
100R 100R 100R
D1 D2 D3 D4
GND
VCC
D+
D-
R2 R3 R4 R5
100R 100R 100R 100R
1
3
2
4
D+
D-
PB3
PB2
PB1
Biết cấu hình USB của VXL như sau: Manufacture = USB CARD, Product ID = 20182512; Vendor
ID = 2018
a. (L.O.1) Xác định frame dữ liệu giữa PC và mạch giao tiếp trên
Buffer[0] – mã lệnh
c. (L.O.6) Viết bộ thư viện liên kết động cho Card trên với các hàm sau:
Card_connect(): kiểm tra và kết nối với đúng Card
Write_MultiDO(channel1, value,… channelx, value): điều khiển nhiều DO của Card;
int i;
HID_Connected.DropDownItems.Clear();
{
USBDevice Devices = USB_Devices[i];
PID_USB[i] = Devices.ProductID;
VID_USB[i] = Devices.VendorID;
items[i].Text = Devices.Product;
if (Devices.Product == "20182512")
My_Device = i;
HID_Connected.DropDownItems.AddRange(items);
CNBM CBGD