Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
1,52 MB
Nội dung
THÍ NGHIỆM ĐO LƯỜNG & ĐIỀU KHIỂN BẰNG MÁY TÍNH BTN #3: GIAO TIẾP MODBUS TCP/IP VỚI PLC S7-1200 THÁNG NĂM 2022 BỘ MÔN TỰ ĐỘNG, KHOA ĐIỆN ĐIỆN TỬ - ĐẠI HỌC BÁCH KHOA TP.HCM BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài BTN 3: GIAO TIẾP MODBUS TCP/IP VỚI PLC S7-1200 I MỤC ĐÍCH THÍ NGHIỆM: • Giúp sinh viên củng cố kiến thức thiết lập lập trình giao diện kết nối ngoại vi qua cổng LAN • Nắm bắt hiểu sâu giao thức truyền thông Modbus TCP/IP • Lập trình giao tiếp liệu với giao thức Modbus TCP/IP phần mềm • Cấu hình sử dụng lệnh Modbus TCP/IP PLC S7-1200 • Lập trình thu thập liệu thơng qua kết nối TCP/IP • Nắm bắt cấu trúc phần cứng hệ thống điều khiển nhiệt độ lập trình, kiểm chứng đánh giá chất lượng điều khiển hệ thống điều khiển nhiệt độ II CHUẨN BỊ THÍ NGHIỆM: Trước học thí nghiệm, sinh viên cần tìm hiểu trước nội dung sau: - III Tìm hiểu giao thức MODBUS, bao gồm MODBUS RTU, ASCII TCP/IP Tìm hiểu cách lập trình PLC S7-1200 MODBUS Server Tìm hiểu cách lập trình giao diện máy tính ngơn ngữ C# Visual Studio, giao tiếp TCP/IP với PLC S7-1200 Tìm hiểu cách điều khiển mơ hình lị nhiệt (sinh viên tham khảo Thí nghiệm Lý thuyết Điều khiển nâng cao) GIỚI THIỆU MƠ HÌNH THÍ NGHIỆM A Kit thí nghiệm trung tâm – Sinh viên xem Bài thí nghiệm B Kit điều khiển công suất đối tượng: Bộ điều khiển đối tượng lị nhiệt tích hợp vào Kit điều khiển trung tâm có dạng Hình 1: Hình 1: Kit đối tượng điều khiển cơng suất lị nhiệt Page |1 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 - IV Biên soạn: TS Nguyễn Trọng Tài Tín hiệu GND mass chung kit điều khiển trung tâm kit đối tượng (đã nối ngầm) PLS1 tín hiệu điều khiển cơng suất lị nhiệt, mức cao (24V) kích mở lị nhiệt, mức thấp (0V) ngắt lò nhiệt Lưu ý: Để lò nhiệt hoạt động núm vặn nhiệt độ phải giữ nguyên mức suốt trình hoạt động (nên đặt mức nhiệt độ cao 230 độ), núm vặn hẹn phải vặn khỏi vị trí THÍ NGHIỆM: A Thí nghiệm 1: Kết nối Modbus PLC PC Đầu tiên, sinh viên phải lập trình PLC để cấu hình thiết bị MODBUS Server Sinh viên tham khảo Bài thí nghiệm để biết cách tạo project TIA Portal Sau tạo project mới, lập trình bước sau: Tạo data block cấu hình hoạt động Modbus Server: Trong trường CONNECT, thiết lập thông số khởi tạo sau (các thơng số cịn lại giữ ngun): - InterfaceId = 64 - ID = 64 - LocalPort = 502 Page |2 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài Tạo data block trao đỗi liệu PLC máy tính sau: Trong chương trình chính, gọi hàm Modbus server V4.0 sau (sinh viên tìm Instructions Communication Others Modbus TCP MB_SERVER) Sau hồn tất, sinh viên nạp chương trình xuống PLC Page |3 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài Tiếp theo, sinh viên lập trình kết nối Modbus TCP PC PLC đọc ghi multi register với function code 16 (write multi registers) 03 (read holding registers) Thiết kế giao diện có dạng hình dưới: Thực chương trình C# cho phép đọc ghi ghi liệu từ PLC giao diện - Địa PLC kết nối 192.168.0.1, Port 502 cho kết nối Modbus Nút nhấn Write điều khiển ghi liệu vào xuống PLC Nút nhấn Read yêu cầu đọc nội dung ghi từ PLC Địa bắt đầu ghi đọc thiết lập nội dung Start Address Hướng dẫn thực hiện: - Để kết nối theo chuẩn TCP/IP, cần sử dụng thư viện hỗ trợ sau: using System.Net; using System.Net.Sockets; Page |4 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài - Khởi tạo kết nối this.mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this.bufferReceiver = new byte[READ_BUFFER_SIZE]; this.bufferSender = new byte[WRITE_BUFFER_SIZE]; this.mSocket.SendBufferSize = READ_BUFFER_SIZE; this.mSocket.ReceiveBufferSize = WRITE_BUFFER_SIZE; IPEndPoint sever = new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), Convert.ToInt16(txtPort.Text)); this.mSocket.Connect(sever); Dựa giao thức Modbus, thông tin địa chỉ, mã lệnh, liệu thiết lập hàm ghi đọc liệu sau: - Hàm tạo khung truyền Modbus cho thao tác ghi liệu private byte[] WriteMultipleRegistersMsg(ushort id, byte slaveAddress, ushort starAddress, byte function, byte[] values) { int byteCount = values.Length; byte[] frame = new byte[13 + byteCount]; frame[0] = (byte)(id >> 8); frame[1] = (byte)id; frame[2] = 0; frame[3] = 0; frame[4] = 0; frame[5] = (byte)(7 + byteCount); frame[6] = slaveAddress; frame[7] = function; frame[8] = (byte)(starAddress >> 8); frame[9] = (byte)starAddress; ushort amount = (ushort)(byteCount / 2); frame[10] = (byte)(amount >> 8); frame[11] = (byte)amount; frame[12] = (byte)byteCount; Array.Copy(values, 0, frame, 13, byteCount); return frame; } - Hàm tạo protocol Modbus cho thao tác đọc liệu private byte[] ReadHoldingRegisterMsg(ushort id, byte slaveAddress, ushort starAddress, byte function, uint numberOfPoints) { byte[] frame = new byte[12]; Page |5 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài frame[0] = (byte)(id >> 8); frame[1] = (byte)id; frame[2] = 0; frame[3] = 0; frame[4] = 0; frame[5] = 6; frame[6] = slaveAddress; frame[7] = function; frame[8] = (byte)(starAddress >> 8); frame[9] = (byte)starAddress; frame[10] = (byte)(numberOfPoints >> 8); frame[11] = (byte)numberOfPoints; return frame; } Sinh viên tham khảo chương trình C# hồn chỉnh cho phép ghi đọc liệu thực sau: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Collections; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO.Ports; namespace BTN3_TN11 { public partial class Form1 : Form { Page |6 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài private const int READ_BUFFER_SIZE = 50; private const int WRITE_BUFFER_SIZE = 50; private byte[] bufferReceiver = null; private byte[] bufferSender = null; private Socket mSocket = null; public void Connect() { this.mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this.bufferReceiver = new byte[READ_BUFFER_SIZE]; this.bufferSender = new byte[WRITE_BUFFER_SIZE]; this.mSocket.SendBufferSize = READ_BUFFER_SIZE; this.mSocket.ReceiveBufferSize = WRITE_BUFFER_SIZE; IPEndPoint sever Convert.ToInt16(txtPort.Text)); = new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), this.mSocket.Connect(sever); } public void Disconnect() { if (this.mSocket == null) return; if (this.mSocket.Connected) { this.mSocket.Close(); } } public int Write(byte[] frame) { return this.mSocket.Send(frame, frame.Length, SocketFlags.None); } public byte[] Read() { NetworkStream ns = new NetworkStream(this.mSocket); if (ns.CanRead) Page |7 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài { int rs = this.mSocket.Receive(this.bufferReceiver, this.bufferReceiver.Length, SocketFlags.None); } return this.bufferReceiver; } public void CheckValidate(byte[] messageReceived) { try { switch (messageReceived[1]) { case 129://Hex: 81 case 130: case 131: case 132: case 133: case 134: case 143: case 144: switch (messageReceived[2]) { case 1: throw new Exception("01/0x01: Illegal Function."); case 2: throw new Exception("02/0x02: Illegal Data Address."); case 3: throw new Exception("03/0x03: Illegal Data Value."); case 4: throw new Exception("04/0x04: Failure In Associated Device."); case 5: throw new Exception("05/0x05: Acknowledge."); case 6: Page |8 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài throw new Exception("06/0x06: Slave Device Busy."); case 7: throw new Exception("07/0x07: NAK - Negative Acknowledgements."); case 8: throw new Exception("08/0x08: Memory Parity Error."); case 10: throw new Exception("10/0x0A: Gateway Path Unavaliable."); case 11: throw new Exception("11/0x0B: Gateway Target Device Failed to respond."); default: break; } break; } } catch (Exception ex) { txtError.Text = ex.Message; } } private string Display(byte[] data) { string result = string.Empty; foreach (var item in data) { result += string.Format("{0:X2} ", item); } return result; } private string Display1(ushort data) { Page |9 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài string result = string.Empty; result = string.Format("Register {0}: ", data); return result; } public static short ConvertByteArrayToInt(byte HiVal, byte LoVal) { return (short)(HiVal * 256 + LoVal); } //Convert a Byte Array To an Int Array public static short[] ConvertByteArrayToIntArray(byte[] bytes) { short[] values = new short[bytes.Length / 2]; int counter = 0; for (int cnt = 0; cnt < bytes.Length / 2; cnt++) { values[cnt] = ConvertByteArrayToInt(bytes[counter++], bytes[counter++]); } return values; } //Convert a Int To a Byte Array public static byte[] ConvertIntToByteArray(short value) { byte[] byteArray = BitConverter.GetBytes(value); Array.Reverse(byteArray); return byteArray; } //Convert a Int Array To a Byte Array public static byte[] ConvertIntArrayToByteArray(ushort[] value) { byte[] arr = new byte[value.Length*2]; int counter = 0; P a g e | 10 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài for (int cnt = 0; cnt < value.Length; cnt++) { arr[counter++] = (byte)(value[cnt] >> 8); arr[counter++] = (byte)(value[cnt]); } return arr; } public Form1() { InitializeComponent(); } private void btnConnect_Click(object sender, EventArgs e) { try { Connect(); lblConnect.Text = "Connected"; timer1.Enabled = true; } catch (Exception ex) { lblConnect.Text = "IP Address of Port not Available"; ; } } private void ForMain_FormClosing(object sender, FormClosedEventArgs e) { try { Disconnect(); } catch (Exception ex) P a g e | 11 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài { MessageBox.Show(ex.Message); } } private byte[] WriteMultipleRegistersMsg(ushort id, byte slaveAddress, ushort starAddress, byte function, byte[] values) { int byteCount = values.Length; byte[] frame = new byte[13 + byteCount]; frame[0] = (byte)(id >> 8); frame[1] = (byte)id; frame[2] = 0; frame[3] = 0; frame[4] = 0; frame[5] = (byte)(7 + byteCount); frame[6] = slaveAddress; frame[7] = function; frame[8] = (byte)(starAddress >> 8); frame[9] = (byte)starAddress; ushort amount = (ushort)(byteCount / 2); frame[10] = (byte)(amount >> 8); frame[11] = (byte)amount; frame[12] = (byte)byteCount; Array.Copy(values, 0, frame, 13, byteCount); return frame; } private byte[] ReadHoldingRegisterMsg(ushort id, byte slaveAddress, ushort starAddress, byte function, uint numberOfPoints) { byte[] frame = new byte[12]; frame[0] = (byte)(id >> 8); frame[1] = (byte)id; P a g e | 12 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài frame[2] = 0; frame[3] = 0; frame[4] = 0; frame[5] = 6; frame[6] = slaveAddress; frame[7] = function; frame[8] = (byte)(starAddress >> 8); frame[9] = (byte)starAddress; frame[10] = (byte)(numberOfPoints >> 8); frame[11] = (byte)numberOfPoints; return frame; } private void btWriteRegisters_Click(object sender, EventArgs e) { try { byte slaveAddress = 1; byte function = 16; ushort id = function; ushort startAddress = (ushort)txtWrAddress.Value; ushort value1 = (ushort)Convert.ToInt16(txtReg1.Text); ushort value2 = (ushort)Convert.ToInt16(txtReg2.Text); ushort value3 = (ushort)Convert.ToInt16(txtReg3.Text); ushort value4 = (ushort)Convert.ToInt16(txtReg4.Text); ushort value5 = (ushort)Convert.ToInt16(txtReg5.Text); ushort value6 = (ushort)Convert.ToInt16(txtReg6.Text); ushort[] input = new ushort[6] { value1, value2, value3, value4, value5, value6 }; byte[] values = ConvertIntArrayToByteArray(input); txtError.Text = string.Empty; byte[] frame = WriteMultipleRegistersMsg(id, slaveAddress, startAddress, function, values); txtSendMess.Text = Display(frame); P a g e | 13 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài int code = this.Write(frame); //txtError.Text = "OK"; Thread.Sleep(20); byte[] buffReceiver = this.Read(); int SizeByte = bufferReceiver[8]; byte[] byteMsg = null; if (function != bufferReceiver[7]) { byte[] errorbytes = new byte[3]; Array.Copy(bufferReceiver, 6, errorbytes, 0, errorbytes.Length); this.CheckValidate(errorbytes); byteMsg = new byte[9]; Array.Copy(bufferReceiver, 0, byteMsg, 0, byteMsg.Length); } else { byteMsg = new byte[READ_BUFFER_SIZE]; Array.Copy(bufferReceiver, 0, byteMsg, 0, byteMsg.Length); } txtRecMess.Text = Display(byteMsg); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btReadRegisters_Click(object sender, EventArgs e) { P a g e | 14 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài try { byte slaveAddress = 1; byte function = 3; ushort id = function; ushort startAddress = (ushort)txtRdAddress.Value; uint numberOfPoints = 6; byte[] frame = ReadHoldingRegisterMsg(id, slaveAddress, startAddress, function, numberOfPoints); txtSendMess.Text = Display(frame); this.Write(frame); Thread.Sleep(10); byte[] buffReceiver = this.Read(); int SizeByte = bufferReceiver[8]; short[] temp = null; if (function != bufferReceiver[7]) { byte[] byteMsg = new byte[9]; Array.Copy(bufferReceiver, 0, byteMsg, 0, byteMsg.Length); txtRecMess.Text = Display(byteMsg); byte[] errorbytes = new byte[3]; Array.Copy(bufferReceiver, 6, errorbytes, 0, errorbytes.Length); this.CheckValidate(errorbytes); } else { byte[] byteMsg = new byte[9 + SizeByte]; Array.Copy(bufferReceiver, 0, byteMsg, 0, byteMsg.Length); byte[] data = new byte[SizeByte]; txtRecMess.Text = Display(byteMsg); Array.Copy(bufferReceiver, 9, data, 0, data.Length); temp = ConvertByteArrayToIntArray(data); P a g e | 15 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài } if (temp == null) return; string result = string.Empty; foreach (var item in temp) { result += string.Format("{0} / ", item); } txtResult.Text = result; TxtRdReg1.Text = temp[0].ToString(); TxtRdReg2.Text = temp[1].ToString(); TxtRdReg3.Text = temp[2].ToString(); TxtRdReg4.Text = temp[3].ToString(); TxtRdReg5.Text = temp[4].ToString(); TxtRdReg6.Text = temp[5].ToString(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } - - Chạy chương trình kiểm tra truy xuất liệu PLC máy tính (mở đồng thời chương trình giao diện máy tính chức Monitoring TIA Portal để kiểm tra liệu BUFF) Báo cáo kết với thầy/cơ hướng dẫn thí nghiệm P a g e | 16 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài Thí nghiệm 2: Xây dựng điều khiển ON-OFF PID cho mô hình B lị nhiệt Điều khiển ON-OFF cho mơ hình lị nhiệt Chuẩn bị thí nghiệm: Ø Ø Đấu dây kết nối lò nhiệt Panel điều khiển sau: o Nối ngõ Q0.0 với xung PLS1 Bộ cơng suất o Nối tín hiệu Analog từ transmitter vào ngõ vào Analog AI1 Tính tốn thơng số nhiệt độ: o Transmitter cho điện áp từ 2V đến 10V tương ứng với nhiệt độ từ 0oC đến 500oC o Giá trị chuyển đổi ADC nằm ô nhớ IW64 PLC o Giá trị IW64 10V 27648 Như biến đổi tuyến tính từ giá trị ghi IW64 nhiệt độ theo công thức: 𝑡 = 𝑎 + 𝑏 ∗ 𝐼𝑊64 Sinh viên dựa vào kiện cho để xác định a b Ø Thiết lập thời gian hẹn lò nhiệt 60 phút, núm vặn nhiệt độ nên đặt mức cao (230 độ C) Ø Sinh viên tham khảo video hướng dẫn thí nghiệm đăng hệ thống e-learning Yêu cầu: - Điều khiển ON-OFF cho hệ thống lò nhiệt, vùng trễ ±3! 𝐶, nhiệt độ đặt người dùng nhập vào giao diện máy tính - Chu kì lấy mẫu 0.5s - Việc điều khiển thực từ máy tính thơng qua việc ghi tín hiệu điều khiển vào ghi BUFF.data[0] - Tín hiệu nhiệt độ gửi lên PC thông qua ghi BUFF.data[6] - Sử dụng công cụ Chart (hoặc ZedGraph) để vẽ đồ thị nhiệt độ theo thời gian - Từ kết thu được, sinh viên tính hệ số điều khiển PID theo công thức: 𝜋𝑀 𝐾" cos(Φ$ ) 𝐾" = 𝐾# = 𝑇% = 𝑇" 9tan(Φ$ ) + = + tan& (Φ$ )? 4𝜋 𝛼 𝑇' = 𝛼𝑇% Trong M TC biên độ dao động chu kì tới hạn xác định theo hình minh họa phía Φ$ 𝛼 thơng số thay đổi được, sinh viên chọn Φ$ = 75! 𝛼 = P a g e | 17 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài Điều khiển PID mơ hình lị nhiệt Hướng dẫn thiết lập PWM cho mơ hình lị nhiệt: - - Để điều khiển lò nhiệt với tỉ lệ phần trăm cơng suất trải dài từ 0% đến 100%, sử dụng nhiều cách khác Một phương án đơn giản trước đóng mở theo chu kì điều khiển, ví dụ cần đưa 60% cơng suất cho lị nhiệt lập trình 100 chu kì lấy mẫu 60 chu kì mở lị nhiệt 40 chu kì đóng Phương án thường gọi lập trình PWM phần mềm (software PWM), thường tiêu tốn nhiều thời gian để lập trình hữu dụng phần cứng khơng có ngoại vi PWM (ví dụ vi điều khiển 8051) Đối với thiết bị PLC S7-1200 có hỗ trợ sẵn PWM nên sử dụng trực tiếp chức để tiết kiệm thời gian Sinh viên thiết lập PWM chân P0.0 PLC S7-1200 theo bước sau Đầu tiên, vào Device configuration Properties General Pulse Generators (PTO/PWM) PTO1/PWM1, chọn Enable this pulse generator để kích hoạt chức PTO/PWM P a g e | 18 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài - Chuyển sang tab Parameter assignment, sinh viên thiết lập hình để cấu hình chức PWM - Kiểm tra ngõ PWM chân Q0.0 tab Hardware outputs - Kiểm tra ghi để điều khiển PWM ghi QW1000 tab I/O addresses P a g e | 19 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài - Kiểm tra thông số HID tab Hardware identifier - Trong chương trình chính: tạo hàm CTRL_PWM để cấu hình điều khiển PWM hình Trong ngõ vào PWM thơng số HID kiểm tra phía - Để cập nhật thơng số chu kì, ghi giá trị điều khiển vào ghi QW1000 Lưu ý với cấu hướng dẫn trên, ghi QW1000 tương ứng với việc ngắt lị nhiệt hồn tồn (0% cơng suất), ghi QW1000 100 ứng với việc cấp 100% công suất u cầu điều khiển PID cho mơ hình lị nhiệt: - Điều khiển PID cho hệ thống lò nhiệt, nhiệt độ đặt người dùng nhập vào giao diện máy tính Chu kì lấy mẫu 0.2s Các thơng số điều khiển xác định theo công thức phần điều khiển ONOFF, phương trình điều khiển PID miền rời rạc sau (trong k thời điểm tại, k-1 trước chu kì lấy mẫu): ) 𝑇( 𝑇% 𝑢 (𝑘 ) = 𝐾# D𝑒(𝑘) + F 𝑒(𝑛) + H𝑒(𝑘) − 𝑒(𝑘 − 1)KL 𝑇' 𝑇( *+, P a g e | 20 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 - Biên soạn: TS Nguyễn Trọng Tài Việc điều khiển thực từ máy tính thơng qua việc ghi tín hiệu điều khiển (là phần trăm cơng suất) vào ghi BUFF.data[0] Tín hiệu nhiệt độ gửi lên PC thơng qua ghi BUFF.data[6] Ngồi ra, thơng số KP, TI, TD người dùng nhập vào giao diện máy tính Sử dụng cơng cụ Chart (hoặc ZedGraph) để vẽ đồ thị nhiệt độ theo thời gian Lưu ý: sinh viên phải thực scale tín hiệu điều khiển u(k) từ đến thành phần trăm công suất từ đến 100 phần trăm Nội dung Báo cáo thí nghiệm: - Trình bày giải thuật điều khiển ON/OFF thực thí nghiệm 2.1? Trình bày giải thuật điều khiển PID thực thí nghiệm 2.2? (Các) đoạn Chương trình liên quan đến thuật toán điều khiển ON/OFF? (Các) đoạn Chương trình liên quan đến thuật tốn điều khiển PID? Nêu cách thiết lập PLC hoạt động phát xung PWM, chương trình PLC nhận lệnh thực điều khiển PWM? Trình bày giải pháp khác có thực cho tốn thí nghiệm 2.1 2.2 P a g e | 21 BTN 3: Giao tiếp MODBUS TCP/IP với PLC S7-1200 Biên soạn: TS Nguyễn Trọng Tài Bảng nhận xét, đánh giá GV Thông tin Sinh viên: Nhóm: Họ Tên SV: MSSV: Các Nhiệm vụ nội dung thực buổi thí nghiệm: Đánh giá GV: STT Tiêu chí Chuẩn bị Bài TN Mức hồn thành BTN Mức Mức Mức Mức Mức Mức độ nắm bắt nội dung thí nghiệm Mức độ giải toán trực tiếp GVHD Nội dung báo cáo thí nghiệm Mức độ trả lời câu hỏi BTN Tính sáng tạo giải thuật đề xuất Liên kết thành viên nhóm Các ý kiến khác: P a g e | 22 ... THIỆU MƠ HÌNH THÍ NGHIỆM A Kit thí nghiệm trung tâm – Sinh viên xem Bài thí nghiệm B Kit điều khiển công suất đối tượng: Bộ điều khiển đối tượng lị nhiệt tích hợp vào Kit điều khiển trung tâm... cáo thí nghiệm: - Trình bày giải thuật điều khiển ON/OFF thực thí nghiệm 2.1? Trình bày giải thuật điều khiển PID thực thí nghiệm 2.2? (Các) đo? ??n Chương trình liên quan đến thuật tốn điều khiển. .. Nguyễn Trọng Tài Thí nghiệm 2: Xây dựng điều khiển ON-OFF PID cho mơ hình B lị nhiệt Điều khiển ON-OFF cho mơ hình lị nhiệt Chuẩn bị thí nghiệm: Ø Ø Đấu dây kết nối lò nhiệt Panel điều khiển sau: o