intTypePromotion=1

Thiết kế và chế tạo hệ thống cân băng định lượng điều khiển độc lập từng thành phần và giao tiếp modbus

Chia sẻ: ViMessi2711 ViMessi2711 | Ngày: | Loại File: PDF | Số trang:7

0
35
lượt xem
1
download

Thiết kế và chế tạo hệ thống cân băng định lượng điều khiển độc lập từng thành phần và giao tiếp modbus

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài viết này trình bày một thiết kế hệ thống cân băng định lượng có khả năng điều khiển độc lập từng thành phần và giao tiếp truyền thông theo các chuẩn công nghiệp phổ biến. Do vậy, hệ thống thiết kế sẽ có khả năng tích hợp vào các hệ thống khác nhau và giao tiếp với các màn hình giao diện người – máy (Human Machine Interface – HMI) của các hãng nổi tiếng trên thế giới để nhận các chỉ thị, hiển thị và lưu trữ các thông tin vận hành một cách rất thuận tiện mà không cần sử dụng máy tính.

Chủ đề:
Lưu

Nội dung Text: Thiết kế và chế tạo hệ thống cân băng định lượng điều khiển độc lập từng thành phần và giao tiếp modbus

Nguyễn Tiến Hưng và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> 189(13): 163 - 169<br /> <br /> THIẾT KẾ VÀ CHẾ TẠO HỆ THỐNG CÂN BĂNG ĐỊNH LƯỢNG ĐIỀU KHIỂN<br /> ĐỘC LẬP TỪNG THÀNH PHẦN VÀ GIAO TIẾP MODBUS<br /> Nguyễn Tiến Hưng*, Vũ Quốc Đông<br /> Trường Đại học Kỹ thuật Công nghiệp - ĐH Thái Nguyên<br /> <br /> TÓM TẮT<br /> Các hệ thống cân băng định lượng được sử dụng rộng rãi trong các nhà máy sản xuất xi măng,<br /> khai khoáng, chế biến thực phẩm, thức ăn gia súc, phân bón... Trước đây, các hệ thống cân băng<br /> định lượng thường sử dụng một máy tính điều khiển tất cả các cân nên khó có thể được tích hợp<br /> trong một hệ thống sản xuất lớn và hiện đại vốn gần như được điều khiển tự động hoàn toàn từ<br /> khâu nguyên liệu đầu vào đến sản phẩm đầu ra. Các hệ thống cân băng định lượng tự động có khả<br /> năng điều khiển độc lập từng thành phần và giao tiếp với tầng điều khiển cấp trên thông qua một<br /> giao thức truyền thông sẽ khắc phục được các khó khăn nói trên. Tuy nhiên, do các hãng sản xuất<br /> thường cung cấp các giải pháp tổng thể cho từng nhà máy nên việc tích hợp các thiết bị của các<br /> hãng khác nhau vào trong hệ thống sẽ gặp khó khăn do không tương thích về phần cứng và phần<br /> mềm. Bài báo này trình bày một thiết kế hệ thống cân băng định lượng có khả năng điều khiển độc<br /> lập từng thành phần và giao tiếp truyền thông theo các chuẩn công nghiệp phổ biến. Do vậy, hệ thống<br /> thiết kế sẽ có khả năng tích hợp vào các hệ thống khác nhau và giao tiếp với các màn hình giao diện<br /> người – máy (Human Machine Interface – HMI) của các hãng nổi tiếng trên thế giới để nhận các chỉ<br /> thị, hiển thị và lưu trữ các thông tin vận hành một cách rất thuận tiện mà không cần sử dụng máy<br /> tính. Điều này đảm bảo sự hoạt động tin cậy, ổn định và liên tục của toàn bộ hệ thống.<br /> Key words: Cân băng định lượng, bộ điều khiển, truyền thông công nghiệp, vi xử lý, Modbus<br /> <br /> ĐẶT VẤN ĐỀ *<br /> Các hệ thống cân băng định lượng được sử<br /> dụng rộng rãi trong các dây chuyền sản xuất<br /> công nghiệp để vận chuyển các nguyên liệu<br /> với lưu lượng đặt trước (tính bằng Kg/phút<br /> hoặc Tấn/giờ). Một hệ thống cân băng định<br /> lượng gồm nhiều băng tải có dạng như hình 1.<br /> Các thành phần chính của một băng tải bao<br /> gồm: một khung cân, một bộ cảm biến trọng<br /> lượng (loadcell), một bộ điều khiển tốc độ với<br /> một động cơ điện và một bộ đo tốc độ băng<br /> tải [1].<br /> Phễu liệu<br /> <br /> Trục quay<br /> sau<br /> <br /> Các con<br /> lăn đỡ liệu<br /> <br /> Động cơ<br /> điện<br /> <br /> Cảm biến Cảm biến<br /> tốc độ<br /> trọng lượng<br /> <br /> Trục quay<br /> trước<br /> <br /> Cơ cấu<br /> căng<br /> băng<br /> <br /> Hình 1. Cấu trúc của một cân băng định lượng.<br /> <br /> Trong quá trình làm việc bình thường, mỗi<br /> băng tải có một lưu lượng đặt trước và không<br /> có sự liên quan với các băng tải khác. Tuy<br /> nhiên, nếu vì một lý do nào đó tốc độ của một<br /> *<br /> <br /> Tel: 0913 286461, Email: h.nguyentien@tnut.edu.vn<br /> <br /> trong các băng tải không đạt được giá trị<br /> mong muốn trong khi các băng tải khác vẫn<br /> đang hoạt động đúng sẽ làm cho lưu lượng<br /> của băng tải đó không giữ được giá trị đặt<br /> trước. Sự làm việc không hoàn hảo của một<br /> cân băng trong một thời gian đủ lớn sẽ dẫn<br /> đến sai lệch tỷ lệ phối liệu và tạo ra các phế<br /> phẩm. Vì vậy, để đảm bảo tỷ lệ phối liệu thì<br /> khi lưu lượng thực tế của một băng tải vượt<br /> quá một giới hạn cho trước thì điểm đặt của<br /> các lưu lượng của các băng tải còn lại sẽ được<br /> điều chỉnh sao cho tất cả lưu lượng của các<br /> băng tải sẽ được tăng hay giảm với cùng một<br /> tỷ lệ phần trăm [1]. Mô hình động học đầy đủ<br /> và đơn giản hóa của cân băng được trình bày<br /> trong các tài liệu [2, 3, 4, 5]. Với việc mô tả<br /> toán học của các cân băng giúp cho việc áp<br /> dụng các bộ điều khiển tốc độ có khả năng giảm<br /> được năng lượng tiêu thụ của băng tải [3].<br /> MÔ HÌNH ĐỘNG HỌC CỦA BĂNG TẢI<br /> Mô hình của một hệ thống cân băng đơn giản<br /> hóa được mô tả trên hình 2. Việc xây dựng<br /> mô hình toán cho băng tải được thực hiện dựa<br /> trên một số giả thiết sau đây [2]:<br /> 163<br /> <br /> Nguyễn Tiến Hưng và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> - Động cơ truyền động có mômen động học<br /> nhanh và thời gian trễ nhỏ.<br /> - Kết nối giữa trục động cơ và các con lăn là<br /> kết nối cứng.<br /> - Băng chuyền có thể được mô tả bởi lò xo<br /> không có khối lượng.<br /> - Ma sát tập trung ở các con lăn và tải trọng.<br /> Ma sát này được xem như là các nhiễu ngoài.<br /> <br /> 189(13): 163 - 169<br /> <br /> quán tính của các con lăn, các khớp nối và các<br /> cơ cấu mã hóa là rất nhỏ so với quán tính của<br /> động cơ thì mô hình băng tải có thể được đơn<br /> giản hóa với các tham số hằng như sau [2]:<br /> &  f    LKew<br /> J M &<br /> & ff  Kew<br /> Mc x&<br /> <br /> (2)<br /> <br /> w  L  x<br /> <br /> trong đó, w là độ kéo dãn của băng; K e là hệ<br /> số đàn hồi của băng; L <br /> <br /> Hình 2. Mô hình băng tải đơn giản hóa<br /> <br /> Mô hình toán của hệ thống truyền động<br /> cân băng trên hình 2 được biểu diễn như sau:<br /> G  r[K1(x )(Rq1  x )  K3 (Rq2  Rq1]  G1<br /> r[K2 (x )(Rq1  x )  K3 (Rq2  Rq1)]  G2<br /> <br /> đó,<br /> <br /> (1)<br /> <br /> &<br /> G1  (J1  G 2 (JG  J M ))q&<br /> 1  f1,<br /> <br /> &<br /> G2  J 2q&<br /> 2 f 2 ,<br /> <br /> & f1 ;<br /> G3  Mcx&<br /> <br /> J1,J 2<br /> <br /> động của băng tải.<br /> Với các tham số cho trong phụ lục A, ta có<br /> thể xây dựng được mô hình không gian trạng<br /> thái của (2) như sau:<br /> x& Ax  Bu<br /> y  Cx<br /> Trong đó:<br /> <br /> K1(x )(Rq1  x )  K2 (x  Rq2 )  G3<br /> <br /> Trong<br /> <br /> R<br /> là hằng số truyền<br /> G<br /> <br /> là<br /> <br /> mômen quán tính của các con lăn dẫn động và<br /> truyền động; J M ,JG là mômen quán tính của<br /> động cơ và hộp giảm tốc; M c là khối lượng<br /> của tải trọng; R là bán kính của các con lăn;<br /> K1, K2 , K3 là các hệ số giãn nở của băng tải<br /> bị thay đổi tùy theo vị trí của tải trọng; x là<br /> vị trí của tải trọng;  là mômen của động cơ;<br /> q1,q2 , là vị trí góc của con lăn dẫn động,<br /> con lăn truyền động và động cơ; G là tỷ lệ<br /> giảm tốc; l1,l2 ,l là độ dài hành trình;  f 1, f 2<br /> <br /> 1<br /> 0<br /> 0<br /> 0<br /> A<br /> 0<br /> 0<br /> <br /> 5<br /> 0 7.699  10<br /> <br /> 0<br /> 1<br /> 0<br /> 7.185  105<br /> <br /> <br /> 0 <br /> 1 ,<br /> <br /> 13.64<br /> 0<br /> <br /> 0<br /> <br /> <br />  x1 <br /> <br /> <br />  <br /> 0<br />  C  1 0 0 0 x  x 2 <br /> B<br /> ,<br /> <br /> ,<br /> 0<br /> x 3  .<br /> <br /> <br />  <br /> 7<br /> x 4 <br />  2.56  10 <br /> <br /> Để khảo sát việc điều khiển hệ thống băng tải<br /> này bằng một bộ điều khiển PID kinh điển ta<br /> có thể xây dựng một mô hình Simulink đơn<br /> giản như hình 3.<br /> <br /> là các mômen ma sát của các con lăn; f f là<br /> lực ma sát tác động đến tải trọng;<br /> (J1  G 2 (JG  J M )) là tổng các mômen quán<br /> tính đối với con lăn truyền động; G là<br /> mômen truyền động.<br /> Mô hình động học (1) có tính phi tuyến cao<br /> với các tương tác chéo và các nhiễu ngoài tác<br /> động. Với mục tiêu phân tích hệ thống thì có<br /> thể không cần đến mô hình chính xác của hệ<br /> thống. Vì vậy, nếu giả thiết rằng các mômen<br /> 164<br /> <br /> Hình 3. Mô phỏng hệ thống điều khiển băng tải<br /> <br /> Kết quả mô phỏng đáp ứng dịch chuyển của<br /> tải trọng trên băng tải được cho trên hình 4.<br /> CẤU TRÚC PHẦN CỨNG<br /> Cấu trúc phần cứng của toàn bộ hệ thống cân<br /> băng định lượng được mô tả trên hình 5. Hệ<br /> thống gồm có N băng tải, được điều khiển bởi<br /> các bộ điều khiển băng tải độc lập cho từng cân.<br /> <br /> Nguyễn Tiến Hưng và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> Hình 4. Đáp ứng dịch chuyển của tải trọng trên<br /> băng tải<br /> <br /> Hình 5. Cấu trúc của toàn bộ hệ thống cân băng.<br /> <br /> Các bộ điều khiển cân có khả năng đọc tín<br /> hiệu trọng lượng từ các Loadcell, sau đó tính<br /> toán tốc độ cho các băng tải dựa trên lưu<br /> lượng yêu cầu cho trước và đưa ra tín hiệu<br /> điều khiển các biến tần sao cho đạt được sai<br /> số lưu lượng thực tế trong giới hạn cho phép.<br /> Bộ điều khiển cân cũng có khả năng đọc tín<br /> hiệu phản hồi tốc độ từ các bộ Encoder hoặc<br /> các loại cảm biến tốc độ khác. Các bộ điều<br /> <br /> 189(13): 163 - 169<br /> <br /> khiển cân được kết nối chung với một màn<br /> hình giao diện người – máy (Human Machine<br /> Interface – HMI) của các hãng nổi tiếng trên<br /> thế giới thông qua giao tiếp chuẩn công<br /> nghiệp Modbus để nhận các chỉ thị, hiển thị<br /> và lưu trữ các thông tin vận hành một cách rất<br /> thuận tiện mà không cần sử dụng máy tính.<br /> Điều này đảm bảo sự hoạt động tin cậy, ổn<br /> định và liên tục của toàn bộ hệ thống. Việc<br /> truyền thông qua Modbus cho phép toàn bộ<br /> hệ thống có khả năng kết nối dễ dàng hoặc<br /> tích hợp với các hệ thống khác trong các nhà<br /> máy vì nó tuân theo chuẩn giao tiếp công<br /> nghiệp phổ biến.<br /> Cấu trúc phần cứng của bộ điều khiển băng<br /> tải được mô tả trên hình 6. Bộ điều khiển bao<br /> gồm khối vi xử lý trung tâm sử dụng vi điều<br /> khiển STM32F407VGTX. Các tín hiệu từ<br /> loadcell được đưa đến đầu vào là một bộ<br /> khuếch đại loadcell giao tiếp SPI chuyên<br /> dụng HX711. Trong trường hợp sử dụng bộ<br /> khuếch đại loadcell ngoài thì tín hiệu tương tự<br /> từ bộ khuếch đại loadcell ngoài được đưa đến<br /> chân S+, sau đó thông qua mạch khuếch đại<br /> đệm và lọc được đưa đến một đầu vào chuyển<br /> đổi tương tự - số (ADC) của vi điều khiển.<br /> Các thuật toán điều khiển được thực hiện<br /> bằng chương trình phần mềm cho vi xử lý.<br /> Tín hiệu điều khiển ra được đưa đến biến tần<br /> thông qua các giao tiếp tương tự hoặc số<br /> (dưới dạng xung điều chế PWM được lựa<br /> chọn thông qua chuyển mạch JP1) hay giao<br /> tiếp Modbus. Trong trường hợp điều khiển<br /> tương tự thì tín hiệu ra điều khiển biến tần<br /> được đưa qua một bộ chuyển đổi số - tương<br /> tự sử dụng vi mạch MCP4901 và thông qua<br /> một mạch khuếch đại để tạo điện áp điều<br /> khiển chuẩn công nghiệp 0 - +10VDC cho<br /> biến tần. Tín hiệu phản hồi tốc độ từ biến tần<br /> cũng được lọc sơ bộ và phản hồi về hệ thống<br /> bằng tín hiệu tương tự hoặc xung điều chế<br /> (lựa chọn bằng chuyển mạch JP2). Nếu tín<br /> hiệu phản hồi là tương tự sẽ được đưa qua<br /> một mạch đệm để đưa đến đầu vào ADC của<br /> vi điều khiển. Trong trường hợp phản hồi là<br /> 165<br /> <br /> Nguyễn Tiến Hưng và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> xung PWM thì sẽ được đưa đến đầu vào<br /> Capture của vi điều khiển. Phần giao tiếp với<br /> HMI được thực hiện thông qua giao thức<br /> Modbus với chuẩn RS485. Ngoài ra, bộ điều<br /> khiển cẩn băng định lượng còn có mạch hiển<br /> thị LCD với độ phân giải 192x64 điểm, 07<br /> phím cài đặt, bộ lưu trữ EEPROM, mạch<br /> đồng hồ thời gian thực, mạch giao tiếp<br /> encoder...<br /> MISO<br /> S+<br /> 12<br /> SHX711<br /> SCK<br /> GND<br /> 11<br /> EXC<br /> REF<br /> ADC1<br /> EXP J<br /> ADC2<br /> 1 +24V<br /> GND 485A1<br /> RS485<br /> S+ 485B1<br /> SLoadcell<br /> GND<br /> EXP 485A2<br /> RS485<br /> GND 485B2<br /> IVC<br /> CAP<br /> FBK<br /> PWM<br /> 485A1 DA<br /> AO1<br /> 485B1<br /> SW2<br /> A<br /> D<br /> PWM<br /> IVC<br /> U2<br /> MCP4821<br /> A+<br /> SW3<br /> CAP<br /> FBK<br /> <br /> MISO<br /> <br /> SW1<br /> <br /> A+<br /> <br /> -12V<br /> U3<br /> +<br /> -<br /> <br /> SCK<br /> <br /> EEPROM<br /> <br /> STM32<br /> Sử dụng<br /> loại có<br /> EEPROM<br /> <br /> Ax0<br /> <br /> ADC1<br /> S+<br /> <br /> Ax1<br /> <br /> S+<br /> <br /> Ax2<br /> <br /> Key pad<br /> Điện áp chuẩn<br /> cho Loadcell<br /> +5V<br /> <br /> LM1117<br /> 5V<br /> <br /> +24V<br /> <br /> LM2575<br /> <br /> +5V<br /> <br /> +5V<br /> <br /> LM1117<br /> <br /> +3V<br /> 3<br /> <br /> U4<br /> AO1<br /> +10V<br /> J2<br /> <br /> -12V<br /> +<br /> -<br /> <br /> +5V<br /> <br /> REF<br /> <br /> +12V<br /> <br /> Ax0<br /> <br /> Battery<br /> for<br /> real<br /> time<br /> <br /> Buzze<br /> <br /> -12V<br /> +<br /> -<br /> <br /> Buzze<br /> EB<br /> EA<br /> IDX<br /> <br /> External<br /> interrupt<br /> <br /> +12V<br /> DA<br /> <br /> Dx0<br /> Dx1<br /> Dx2<br /> <br /> D<br /> <br /> S+<br /> +3V3<br /> <br /> LCD 198x64<br /> <br /> A<br /> <br /> U5<br /> <br /> +12V<br /> <br /> ADC2<br /> +3V3<br /> <br /> DB9<br /> Back<br /> side<br /> <br /> 485A2<br /> 485B2<br /> GND<br /> GND<br /> <br /> A0512S-1W<br /> +5V<br /> <br /> +12V<br /> <br /> GND<br /> <br /> EXC<br /> <br /> LẬP TRÌNH CÁC HÀM TRUYỀN THÔNG<br /> MODBUS<br /> Truyền thông Modbus có 08 hàm, bao gồm<br /> hàm số 01, 02, 03, 04, 05, 06, 15 và 16. Tuy<br /> nhiên, trong nghiên cứu này chỉ cần sử sụng<br /> 04 hàm (01, 03, 05 và 16) là đủ các chắc năng<br /> cần thiết cho bộ điều khiển băng tải. Vì vậy,<br /> các hàm này sẽ được trình bày trong phần tiếp<br /> theo của bài báo này.<br /> Hàm Modbus số 01<br /> Hàm này đọc trạng thái ON/OFF của N cuộn<br /> dây Slave bắt đầu từ cuộn thứ i . Hình 7 minh<br /> họa việc đọc trạng thái của 15 cuộn dây<br /> (N  15) bắt đầu từ cuộn thứ i  13 .<br /> Trước tiên cần xác định cuộn dây thứ i  13<br /> nằm ở bít thứ bao nhiêu của ô nhớ nào bằng<br /> lệnh sau:<br /> CoilMem = addr_begin/8;<br /> CoilBit = addr_begin%8;<br /> <br /> Trong đó, addr_begin là địa chỉ bắt đầu của<br /> cuộn dây, CoilMem là địa chỉ của ô nhớ và<br /> 166<br /> <br /> CoilBit là số thứ tự của bit trong ô nhớ đó.<br /> Trong ví dụ này CoilMem = 13/8 = 1 và<br /> CoilBit = 13%8 = 5. Như vậy, để tạo<br /> <br /> byte thứ nhất truyền đi trạng thái của 8 cuộn<br /> dây bắt đầu từ cuộn dây thứ 13 cần phải dịch<br /> phải byte thứ nhất CoilBit lần, sau đó dịch<br /> trái byte thứ hai (8-CoilBit)=3 lần và cuối<br /> cùng lấy tổng của các byte vừa dịch (hình 7).<br /> Từ Byte thứ hai trở đi cũng làm tương tự.<br /> Lưu ý là mỗi 8 cuộn dây tạo thành một Page<br /> (8 bits). Chẳng hạn nếu đọc trạng thái của 15<br /> cuộn dây như ví dụ trên thì cần phải đọc<br /> (15/8) + 1 = 2 Pages. Tuy nhiên, nếu đặt<br /> CoilPage = num_data/8 + 1;<br /> <br /> với num_data là số cuộn dây cần đọc thì sẽ<br /> gặp trường hợp số cuộn dây là bội số của 8 và<br /> dẫn đến số Page bị tăng lên 1. Ví dụ, nếu<br /> num_data<br /> =<br /> 7, thì số Page là<br /> (num_data/8)+1 = 1. Tuy nhiên, nếu<br /> num_data = 8 thì (num_data/8)+1 = 2,<br /> mặc dù 8 cuộn dây vẫn chỉ nằm trong 1 Page.<br /> Chính vì vậy, số Page cần được tính như sau:<br /> CoilPage = (num_data-1)/8 + 1;<br /> <br /> -12V<br /> <br /> Hình 6. Cấu trúc phần cứng của bộ điều khiển<br /> băng tải<br /> <br /> 189(13): 163 - 169<br /> <br /> Khi<br /> <br /> đó,<br /> <br /> nếu<br /> <br /> num_data<br /> =<br /> 8<br /> thì<br /> (num_data-1)/8<br /> +<br /> 1<br /> =<br /> 1. Nếu<br /> num_data = 16 thì (num_data-1)/8 +<br /> 1 = 2…<br /> Byte 3<br /> <br /> Byte 2<br /> <br /> Byte 1<br /> <br /> Byte 0<br /> <br /> Cuộn thứ i = 13<br /> Dịch trái 3 bits<br /> Dịch phải 5 bits<br /> 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9<br /> <br /> 8<br /> <br /> 7<br /> <br /> 6<br /> <br /> 5<br /> <br /> 4<br /> <br /> 3<br /> <br /> 2<br /> <br /> 1<br /> <br /> 0<br /> <br /> ...<br /> <br /> Số lượng các cuộn dây<br /> cần đọc N = 15<br /> Byte 1 + 2 là byte<br /> đầu tiên cần truyền<br /> Byte 2 +<br /> 3 là byte<br /> thứ hai<br /> cần<br /> truyền<br /> <br /> 28 27 26 25 24 23 22 21<br /> <br /> 20 19 18 17 16 15 14 13<br /> <br /> Dịch phải 5 bits<br /> <br /> Byte 1<br /> 20 19 18 17 16 15 14 13<br /> <br /> Dịch trải 3 bits<br /> <br /> Byte 2<br /> Dịch phải 5 bits<br /> <br /> Byte 2<br /> 28 27 26 25 24 23 22 21<br /> <br /> Dịch trái 3 bits<br /> <br /> Byte 3<br /> <br /> Hình 7. Minh họa đọc trạng thái của 15 cuộn dây<br /> <br /> Hàm Modbus số 03<br /> Hàm Modbus số 03 đọc nội dung của các<br /> thanh ghi trong Slave.<br /> Do các biến trong các bộ điều khiển băng tải<br /> được lưu dưới dạng số thực nên hàm 03 cũng<br /> phải được tùy biến để có thể đọc được các số<br /> thực. Ví dụ, tham số M4x[0] = 168.9 có<br /> dạng hexa như sau<br /> <br /> Nguyễn Tiến Hưng và Đtg<br /> <br /> Tạp chí KHOA HỌC & CÔNG NGHỆ<br /> <br /> tắt. Các giá trị này được tính từ địa chỉ của<br /> thanh ghi như sau:<br /> <br /> M4x[0] = 0x4328E666 = 168.9<br /> A B C D<br /> <br /> Hình 8. Thứ tự các byte của số thực<br /> <br /> Số này được lưu trong mảng M4x với thứ tự<br /> các byte 0, 1, 2, 3 như sau (byte 0 là 0x66,<br /> byte 1 là 0xE6, byte 2 là 0x28 và byte 3 là<br /> 0x43)<br /> M4x[0] =<br /> <br /> 66<br /> <br /> E6<br /> <br /> 28<br /> <br /> D<br /> <br /> C<br /> <br /> B<br /> <br /> 43<br /> <br /> = 168.9<br /> <br /> A<br /> <br /> LSB<br /> <br /> MSB<br /> <br /> Hình 9. Thứ tự các byte của số thực được lưu<br /> trong bộ nhớ<br /> <br /> Tuy nhiên, với các HMI, số này được truyền<br /> đi với thứ tự các byte như hình 10.<br /> 168.9 =<br /> <br /> E6<br /> <br /> 66<br /> <br /> 43<br /> <br /> 28<br /> <br /> C<br /> <br /> D<br /> <br /> A<br /> <br /> B<br /> <br /> Hình 10. Thứ tự các byte được truyền trong giao<br /> thức Modbus<br /> <br /> B<br /> <br /> A<br /> <br /> D<br /> <br /> C<br /> <br /> Byte count<br /> <br /> Function<br /> <br /> Address<br /> <br /> Nghĩa là cứ trong một Word thì byte cao được<br /> truyền trước, byte thấp truyền sau. Ví dụ, đáp<br /> ứng đối với việc truyền số thực nói trên lên<br /> HMI sẽ có dạng như hình 11.<br /> <br /> Byte transfer<br /> direction<br /> <br /> 189(13): 163 - 169<br /> <br /> 03 03 04 E6 66 43 28 ...<br /> <br /> Hình 11. Đáp ứng truyền một số thực trong giao<br /> tiếp Modbus<br /> <br /> Như vậy, để truyền một số thực lên HMI cần<br /> phải biết địa chỉ của ô nhớ đầu tiên lưu số<br /> thực đó. Tiếp theo, các byte cao trong cùng<br /> một Word được truyền trước.<br /> Hàm Modbus số 05<br /> Hàm 05 có chức năng bật hoặc tắt một cuộn dây.<br /> Số lượng các cuộn dây và mảng lưu dữ liệu<br /> các cuộn dây được định nghĩa như sau:<br /> #define NUM_COILS<br /> 120<br /> uint8_t M0x[NUM_COILS/8];<br /> <br /> Có thể coi trạng thái của các cuộn dây được<br /> lưu trong các thanh ghi 8 bits, mỗi bit ứng với<br /> một Coil. Biến CoilReg lưu giá trị số của<br /> thanh ghi (thanh ghi nào sẽ được ghi), biến<br /> CoilBit lưu giá trị của bit sẽ được bật hoặc<br /> <br /> CoilReg = addr/8;<br /> CoilBit = addr%8;<br /> <br /> Để tắt một Coil thì cần phải truyền giá trị<br /> 0x0000. Lúc này bit tương ứng của thanh ghi<br /> sẽ được xóa bằng các lệnh sau:<br /> if(wr_data == 0){<br /> M0x[CoilReg] &=<br /> ~(1
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2