CƠ SỞ LÝ THUYẾT
Tổng quan về ADE7753
2.1.1 Giới thiệu tổng quan về ADE7753
ADE7753 do hãng Analog Device của Mỹ sản xuất và chế tạo
ADE7753 Có độ chính xác cao, tuân theo chuẩn IEC 61036 và IEC 1268
Tích hợp bộ tích phân số cho phép giao diện trực tiếp tới cảm biến dòng điện đầu ra tỷ lệ với di/dt
Mạng lưới chân (PGA) trong các kênh dòng điện cho phép giao diện trực tiếp tới shunt và bộ biến đổi dòng điện
IC chuyên dụng này được thiết kế để đo lường năng lượng hoạt động và năng lượng biểu kiến, cũng như dạng sóng và giá trị hiệu dụng của dòng điện và điện áp Đặc biệt, thiết bị này có độ sai số nhỏ hơn 0.1% trong các phép đo năng lượng, đảm bảo độ chính xác cao trong ứng dụng.
Người dùng có thể thiết lập chương trình ngưỡng cho sự gia tăng đột ngột của điện áp dây, đồng thời kiểm tra giá trị hiệu dụng (SAG) và bộ phận cung cấp công suất (PSU).
Cho phép hiệu chuẩn số cho nguồn, pha và bù đầu vào Lập trình tần số xung ngõ ra
Giao diện trực tiếp với thiết bị ngoại vi thông qua chuẩn giao tiếp SPI
Có 2 ADC cấu trúc sigma – delta và DSP cho dữ liệu với độ chính xác cao trong điều kiện môi trường và thời gian biến động mạnh
Nguồn nuôi 5V, công suất thấp (25mW)
Hình 2.1: Sơ đồ chân của ADE7753
Trương Doãn Nam & Nguyễn Chí Kỳ 11
2.1.2 Sơ đồ khối và tính năng của ADE7753
2.1.2.1 Sơ đồ khối của ADE7753
Hình 2.2: Sơ đồ khối chức năng của ADE7753 2.1.2.2 Tính năng của ADE7753
ADE7753 là một bộ chuyển đổi tương tự/số (ADC) tích hợp chức năng xử lý tín hiệu số (DSP), hoạt động hiệu quả trong môi trường và thời gian biến đổi lớn Thiết bị này bao gồm 2 lớp phụ, ADC 16bit, bộ tích phân số trên kênh 1, mạch tham chiếu, cảm biến nhiệt độ và các tín hiệu cần thiết để thực hiện các phép đo công suất biểu kiến, công suất hoạt động, đo điện áp dây theo thời gian và tính giá trị hiệu dụng (rms) cho kênh điện áp và dòng điện.
ADE7753 cung cấp giao diện nối tiếp để đọc dữ liệu và tần số xung nhịp (CF) tỷ lệ thuận với công suất hoạt động Hệ thống hiệu chỉnh bao gồm kênh bù, hiệu chỉnh pha và hiệu chỉnh nguồn, đảm bảo độ chính xác cao Ngoài ra, thiết bị cũng có khả năng phát hiện sự biến đổi điện áp thấp hoặc cao trong thời gian ngắn.
Thanh ghi trạng thái ngắt là thành phần quan trọng trong việc quản lý ngắt, cho phép điều khiển việc phát tín hiệu trên chân IRQ Khi cực máng mở, đầu ra của tín hiệu hoạt động ở mức logic thấp, đảm bảo việc xử lý ngắt diễn ra hiệu quả.
Trương Doãn Nam & Nguyễn Chí Kỳ 12
2.1.3 Quá trình lấy mẫu và thực hiện của ADE7753
2.1.3.1 ADC kênh 1 và quá trình lấy mẫu kênh 1
Trong chế độ lấy mẫu dạng sóng, một dây đầu ra ADC, bù 2, dữ liệu dạng word
ADC 24 bit có khả năng đạt tối đa 27.9 kSPS (CLKIN/128) Với tín hiệu đầu vào tương tự hoàn chỉnh là 0.5 V (hoặc 0.25 V hoặc 0.125 V), mã đầu ra của ADC dao động khoảng giữa 0x28 51EC (+2,642,412 d) và 0xD7 AE14 (-2,642,412 d).
Hình 2.3: Quá trình xử lí tín hiệu trên kênh 1 của ADE7753
Các mẫu dạng sóng có thể được gửi đến thanh ghi dạng sóng (MODE) để hệ thống chủ (MCU) thực hiện việc đọc Trong chế độ lấy mẫu dạng sóng, việc thiết lập bit WSMP là cần thiết.
3) trong thanh ghi cho phép ngắt ở mức logic 1 Công suất hoạt động và công suất biểu kiến cũng như sự tính toán năng lượng vẫn không bị gián đoạn trong quá trình lấy mẫu dạng sóng
Hình 2.4: Thời gian lấy mẫu của ADE7753
Trương Doãn Nam & Nguyễn Chí Kỳ 13
Trong chế độ lấy mẫu dạng sóng, người dùng có thể chọn một trong bốn phạm vi lấy mẫu đầu ra là 27.9 kSPS, 14 kSPS, 7 kSPS hoặc 3.5 kSPS bằng cách sử dụng bit 11 và bit 12 của thanh ghi chế độ (WAVSEL) Đầu ra yêu cầu ngắt IRQ và lấy mẫu tín hiệu mới sẽ hoạt động ở mức thấp 24 bit dữ liệu dạng sóng được chuyển từ một byte ADE7753, với byte quan trọng nhất được dịch chuyển ra đầu tiên và dữ liệu dạng word được canh phải Đầu ra ngắt IRQ sẽ giữ ở mức thấp cho đến khi có yêu cầu đọc ngắt để thiết lập lại thanh ghi.
Tính dòng điện hiệu dụng(IRMS) trên kênh 1
Giá trị hiệu dụng(rms) của một tín hiệu liên tục V(t) được tính như sau:
[2.1] Ðối với thời gian lấy mẫu tín hiệu, việc tính giá trị rms liên quan đến tín hiệu, lấy trung bình, và có được căn bậc hai như sau:
ADE7753 thực hiện tính toán đồng thời giá trị RMS cho kênh 1 và kênh 2 trong các thanh ghi riêng biệt Quá trình xử lý tín hiệu để tính toán RMS trên kênh 1 được minh họa trong Hình 2.4 Giá trị RMS trên kênh 1 được xử lý từ mẫu trong chế độ lấy mẫu dạng sóng kênh 1 và được lưu trữ trong thanh ghi IRMS không dấu, 24 bit Một LSB của thanh ghi RMS kênh 1 tương đương với một LSB của mẫu dạng sóng kênh 1, với tốc độ cập nhật phép đo RMS kênh 1 là CLKIN/4.
Hình 2.5: Quá trình tính toán IRMS trên kênh 1
Trương Doãn Nam & Nguyễn Chí Kỳ 14
Với tín hiệu đầu vào tương tự tối đa là 0,5 V, bộ chuyển đổi ADC tạo ra mã đầu ra khoảng ±2,642,412d Giá trị rms tương đương của tín hiệu xoay chiều hoàn chỉnh đạt 1,868,467d (0x1C82B3).
Phép đo RMS dòng diện được cung cấp trong ADE7753 chính xác đến 0.5% với tín hiệu đầu vào giữa thang đủ và thang đủ/100
Hiệu chỉnh bù RMS trên kênh 1
ADE7753 tích hợp một thanh ghi bù IRMSOS 12 bit trên kênh 1, giúp loại bỏ bù trong tính toán RMS Giá trị bù này cần thiết để giảm thiểu ảnh hưởng của nhiễu đầu vào, được tích hợp trên thành phần một chiều của V2(t) Việc tính toán bù này đảm bảo rằng nhiễu đầu vào không làm sai lệch phép đo RMS Một LSB của bù RMS kênh 1 tương đương khoảng 32,768 LSB của bình phương thanh ghi RMS kênh 1.
2.1.3.2 ADC kênh 2 và quá trình lấy mẫu kênh 2
Hình 2.6: Quá trình xử lí tín hiệu trên kênh 2 của ADE7753
Trong chế độ lấy mẫu dạng sóng kênh 2 (MORE[14:13] = 1,1 và WSMP = 1), độ rộng mã đầu ra ADC cho kênh 2 khác với kênh 1, với dạng sóng lấy mẫu kênh 2 là một word 16 bit và 24 bit dấu giới hạn Để thực hiện lấy mẫu trên kênh 2, hiệu điện áp giữa V2P và V2N không được vượt quá 0,5V Với điện áp đầu vào tối đa là ±0.5V khi giá trị khuếch đại PGA là 1, đầu vào từ ADC dao động trong khoảng 0x2852 và 0xD7AE (±10,322d) Trước khi được truyền cho thanh ghi dạng sóng, các giá trị này cần được xử lý đúng cách.
Trương Doãn Nam và Nguyễn Chí Kỳ đã nghiên cứu về đầu ra ADC được truyền qua tín hiệu đơn cực, với bộ lọc thông thấp có tần số cắt 140 Hz Bộ lọc thông thấp LPF1 có chức năng làm suy giảm tín hiệu, như được thể hiện trong Hình 2.6 với đại lượng và đáp ứng pha của bộ lọc này.
Hình 2.7: Đáp ứng pha của bộ lọc thông thấp LPF1
Nếu tần số là 50Hz, tín hiệu tại đầu ra của LPF1 sẽ giảm 10%
Kênh 2 chỉ có một phạm vi đầu vào tương tự Cũng giống như kênh 1, kênh 2 có một PGA với sự lựa chọn hệ số khuếch đại là 1, 2, 4, 8 và 16 Ðối với phép đo năng lượng, đầu ra của ADC được truyền trực tiếp cho các bộ phận và không được lọc qua bộ lọc thông thấp LPF1 Trong chế độ lấy mẫu dạng sóng, một trong bốn tốc độ lấy mẫu đầu ra có thể được chọn bằng cách sử dụng bit 11 và 12 của thanh ghi chế độ Tốc độ lấy mẫu đầu ra sẵn có là 27.9 kSPS, 14 kSPS, 7 kSPS hoặc 3.5 kSPS
Trương Doãn Nam & Nguyễn Chí Kỳ 16
Tính toán giá trị hiệu dụng RMS trên kênh 2
Hình 2.8: Quá trình tính toán URMS trên kênh 2
Tổng quan về họ vi điều khiển PIC
2.2.1 Một số đặc tính của Vi điều khiển PIC
PIC là dòng vi điều khiển RISC được sản xuất bởi Microchip Technology, bắt nguồn từ sản phẩm đầu tiên PIC1650 do Microelectronics Division của General Instruments phát triển Tên gọi PIC là viết tắt của “Programmable Intelligent Computer” (Máy tính khả trình thông minh) và được đặt cho dòng sản phẩm đầu tiên này PIC1650 được thiết kế để giao tiếp với các thiết bị ngoại vi của máy chủ 16 bit CP1600, do đó, nó cũng được biết đến với tên gọi “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi).
Trương Doãn Nam và Nguyễn Chí Kỳ đã phát triển PIC 8-bit vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CPU CP1600, vốn có hiệu suất kém trong lĩnh vực này PIC sử dụng microcode đơn giản được lưu trữ trong ROM, và mặc dù thuật ngữ RISC chưa được ra đời vào thời điểm đó, nhưng PIC thực chất là một vi điều khiển với kiến trúc RISC, hoạt động với một lệnh mỗi chu kỳ máy, tương đương với 4 chu kỳ của bộ dao động.
Vào năm 1985, General Instruments đã bán bộ phận vi điện tử của mình, dẫn đến việc chủ sở hữu mới hủy bỏ hầu hết các dự án do tính lỗi thời Tuy nhiên, dòng vi điều khiển PIC đã được cải tiến với việc bổ sung EPROM, biến nó thành một bộ điều khiển vào ra khả trình Hiện nay, nhiều dòng PIC được sản xuất với các module ngoại vi tích hợp sẵn như USART, PWM, và ADC, cùng với bộ nhớ chương trình dao động từ 512 Word đến 32K Word.
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau:
8/16 bit CPU, xây dựng theo kiến truc Harvard có sửa đổi
Flash và ROM có thể tuỳ chọn đến 256 Kbyte
Các cổng Xuất/ Nhập (I/ O) (mức logic thường từ 0V đến 5.5V, ứng với logic
Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ USART
Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
Bộ so sánh điện áp (Voltage Comparator)
Các module Capture/ Compare/ PWM
MSSP Peripheral dựng cho các giao tiếp I2C, SPI
Bộ nhớ nội EPROM – có thể ghi/ xoá lớn tới 1 triệu lần
Module Điều khiển động cơ, đọc encoder
Hỗ trợ giao tiếp USB
Hỗ trợ giao tiếp CAN
Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IrDA
Tất cả các lệnh là 1chu kỳ ngoại trừ chương trình con là 2 chu kỳ
Tốc độ hoạt động : + DC- 20MHz ngõ vào xung clock.+ DC- 200ns chu kỳ lệnh
2.2.2 Những đặc tính ngoại vi
- Timer0 : 8 - bit định thời/ đếm với 8 - bit prescaler
- Timer0 : 8 - bit định thời / đếm với 8 - bit prescaler
- Timer1 : 16 - bit định thời / đếm với prescaler, có thể được tăng lên trong suốt chế độ Sleep qua thạch anh / xung clock bên ngoài
Trương Doãn Nam & Nguyễn Chí Kỳ 24
- Timer2 : 8 - bit định thờ / đếm với 8 - bit, prescaler và postscaler
Module Hai bao gồm các chức năng Capture, Compare và PWM với các đặc điểm kỹ thuật nổi bật Capture có độ rộng 16 bit và độ phân giải 12.5ns, trong khi Compare cũng có độ rộng 16 bit nhưng độ phân giải lên tới 200ns Đặc biệt, độ phân giải tối đa của PWM là 10 bit.
- Có 13 ngõ I/O có thể điều khiển trực tiếp
- Dòng vào và dòng ra lớn : o 25mA dòng vào cho mỗi chân o 20mA dòng ra cho mỗi chân
2.2.3 Đặc điểm về tương tự
- 10 bit, với 8 kênh của bộ chuyển đổi tương tự sang số (A/D)
- Module so sánh về tương tự o Hai bộ so sánh tương tự o Module điện áp chuẩn VREF có thể lập trình trên PIC
- Có thể lập trình ngõ ra vào đến từ những ngõ vào của PIC và trên điện áp bên trong
- Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài
2.2.4 Các đặc điểm đặc biệt
- Có thể ghi / xoá 100.000 lần với kiểu bộ nhớ chương trình Enhanced Flash o ghi / xoá với kiểu bộ nhớ EPROM
- EPROM có thể lưu trữ dữ liệu hơn 40 năm
- Có thể tự lập trình lại dưới sự điều khiển của phần mềm
- Mạch lập trình nối tiếp qua 2 chân
- Nguồn đơn 5V cấp cho mạch lập trình nối tiếp
- Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên Chip cho hoạt động đáng tin cậy
- Có thể lập trình mờ bảo vệ
- Tiết kiệm năng lượng với chế độ Sleep
- Có thể lựa chọn bộ dao động
- Mạch dở sai (ICD : In-Circuit Debug) qua 2 chân
- Năng lượng thấp, tốc độ cao Flash / công nghệ EPROM
- Việc thiết kế hoàn toàn tĩnh
- Khoảng điện áp hoạt động từ 2V đến 5.5V
- Tiêu tốn năng lượng thấp
Trương Doãn Nam & Nguyễn Chí Kỳ 25
Tổng quan về Ethernet
2.3.1 Cấu trúc khung tin Ethernet
Các chuẩn Ethernet hoạt động tại tầng Data Link trong mô hình 7 lớp OSI, với đơn vị dữ liệu trao đổi giữa các trạm là các khung (frame) Cấu trúc của khung Ethernet được thiết kế để đảm bảo việc truyền tải dữ liệu hiệu quả và đáng tin cậy.
Cấu trúc khung MAC theo IEEE 802.3/Ethernet
SFD (D5H) Địa chỉ đích Địa chỉ nguồn Độ dài kiểu gói
7 byte 1 byte 2/6 byte 2/6 byte 2 byte 46-1500 byte 4 byte
Khung bit bắt đầu với một giá trị cố định là 10101010, cho phép bên nhận tạo ra xung đồng hồ từ nhóm bit này.
SFD(Start Frame Delimiter): Trường này mới thực sự xác định sự bắt đầu của
1 khung Nó luôn mang giá trị 10101011
Các trường Destination và Source chứa địa chỉ vật lý của các trạm gửi và nhận khung, giúp xác định nguồn gốc và đích đến của khung dữ liệu.
LEN: Giá trị của trường nói lên độ lớn của phần dữ liệu mà khung mang theo
FCS mang CRC (Cyclic Redundancy Checksum) là một phương pháp kiểm tra lỗi trong truyền dữ liệu Trước khi gửi khung, phía gửi sẽ tính toán giá trị CRC và phía nhận cũng thực hiện phép tính tương tự Nếu hai giá trị CRC trùng khớp, khung dữ liệu được coi là nhận đúng; ngược lại, nếu không trùng khớp, khung sẽ bị xem là lỗi và sẽ bị loại bỏ.
2.3.2 Cấu trúc địa chỉ Ethernet
Mỗi giao tiếp mạng Ethernet được xác định bởi một địa chỉ MAC duy nhất, có độ dài 48 bit (6 octet) Địa chỉ này được gán cho thiết bị ngay khi sản xuất và được biểu diễn bằng các chữ số hexa.
16) Ví dụ: 00:60:97:8F:4F:86 hoặc 00-60-97-8F-4F-86 Khuôn dạng địa chỉ MAC được chia làm 2 phần:
- 3 octet đầu xác định hãng sản xuất, chịu sự quản lý của tổ chức IEEE
- 3 octet sau do nhà sản xuất ấn định
Địa chỉ MAC là một định danh duy nhất cho mỗi kết nối mạng Ethernet, được sử dụng để xác định nguồn và đích trong khung dữ liệu Ethernet.
Trương Doãn Nam & Nguyễn Chí Kỳ 26
Khung này được truyền tới một trạm xác định Tất cả các trạm trong phân đoạn mạng trên sẽ đều nhận được khung này nhưng:
Trạm 2 nhận thấy địa chỉ MAC đích của khung trùng khớp với địa chỉ MAC của giao tiếp mạng của mình, do đó, nó tiếp tục xử lý các thông tin khác trong khung.
- Các trạm khác sau khi so sánh địa chỉ sẽ bỏ qua không tiếp tục xử lý khung nữa
Các khung broadcast có địa chỉ MAC đích là FF-FF-FF-FF-FF-FF Khi các trạm nhận được những khung này, mặc dù địa chỉ MAC không trùng khớp với giao tiếp mạng của mình, nhưng chúng vẫn phải tiếp nhận và xử lý các khung đó.
Trạm nguồn chỉ gửi khung tới một số trạm nhất định thay vì tất cả Địa chỉ MAC đích của khung là một địa chỉ đặc biệt, chỉ các trạm trong cùng nhóm mới chấp nhận khung được gửi tới địa chỉ này.
Họ giao thức TCP/IP
TCP/IP là viết tắt của Transmission Control Protocol/Internet Protocol(Giao thức Điều Khiển Truyền Thông/Giao thức Internet) Các tầng trong mô hình này là:
Tầng Ứng Dụng(Application Layer)
Tầng Giao Vận(Transport Layer)
Tầng Liên Mạng(Internet Layer)
Tầng Giao Tiếp Mạng(Network Interface Layer)
Trương Doãn Nam & Nguyễn Chí Kỳ 27
Hình 2.16: Cấu trúc họ giao thức TCP/IP 2.4.1 Tầng Ứng Dụng(Application Layer)
Giao thức tầng ứng dụng cung cấp nhiều phương thức cho các ứng dụng người dùng, cho phép định dạng và trao đổi thông tin giữa người dùng và hệ thống Một số giao thức phổ biến trong tầng này bao gồm HTTP, FTP và SMTP Trong đồ án này, chúng tôi tập trung vào việc sử dụng giao thức HTTP để xây dựng một Webserver nhúng vào hệ thống.
HTTP (HyperText Transfer Protocol) là giao thức xác định cách định dạng và truyền tải thông điệp giữa Webserver và trình duyệt Web Webserver hoạt động như một TCPServer, mở port 80 để chờ kết nối từ client Khi client khởi tạo kết nối TCP qua port này, nó sẽ gửi một HTTP request tới server Server đáp ứng bằng một HTTP response, chứa nội dung trang Web yêu cầu được viết bằng HTML Giao thức HTTP chủ yếu dựa trên hai loại thông điệp: HTTP request và HTTP response.
Giả sử ta truy nhập vào địa chỉ IP của webserver là 192.168.1.10 qua trình duyệt:
Khi đó, máy tính sẽ gửi một yêu cầu HTTP GET qua giao thức TCP, sử dụng cổng 80 được quy định cho giao thức HTTP, đến địa chỉ của máy chủ web.
Trương Doãn Nam & Nguyễn Chí Kỳ 28
Webserver, hay còn gọi là vi điều khiển, nhận bản tin HTTP request sau khi đã trải qua các lớp giao thức ethernet, IP và TCP Tại điểm này, vi điều khiển sẽ đọc và phân tích bản tin để xác định nội dung trang web mà máy tính đang yêu cầu tải.
Vi điều khiển sẽ truy xuất nội dung trang web được lưu trữ trên ROM, được định dạng bằng ngôn ngữ HTML Nó có khả năng bổ sung thông tin, chẳng hạn như giá trị từ các cảm biến nhiệt độ, vào trang web Sau đó, toàn bộ nội dung sẽ được gửi trở lại máy tính qua giao thức TCP Nếu nội dung trang web lớn, nó sẽ được chia thành nhiều gói tin, vì mỗi gói tin chỉ có thể chứa tối đa 1460 byte dữ liệu.
Máy tính nhận nội dung trang web gửi lên và trình duyệt sẽ hiển thị lên cho chúng ta thấy kết quả
2.4.2 Tầng Giao Vận(Transport Layer)
Tầng truyền thông có nhiệm vụ thiết lập phiên truyền giữa các máy tính và quy định cách thức truyền dữ liệu, với hai giao thức chính là UDP (User Datagram Protocol) và TCP (Transmission Control Protocol) Trong khi UDP cung cấp kênh truyền phi kết nối và không đảm bảo tính tin cậy, TCP lại cung cấp kênh truyền kết nối và đảm bảo truyền dữ liệu một cách đáng tin cậy TCP thường sử dụng các gói tin lớn và yêu cầu phía nhận xác nhận các gói tin đã nhận.
Hình 2.17: Cấu trúc gói TCP Chú thích:
- Số port đích và số port nguồn: Để phân biệt các tiến trình ứng dụng đang xảy ra trong máy tính
Trương Doãn Nam & Nguyễn Chí Kỳ 29
- Các số sequence và Acknowledgement: Số sequence để phân biệt các segment khác nhau trong một dòng dữ liệu, các số Acknowledgement dùng trong cơ chế xác nhận
- Vùng Data offset: Chiều dài của Header tính theo đơn vị 32 bit
+ URG(Urgent): Thiết lập một khi có dữ liệu quan trọng cần truyền ngay + ACK: Cho biết có số xác nhận nằm trong vùng Acknowledgement
+ PSH(Push): Được thiết lập trong trường hợp dữ liệu nên được giao tức thời + RST(Reset): Chỉ thị một lỗi sai và hủy bỏ phiên làm việc
+ SYN(Synchronize): Trong các bản tin khởi tạo khi thiết lập một kết nối truyền dữ liệu
+ FIN(Finish): Dùng đóng 1 phiên làm việc
- Vùng Window: Chỉ ra số lượng không gian bộ đệm khả dụng để nhận dữ liệu
- Vùng Checksum: Vùng kiểm tra sai cho cả segment
- Vùng Urgent Pointer: Chỉ ra chiều dài của dữ liệu urgent
- Vùng Options: Xác định kích thước cực đại của 1 segment
Cụ thể hơn, vai trò của TCP trong chồng giao thức TCP gồm 3 chức năng chính: Điều khiển luồng, kiểm soát lỗi và báo nhận
- Điều khiển luồng: Điều phối tốc độ và kích thước luồng dữ liệu để đảm bảo phía nhận đủ khả năng nhận và xử lý luồng dữ liệu
- Kiểm soát lỗi: Đảm bảo các gói tin đến đúng và đủ
Khi nhận dữ liệu mà không có lỗi, bên nhận cần thông báo lại cho bên gửi Quá trình truyền dữ liệu qua giao thức TCP, hay còn gọi là phiên truyền thông, bao gồm ba giai đoạn: thiết lập kết nối, truyền dữ liệu và giải phóng kết nối Để giám sát trạng thái và các sự kiện trong kết nối TCP, trạng thái của kết nối được chuyển đổi theo một lưu đồ trạng thái cụ thể.
Trương Doãn Nam & Nguyễn Chí Kỳ 30
Hình 2.18: Lưu đồ trạng thái kết nối TCP
TCP là giao thức kết nối theo mô hình client-server, trong đó một bên đóng vai trò là client và bên còn lại, luôn trong trạng thái chờ, là server.
Khi truy cập web, máy tính của bạn hoạt động như một client, trong khi máy chủ chứa trang web được gọi là server Server luôn trong trạng thái chờ đợi các kết nối từ các máy tính client và cần có khả năng thiết lập nhiều kết nối đồng thời, vì có thể có nhiều client kết nối cùng lúc.
In the flowchart, both the client and server begin in the "Close" state The client initiates the connection through an Active Open, while the server responds with a Passive Open, waiting for the client to start the connection.
Trương Doãn Nam & Nguyễn Chí Kỳ 31
Quá trình chuyển trạng thái:
- Cả hai bắt đầu bằng trạng thái close, không có kết nối nào tồn tại
- Khi Server mở một port TCP để đợi client thiết lập kết nối, nó chuyển sang trạng thái “Listen”
- Khi client gửi đi bản tin SYN, nó chuyển sang trạng thái “SYN sent”
- Lúc này khi server nhận được bản tin SYN từ client và gửi đáp lại 1 bản tin SYN, nó chuyển sang trạng thái “SYN Received”
- Lúc này client gửi lại bản tin xác nhận ACK(bước 3 trong ví dụ), nó chuyển sang trạng thái thiết lập kết nối “Established”
- Server nhận được bản tin ACK trên của client, nó cũng chuyển sang trạng thái
- Sau đó hai bên tiến hành truyền dữ liệu, trạng thái cả hai đều là “Established”
Khi một trong hai bên hoàn thành việc truyền dữ liệu, vai trò của hai bên trở nên tương đương Giả sử client hoàn tất việc truyền dữ liệu trước, nó sẽ gửi một thông điệp FIN và chuyển sang trạng thái "FIN wait 1".
- Phía server nhận được bản tin này, gửi xác nhận ACK, và chuyển sang trạng thái “Close wait”
- Khi client nhận được xác nhận từ server(nhận được bản tin ACK trên) thì nó chuyển sang trạng thái “FIN wait 2”
- Đến lúc này server vẫn có thể tiếp tục gửi dữ liệu và client vẫn tiếp tục nhận (vì chỉ có client báo là gửi xong dữ liệu)
Khi server hoàn tất việc gửi toàn bộ dữ liệu, nó sẽ phát đi thông điệp FIN để thông báo rằng quá trình gửi dữ liệu đã kết thúc và chuyển sang trạng thái “LAST ACK”.
Khi client nhận bản tin FIN từ server, nó sẽ gửi xác nhận (ACK) và chuyển sang trạng thái "Time wait" Sau một khoảng thời gian Timeout, client sẽ đóng kết nối và trở về trạng thái "Close".
- Khi server nhận được nó cũng chuyển từ “Last ACK” sang “Close”(không cần đợi Timeout)
Tầng truy nhập mạng đóng vai trò quan trọng trong việc gán địa chỉ, đóng gói và định tuyến dữ liệu Bốn giao thức quan trọng nhất trong tầng này bao gồm:
IP(Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích
ARP(Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC
ICMP(Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng
IGMP(Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng(Multicast)
Trương Doãn Nam & Nguyễn Chí Kỳ 32
Cấu trúc của gói IP
Hình 2.19: Cấu trúc gói tin IP Ý nghĩa
Trường phiên bản trong giao thức IP có chiều dài 4 bit, cho biết phiên bản của giao thức đang sử dụng Trong trường hợp này, phiên bản là IP version 4, do đó trường này luôn có giá trị là 4.
- Header Length(4 bit): Cho biết chiều dài của header IP, tính theo đơn vị 4 byte(32 bit)
- TOS(8 bit): Type of Service
- Total Length(16 bit): 16 bit tổng chiều dài của gói IP gồm cả phần header
- Identification(16 bit): Dùng nhận diện các phân đoạn của gói IP
+ Bit đầu tiên không sử dụng
+ Bit 2: DF(Don’t Fragment) = 1 có nghĩa là không phân đoạn gói này + Bit 3: MF(More Fragment) = 0 => đây là phân đoạn cuối cùng
- Fragmented offset(13 bit): Độ dời(đơn vị 8 byte) tính từ điểm bắt đầu của Header tới điểm bắt đầu của phân đoạn
- TTL(Time to Live) (8 bit): Thời gian tồn tại trên mạng hoặc số chặng trên mạng mà gói đi qua trước khi bị hủy bỏ
- Protocol(8 bit): Nhận diện Protocol trên lớp IP
Trương Doãn Nam & Nguyễn Chí Kỳ 33
- Header checksum(16 bit): Sửa sai cho phần Header
- Các vùng địa chỉ nguồn, địa chỉ đích: địa chỉ IP 32 bit
- Option: Các tùy chọn dùng cho việc kiểm tra: Loose source routing, Strict source routing, Record route và Timestamp
- Padding: Gồm các số zero được thêm vào sao cho chiều dài của vùng Header là bội số của 32 bit
Cách thức mà dữ liệu được gửi qua giao thức IP được tiến hành như sau:
MicrochipTCP/IP Stack
TCP/IP Stack là bộ thư viện và công cụ phần mềm do Microchip cung cấp, nhằm hỗ trợ phát triển phần mềm cho hệ thống nhúng sử dụng vi điều khiển của hãng.
Trương Doãn Nam & Nguyễn Chí Kỳ 36 đã xây dựng hầu hết các hàm giao tiếp giữa các lớp cũng như hỗ trợ xây dựng một Webserver nhúng
TCP/IP bao gồm các module ứng dụng quan trọng như HTTP cho web, SMTP để gửi và nhận email, SNMP cho quản lý trạng thái và điều khiển, Telnet cho điều khiển từ xa, và TFTP cho truyền tệp tin.
Hình 2.21: Cấu trúc của Stack
Hoạt động của TCP/IP Stack được chia thành các tác vụ như TCP, UDP, và Ping, với sự quản lý của một đồng hồ chung thông qua Time Split Mỗi khoảng thời gian ngắn, một Timer hệ thống (Timer1) sẽ tạo ra một TICK, khiến hệ thống tạm dừng để bộ lập lịch kiểm tra ngữ cảnh của các tác vụ Các tác vụ này sẽ được thực hiện theo kiểu chia sẻ thời gian mà không có mức ưu tiên, cho phép một tác vụ chiếm quyền thực thi CPU Quá trình này lặp đi lặp lại với từng TICK tiếp theo, đảm bảo rằng tất cả các tác vụ đều có cơ hội thực thi.
Hình 2.22: So sánh cấu trúc TCP/IP tham khảo và cấu trúc Stack của Microchip
Trương Doãn Nam & Nguyễn Chí Kỳ 37
Với cơ chế hoạt động này, vi điều khiển có khả năng thực hiện đồng thời các giao thức TCP, UDP, Ping, và có thể hoạt động như một Server và Client cùng lúc.
Khi PIC được cấu hình ở chế độ TCP Server/Client, nó sẽ thực hiện đồng thời cả hai chức năng Server sẽ tiếp nhận các kết nối từ Client trên mạng, trong khi Client gửi lệnh mở cổng kết nối tới một Server khác cũng trên mạng mà người dùng có thể xác định.
Vì vậy, hoạt động của các tác vụ là độc lập với nhau, không chịu ảnh hưởng lẫn nhau
ADE7753 là IC chuyên dụng tối ưu cho việc thu thập và giám sát các thông số của điện lưới, nhờ vào khả năng xử lý số mạnh mẽ từ nhân DSP Thiết bị này cung cấp kết quả thu thập với độ chính xác cao, sai số chỉ khoảng 0.1%.
Trong lĩnh vực mạng, có nhiều giao thức như SMTP, FTP, UDP và TCP/IP, mỗi giao thức đều có những ưu nhược điểm riêng, phù hợp với từng ứng dụng cụ thể Tuy nhiên, trong bài viết này, giao thức TCP/IP được lựa chọn do tính phổ biến, hạ tầng mạng hiện có và sự hỗ trợ mạnh mẽ từ nhà sản xuất Microchip Do đó, TCP/IP được xem là phương án tối ưu nhất cho việc phát triển ứng dụng.
Chuẩn truyền thông SPI
SPI (Serial Peripheral Interface) là một chuẩn truyền thông nối tiếp tốc độ cao do Motorola phát triển, hoạt động theo mô hình Master - Slave với một chip Master điều phối và các chip Slave được điều khiển bởi Master Giao tiếp trong SPI diễn ra giữa Master và Slave, cho phép truyền thông song công (full duplex), nghĩa là quá trình truyền và nhận dữ liệu có thể diễn ra đồng thời Chuẩn này thường được gọi là "4 dây" vì bao gồm 4 đường giao tiếp: SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Output Slave Input) và SS (Slave Select).
SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần
Giao thức SPI sử dụng chân SCK để giữ nhịp, với mỗi nhịp trên chân này báo hiệu một bit dữ liệu được truyền đi hoặc nhận về Điều này khác biệt so với truyền thông không đồng bộ trong chuẩn UART Sự hiện diện của chân SCK giúp giảm thiểu lỗi trong quá trình truyền, cho phép SPI đạt tốc độ truyền rất cao Xung nhịp chỉ được tạo ra bởi chip Master.
MISO, or Master Input/Slave Output, serves as the input line for the Master chip and the output line for Slave chips The MISO connections of the Master and Slave devices are directly linked to facilitate communication.
Trương Doãn Nam & Nguyễn Chí Kỳ 38
MOSI - Master Output/Slave Input: Trong hệ thống, nếu chip hoạt động như Master, thì MOSI sẽ là đường Output, ngược lại, nếu chip là Slave, MOSI sẽ đóng vai trò là Input Các chân MOSI của Master và các Slave được kết nối trực tiếp với nhau.
SS (Slave Select) là đường tín hiệu dùng để chọn chip Slave trong giao tiếp Khi không hoạt động, đường SS trên chip Slave ở mức cao Khi chip Master kéo đường SS xuống mức thấp, giao tiếp giữa Master và Slave sẽ được thiết lập Mỗi chip Slave chỉ có một đường SS, nhưng chip Master có thể có nhiều đường điều khiển SS tùy theo thiết kế của người dùng.
Hình 2.23: SPI giữa một chip Master và 3 chip Slave thông qua 4 đường
Mỗi chip Master và Slave có một thanh ghi dữ liệu 8 bits Khi Master tạo ra xung nhịp trên đường SCK, một bit từ thanh ghi dữ liệu của Master được truyền đến Slave qua đường MOSI, đồng thời một bit từ thanh ghi dữ liệu của chip Slave được gửi về Master qua đường MISO Quá trình truyền dữ liệu này diễn ra đồng thời giữa hai chip, do đó được gọi là "song công".
Trương Doãn Nam & Nguyễn Chí Kỳ 39
Hình 2.24: Quá trình truyền 1 gói dữ liệu thực hiện bởi module SPI
Vi mạch ENC28J60 giao tiếp với các vi xử lý khác thông qua giao thức SPI (Serial Peripheral Interface), cho phép kết nối các vi mạch trong cùng một hệ thống Ưu điểm của chuẩn này là tốc độ truyền dữ liệu nhanh và yêu cầu chỉ 3 dây nối tín hiệu cho cả quá trình ghi và đọc.
Bộ lệnh SPI cho vi mạch ENC28J60 bao gồm các lệnh ghi và đọc dữ liệu, cùng với các giản đồ xung thể hiện quá trình giao tiếp giữa vi xử lý và ENC28J60 Những lệnh này giúp tối ưu hóa việc truyền tải dữ liệu và đảm bảo hiệu suất hoạt động của vi mạch.
Hình 2.25: Quá trình đọc thanh ghi điều khiển Ethernet
Trương Doãn Nam & Nguyễn Chí Kỳ 40
Hình 2.26: Quá trình đọc thanh ghi điều khiển MAC
Hình 2.27: Quá trình ghi vào thanh ghi lệnh
Hình 2.28: Quá trình ghi vào bộ đệm lệnh
Trương Doãn Nam & Nguyễn Chí Kỳ 41
Hình 2.29: Quá trình ghi vào lệnh của hệ thống
Mặc dù vi mạch được thiết kế theo cấu trúc "stand alone", việc điều khiển và vận hành nó đòi hỏi kiến thức sâu rộng về vi điều khiển, mạch điện tử và mạng Internet Tuy nhiên, hãng MicroChip, nhà sản xuất vi mạch ENC28J60, đã cung cấp đầy đủ thư viện hỗ trợ lập trình, giúp quá trình giao tiếp với vi mạch trở nên dễ dàng hơn cho các nhà thiết kế và lập trình viên.
Trương Doãn Nam & Nguyễn Chí Kỳ 42
THUẬT TOÁN THAO TÁC
Thuật toán cập nhật dữ liệu
Hình 3.1: Sơ đồ thuật toán dùng để cập nhật dữ liệu từ vi xử lý lên máy chủ
Tạo một yêu cầu load một trang
Nhận dữ liệu chuyển lên và gán vào biến php
Xử lý dữ liệu và lưu vào CSDL
Trương Doãn Nam & Nguyễn Chí Kỳ 43
Web nội bộ là trang web có định dạng tĩnh, với mã nguồn được cài đặt trong chip xử lý Để truy cập vào web nội bộ, người dùng chỉ cần nhập đúng địa chỉ của trang web trên trình duyệt, chẳng hạn như địa chỉ 192.168.1.30.
Hình 3.2: Website nội bộ được tải lên từ chip xử lý
Trang giám sát thông số trên website nội bộ sẽ kích hoạt mã JavaScript chứa dữ liệu đi kèm khi được tải trên trình duyệt.
Mã JavaScript này tự động yêu cầu trình duyệt gửi một yêu cầu đến website, trong đó máy chủ sẽ xử lý dữ liệu đính kèm theo đường dẫn được chỉ định trong mã JavaScript.
Trương Doãn Nam & Nguyễn Chí Kỳ 44
Hình 3.3: Trang giám sát thông số được tải từ website nội bộ trong chip
Khi mã JavaScript được kích hoạt, trang web sẽ nhận dữ liệu kèm theo các biến như “?u=' + U + '&i=' + I + '&p=' + P + '&f=' + F +” Các biến u, i, p, f được gán với dữ liệu, trong đó U, I, F, P là các biến JavaScript Khi trình duyệt thực thi đoạn mã chứa các biến này, chúng sẽ được thay thế bằng các giá trị đã được khởi tạo trước đó, và dữ liệu sẽ được tiếp tục xử lý bởi server.
Hình 3.4: Dữ liệu ở trên đã được lưu trong CSDL và được xuất ra bảng
Trương Doãn Nam & Nguyễn Chí Kỳ 45
Thuật toán lưu trữ dữ liệu
Hình 3.5: Sơ đồ thuật toán lưu trữ dữ liệu từ cơ sở dữ liệu thành tập tin lưu trữ
Truy vấn cơ sở dữ liệu bằng SQL
Cắt dữ liệu vào tập tin lưu trữ
Xử lý dữ liệu và lưu vào CSDL
Khoanh vùng dữ liệu theo thời gian
Trương Doãn Nam & Nguyễn Chí Kỳ 46
Bảng trong cơ sở dữ liệu (CSDL) chỉ là một phần của hệ thống, được sử dụng để thu thập dữ liệu từ các trạm đo đạc năng lượng Tuy nhiên, do giới hạn vật lý, bảng không thể lưu trữ toàn bộ dữ liệu thu thập liên tục trong thời gian dài Khi dữ liệu trong bảng trở nên quá lớn, việc truy xuất sẽ chậm và tiêu tốn nhiều băng thông Do đó, chuyển đổi dữ liệu từ bảng sang tập tin dữ liệu giúp giảm rủi ro và tạo tính logic trong quá trình lưu trữ.
Dữ liệu trong Bảng CSDL sẽ được truy vấn thông qua mã SQL và sau đó được gán vào một biến mảng PHP đã được định sẵn.
Sau khi truy vấn dữ liệu, thời gian lấy mẫu của từng dữ liệu trong quá trình cập nhật là yếu tố quan trọng Để tách dữ liệu hiệu quả, cần so sánh thời gian được lưu trữ Trong sản phẩm demo của đồ án, chúng tôi đã thực hiện so sánh thời gian lấy mẫu theo giờ, giúp phân loại dữ liệu một cách dễ dàng.
Sau khi kiểm tra điều kiện, bước tiếp theo là tạo thư mục chứa dữ liệu Trong sản phẩm của đồ án, thư mục chính là "data_saved", tiếp theo là các thư mục của các trạm đã được tạo sẵn Mỗi ngày thu thập dữ liệu, hệ thống sẽ tự động tạo thư mục theo ngày Bên trong mỗi thư mục ngày, các tập tin sẽ được tạo ra tùy thuộc vào thời điểm kiểm tra dữ liệu.
Hình 3.6: Sơ đồ thư mục chứa trên máy chủ
Trương Doãn Nam & Nguyễn Chí Kỳ 47
Để tạo thư mục theo từng ngày cho từng trạm, thì chúng em dựa vào thời gian lấy mẫu của dữ liệu
Hiện nay, trên mạng có nhiều loại tập tin lưu trữ khác nhau, nhưng trong đồ án này, chúng tôi chọn tập tin có đuôi csv, một dạng tập tin text đơn giản với cấu trúc là mảng ký tự Tập tin csv có thể được mở bằng các phần mềm từ cơ bản như Notepad đến nâng cao như Microsoft Excel Việc sử dụng mã PHP để mở và tải dữ liệu từ tập tin này cũng không quá phức tạp.
Trước khi tải dữ liệu vào tập tin, cần xác định khoảng dữ liệu cần lưu, vì bảng dữ liệu được cập nhật liên tục Việc lưu trữ toàn bộ dữ liệu sẽ gây khó khăn trong việc xem lại các tập tin lưu trữ Khoảng dữ liệu được xác định dựa trên điều kiện từ thời điểm bắt đầu cập nhật đến khi kết thúc một giờ, với điểm đầu là thời gian bắt đầu và điểm cuối là thời gian kết thúc sau một giờ.
Sau đây là kết quả sau khi dòng mã được chạy theo yêu cầu từ máy chủ :
Hình 3.7: Bảng trong tập tin *.csv
Trương Doãn Nam & Nguyễn Chí Kỳ 48
Hình 3.8: Các tập tin *.csv đã được tạo trên hệ thống máy chủ
Thuật toán đọc dữ liệu
Hình 3.9: Sơ đồ thuật toán vẽ đồ thị từ cơ sở dữ liệu
Dữ liệu được lưu trữ trong CSDL
Dữ liệu được in ra trong định dạng tĩnh của Web
Dữ liệu được truy vấn bằng mã SQL
Trương Doãn Nam & Nguyễn Chí Kỳ 49
Đọc dữ liệu là một hoạt động cơ bản trong việc thao tác với cơ sở dữ liệu (CSDL), nhưng khi làm việc với máy chủ, việc này thường chỉ xảy ra trên các trang web được tải về máy tính cá nhân và yêu cầu khởi động lại trang để thao tác lại Với sự phát triển của công nghệ thông tin, kỹ thuật AJAX (Asynchronous JavaScript and XML) đã ra đời, cho phép thao tác với máy chủ mà không cần khởi động lại nhiều lần AJAX không phải là một ngôn ngữ lập trình mới mà là một kỹ thuật giúp tạo ra các ứng dụng web nhanh chóng và thân thiện hơn Kỹ thuật này sử dụng phương thức chuyển dữ liệu bất đối xứng giữa trình duyệt và máy chủ, cho phép các trang web yêu cầu thông tin từ máy chủ một cách linh hoạt mà không cần tải lại toàn bộ trang AJAX là công nghệ phía trình duyệt và độc lập với phần mềm máy chủ web.
Để thao tác với dữ liệu đã được cập nhật và lưu trữ trong cơ sở dữ liệu (CSDL), trước tiên cần tạo liên kết đến CSDL đó Sau đó, nhờ vào các hàm PHP và mã SQL, việc truy vấn và gán dữ liệu vào các biến mảng PHP trở nên dễ dàng Cuối cùng, với kiểu mảng PHP, chúng ta có thể xuất dữ liệu ra dạng tĩnh theo định dạng mong muốn.
Đọc dữ liệu đã được lưu trữ trong tập tin *.csv từ thuật toán sau:
Hình 3.10: Thuật toán đọc dữ liệu từ tập tin đã được lưu trữ trên máy chủ
Kết nối tới và mở tập tin trong sever
Dữ liệu được in ra trong định dạng tĩnh của Web
Bắt đầu Định dạng dữ liệu được lưu trữ trong tập tin
Lưu dữ liệu trong biến mảng PHP
Trương Doãn Nam & Nguyễn Chí Kỳ 50
Sau khi dữ liệu được lưu trữ dưới định dạng tập tin *.csv, việc đọc dữ liệu một cách hợp lý là rất quan trọng Do đó, việc áp dụng thuật toán để đọc dữ liệu từ các tập tin lưu trữ trong các thư mục theo phân bố cụ thể là cần thiết.
Tất cả các thư mục tập tin được lưu trữ theo thuật toán dữ liệu, và để truy cập các tập tin này, chúng ta cần bắt đầu từ thư mục lưu trữ gốc, cụ thể là "data_saved" trong sản phẩm demo của đồ án Tiếp theo, các tên trạm thu thập dữ liệu sẽ được liệt kê như tram1, tram2, và các trạm khác.
Các thư mục lưu trữ trên các trạm được sắp xếp theo ngày, giúp người dùng dễ dàng xác định vị trí dữ liệu cần xem lại Bên trong mỗi thư mục ngày, các tập tin được tổ chức theo từng giờ, cho phép xác định chính xác vị trí của dữ liệu cần tìm.
Sau khi xác định vị trí của tập tin, việc đọc dữ liệu trở nên dễ dàng nhờ vào sự hỗ trợ của PHP Các hàm PHP cho phép trích xuất dữ liệu và lưu trữ chúng trong một biến mảng chung Biến mảng này không chỉ được sử dụng để hiển thị dữ liệu dưới dạng bảng mà còn phục vụ cho việc xuất dữ liệu cho Module vẽ đồ thị Kết quả cuối cùng là một bảng trên web, tương tự như bảng được hiển thị khi đọc dữ liệu từ CSDL.
Trương Doãn Nam & Nguyễn Chí Kỳ 51
Hình 3.11: Sơ đồ thuật toán vẽ đồ thị từ cơ sở dữ liệu
Dữ liệu được lưu trữ trong CSDL
Dữ liệu được lồng ghép nhau tạo thành khối dữ liệu phù hợp với module
Dữ liệu được truy vấn bằng mã SQL
Dữ liệu được thể hiện dưới dạng đồ thị trong định dạng tĩnh của Web
Trương Doãn Nam & Nguyễn Chí Kỳ 52
Để tăng tính trực quan cho dữ liệu, đồ án đã áp dụng module API corechart của Google để tạo đồ thị cho toàn bộ dữ liệu thu thập từ mạch chip xử lý Module này được cung cấp miễn phí với giấy phép công cộng từ máy chủ của Google Để tích hợp module, cần sử dụng dòng lệnh để liên kết đến mã nguồn của nó: với dòng này mọi câu lệnh dùng để vẽ sẽ được tải trực tiếp từ Google
Để vẽ đồ thị, trước tiên cần có dữ liệu trong bảng của cơ sở dữ liệu Sau đó, chỉ cần truy vấn bảng để xuất dữ liệu theo định dạng mặc định của module, và công việc còn lại sẽ do module thực hiện.
Khi vẽ đồ thị từ dữ liệu lưu trong tập tin *.csv, quy trình không khác biệt so với việc vẽ đồ thị từ dữ liệu trong cơ sở dữ liệu Module API Corechart của Google vẫn được sử dụng, nhưng dữ liệu từ tập tin không được cập nhật liên tục mà đã được cố định, do đó thuật toán không áp dụng kỹ thuật AJAX Điều này dẫn đến việc dữ liệu đầu vào cho module sẽ khác với dữ liệu vẽ đồ thị trực tiếp từ bảng trong hệ quản trị.
Trương Doãn Nam & Nguyễn Chí Kỳ 53
Lưu đồ vẽ đồ thị trên trang web
Hình 3.12: Sơ đồ thuật toán vẽ đồ thị với tập tin được lưu trữ trên máy chủ
Kết nối đến và mở tập tin trong server
Dữ liệu trong biến mảng
Bắt đầu Định dạng dữ liệu được lưu trữ trong tập tin
Dữ liệu được lồng ghép nhau tạo thành khối dữ liệu phù hợp với Module
Dữ liệu được thể hiện dưới dạng đồ thị trong định dạng tĩnh của Web
Kết thúc API Corechart của Google
Trương Doãn Nam & Nguyễn Chí Kỳ 54
Trong bài viết này, chúng ta sẽ khám phá cách kết nối và xuất dữ liệu từ tập tin trong thư mục chứa, sử dụng biến mảng $show để truyền dữ liệu cho module vẽ đồ thị Sự khác biệt giữa việc vẽ đồ thị từ dữ liệu trong Bảng CSDL và từ tập tin *.csv nằm ở kỹ thuật lấy dữ liệu: trong trường hợp Bảng CSDL, module sử dụng ajax, trong khi với tập tin, dữ liệu được lấy trực tiếp Do đó, định dạng dữ liệu cho module cũng khác nhau, với cấu trúc dữ liệu được trình bày như sau: [‘tên hàng’, ‘tên cột’], [‘dữ liệu theo hàng’, ‘dữ liệu theo cột’], […].
Một vài hình ảnh về kết quả của module vẽ đồ thị, đồ thị của cả hai thuật toán trên về cấu trúc giống nhau hoàn toàn
Trương Doãn Nam & Nguyễn Chí Kỳ 55
Hình 3.13: Kết quả của module Corechart của Google
Với 4 thuật toán thao tác dữ liệu trong CSDL, ta có thể hình dung được toàn bộ sản phẩm demo của đồ án, không chỉ truy xuất dữ liệu mà còn cập nhật và lưu trữ dữ liệu tập trung từ nhiều trạm hay Node mạng của nhiều nguồn và các thông số khác nhau Với sự trực quan của dữ liệu thu thập được ta có thể khảo sát được dữ liệu và đưa ra dự báo trong tương lai hoặc các vấn đề của node mạng gặp phải Từ đó có thể đưa ra các biện pháp cho các vấn đề gặp phải hoặc nâng cấp hệ thống trong tương lai.
Trương Doãn Nam & Nguyễn Chí Kỳ 56
3.4 Phần mềm lập trình Web
Khi làm việc với hệ quản trị cơ sở dữ liệu online, các nhà phát triển web cần xây dựng một website để thực hiện các thay đổi theo ý muốn Website này có thể do nhà sản xuất hoặc nhà phân phối cung cấp, hoặc được tự phát triển bởi chính người lập trình sau khi nắm vững thông tin về hệ quản trị cơ sở dữ liệu Để tạo ra các website tương tác với MySQL, lập trình viên thường sử dụng các phần mềm hỗ trợ lập trình và thiết kế Các phần mềm này không chỉ hỗ trợ nhiều ngôn ngữ lập trình khác nhau mà còn cung cấp tính năng sửa lỗi, chèn mã tự động và chạy thử trên chính nền tảng của phần mềm.
Sau đây là một số phần mềm hỗ trợ lập trình web phổ biến được nhiều người phát triển web sử dụng trên khắp thế giới :
Notepad++ là phần mềm soạn thảo mã nguồn mở hoàn toàn miễn phí, cung cấp độ tùy biến cao và hỗ trợ nhiều ngôn ngữ lập trình như PHP, ASP, Java, C#, Python, JSP Đây là công cụ lý tưởng cho người dùng Windows, cho phép người dùng cá nhân hóa trải nghiệm làm việc bằng cách chỉnh sửa mã nguồn.
Trương Doãn Nam & Nguyễn Chí Kỳ 57
Hình 3.14: Vùng làm việc của notepad++
Intype là một phần mềm soạn thảo nhẹ và miễn phí, cung cấp đầy đủ tính năng cần thiết cho lập trình website, bao gồm cả việc tổ chức dự án và viết mã hiệu quả.
Hình 3.15: Vùng làm việc của Intype
PHPdesigner là một công cụ phát triển web với giao diện thân thiện, cung cấp nhiều tính năng hữu ích như xem trước trang web trên trình duyệt, hỗ trợ code snippets và báo lỗi cú pháp, giúp lập trình viên làm việc hiệu quả hơn.
Trương Doãn Nam & Nguyễn Chí Kỳ 58 lập trình với PHP, autocomplete v.v Hơn nữa ta có thể dễ dàng quản lí các project của mình
Hình 3.16: Vùng làm việc của phpDesigner