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
TÓM TẮT
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,
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
đị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
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ừ
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ả
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
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
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
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
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
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. Đ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.
ắt đầu từ cuộn thứ 13i . Trước tiên cần xác định cuộn dây thứ 13i nằm ở bít thứ bao nhiêu của ô nhớ nào bằng lệnh sau: CoilMem = addr_begin/8; CoilBit = addr_begin%8; Trong đó, addr_begin là địa chỉ bắt đầu của cuộn dây, CoilMem là địa chỉ của ô nhớ và CoilBit là số thứ tự của bit trong ô nhớ đó. Trong ví dụ này CoilMem = 13/8 = 1 và CoilBit = 13%8 = 5. Như vậy, để tạo byte thứ nhất truyền đi trạng thái của 8 cuộn dây bắt đầu từ cuộn dây thứ 13 cần phải dịch phải byte thứ nhất CoilBit lần, sau đó dịch trái byte thứ hai (8-CoilBit)=3 lần và cuối cùng lấy tổng của các byte vừa dịch (hình 7). Từ Byte thứ hai trở đi cũng làm tương tự. Lưu ý là mỗi 8 cuộn dây tạo thành một Page (8 bits). Chẳng hạn nếu đọc trạng thái của 15 cuộn dây như ví dụ trên thì cần phải đọc (15/8) + 1 = 2 Pages. Tuy nhiên, nếu đặt CoilPage = num_data/8 + 1; với num_data là số cuộn dây cần đọc thì sẽ gặp trường hợp số cuộn dây là bội số của 8 và dẫn đến số Page bị tăng lên 1. Ví dụ, nếu num_data = 7, thì số Page là (num_data/8)+1 = 1. Tuy nhiên, nếu num_data = 8 thì (num_data/8)+1 = 2, mặc dù 8 cuộn dây vẫn chỉ nằm trong 1 Page. Chính vì vậy, số Page cần được tính như sau: CoilPage = (num_data-1)/8 + 1; Khi đó, nếu num_data = 8 thì (num_data-1)/8 + 1 = 1. Nếu num_data = 16 thì (num_data-1)/8 + 1 = 2 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 027 26 25 24 15 14 13 20 19 18 17 16 15 14 13 20 19 18 17 16 23 22 2128 27 26 25 24 28 27 26 25 24 23 22 21 Dịch phải 5 bitsDịch trái 3 bits ... Cuộn thứ i = 13 Số lượng các cuộn dây cần đọc N = 15 Byte 0Byte 1Byte 2 Byte 1 Byte 2 Byte 2 Byte 3 Dịch phải 5 bits Dịch trải 3 bits Dịch phải 5 bits Dịch trái 3 bits Byte 1 + 2 là byte đầu tiên cần truyền Byte 2 + 3 là byte thứ hai cần truyền Byte 3 28 Hình 7. Minh họa đọc trạng thái của 15 cuộn dây Hàm Modbus số 03 Hàm Modbus số 03 đọc nội dung của các thanh ghi trong Slave. Do các biến trong các bộ điều khiển băng tải được lưu dưới dạng số thực nên hàm 03 cũng phải được tùy biến để có thể đọc được các số thực. Ví dụ, tham số M4x[0] = 168.9 có dạng hexa như sau Nguyễn Tiến Hưng và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 189(13): 163 - 169 167 C D M4x[0] = 0x4328E666 = 168.9 A B Hình 8. Thứ tự các byte của số thực Số này được lưu trong mảng M4x với thứ tự các byte 0, 1, 2, 3 như sau (byte 0 là 0x66, byte 1 là 0xE6, byte 2 là 0x28 và byte 3 là 0x43) E6 28 43M4x[0] = 66 MSB ABCD LSB = 168.9 Hình 9. Thứ tự các byte của số thực được lưu trong bộ nhớ Tuy nhiên, với các HMI, số này được truyền đi với thứ tự các byte như hình 10. 66 43 28168.9 = E6 BADC Hình 10. Thứ tự các byte được truyền trong giao thức Modbus Nghĩa là cứ trong một Word thì byte cao được truyền trước, byte thấp truyền sau. Ví dụ, đáp ứng đối với việc truyền số thực nói trên lên HMI sẽ có dạng như hình 11. 03 03 04 E6 66 43 28 ... A d d re s s F u n c ti o n B y te c o u n t C D A B Byte transfer direction Hình 11. Đáp ứng truyền một số thực trong giao tiếp Modbus Như vậy, để truyền một số thực lên HMI cần phải biết địa chỉ của ô nhớ đầu tiên lưu số thực đó. Tiếp theo, các byte cao trong cùng một Word được truyền trước. Hàm Modbus số 05 Hàm 05 có chức năng bật hoặc tắt một cuộn dây. Số lượng các cuộn dây và mảng lưu dữ liệu các cuộn dây được định nghĩa như sau: #define NUM_COILS 120 uint8_t M0x[NUM_COILS/8]; Có thể coi trạng thái của các cuộn dây được lưu trong các thanh ghi 8 bits, mỗi bit ứng với một Coil. Biến CoilReg lưu giá trị số của thanh ghi (thanh ghi nào sẽ được ghi), biến CoilBit lưu giá trị của bit sẽ được bật hoặc tắt. Các giá trị này được tính từ địa chỉ của thanh ghi như sau: CoilReg = addr/8; CoilBit = addr%8; Để tắt một Coil thì cần phải truyền giá trị 0x0000. Lúc này bit tương ứng của thanh ghi sẽ được xóa bằng các lệnh sau: if(wr_data == 0){ M0x[CoilReg] &= ~(1<<CoilBit); } Để bật một cuộn dây thì cần phải truyền giá trị 0xFF00. Lúc này bit tương ứng của thanh ghi sẽ được set bằng lệnh sau: if(wr_data == 0xFF00){ M0x[CoilReg] |= 1<<CoilBit; } Hàm Modbus số 16 Hàm 16 có chức năng ghi các giá trị vào một chuỗi các thanh ghi lưu trữ. Dữ liệu nhận được thông qua giao tiếp Modbus được lưu vào biến M_4x bởi lệnh M_4x[wr_addr+ii] = buf_rece[7+ii]; Tuy nhiên, biến M_4x chỉ là các biến trung gian để nhận dữ liệu qua giao tiếp Modbus và chỉ là các dữ liệu byte. Sau khi nhận được, các byte dữ liệu cần thiết được biến đổi thành các số thực cần thiết và lưu vào các biến thông số M4x (mảng các số thực) thông qua các lệnh sau: jj=(wr_addr+ii)%4; kk=(wr_addr+ii)/4; if (jj<4) { buf_float[jj] = buf_rece[7+ii]; } if (jj==3) { M4x[kk-1] = FloatGetFromBuff(); } Cứ sau mỗi 4 byte nhận được thì dữ liệu sẽ được chuyển thành một số thực lưu vào mảng thông số M4x. Chính vì chuyển dữ liệu là các số thực nên các địa chỉ bắt đầu của mỗi dữ liệu cần chuyền sẽ là 0, 4, 8, 12, Hiện tại, Nguyễn Tiến Hưng và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 189(13): 163 - 169 168 04 byte đầu tiên của mảng dữ liệu M_4x (byte 0, 1, 2, 3) được dùng để lưu các trạng thái của hệ thống. Dữ liệu truyền cho các tham số điều khiển sẽ bắt đầu từ byte thứ 4. Chẳng hạn, muốn thay đổi giá trị của tham số P000 (tham số đầu tiên) thì địa chỉ bắt đầu sẽ phải là wr_addr = 04 các byte tiếp theo sẽ có địa chỉ là 05, 06 và 07. Khi biến đếm ii chạy từ 0 đến 3 thì biến trung gian jj sẽ nhận các giá trị là 0, 1, 2 và 3. Trong khi biến trung gian kk nhận các giá trị 1, 1, 1 và 1 (4/4=1, 5/4=1. 6/4=1 và 7/4=1). Ở đây biến kk có vai trò xác định xem các cụm 04 byte dữ liệu nhận được thuộc về tham số thực nào (tham số thứ 2 sẽ có địa chỉ bắt đầu từ 8 vì vậy kk sẽ nhận các giá trị là 8/4=2, 9/4=2, 10/4=2 và 11/4=2). Khi jj<4 (jj=0, 1, 2, 3) thì các biến mảng trung gian sẽ lưu các giá trị dữ liệu nhận được if (jj<4) { buf_float[jj] = buf_rece[7+ii]; } Mỗi khi jj=3 thì có nghĩa là một cụm 04 byte dữ liệu đã được nhận và sẽ được chuyển thành một số thực và lưu vào biến tham số tương ứng (bắt đầu từ index 0) if ((jj==3) && (kk>0)) { M4x[kk-1] = FloatGetFromBuff(); } KẾT LUẬN 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 có khả năng thay thế cho các sản phẩm nhập khẩu tương đương có giá thành cao, chủ động hoàn toàn trong việc thiết kế, chế tạo, viết phần mềm (firmware), bảo hành, bảo trì và nâng cấp sản phẩm. Mỗi băng tải thành phần được điều khiển bởi một bộ điều khiển riêng, có đầy đủ các chức năng và các đầu vào/ra cần thiết. Các bộ điều khiển này có khả năng làm việc độc lập mà không cần điều khiển từ máy tính. Tất cả các bộ điều khiển băng tải riêng rẽ có thể được dễ dàng kế nối với một hệ thống điều khiển cấp trên thông qua chuẩn giao tiếp công nghiệp Modbus nên có thể được tích hợp vào trong các hệ thống hiện có của các nhà máy một cách dễ dàng. LỜI CẢM ƠN Các tác giả trân trọng cảm ơn Trường Đại học Kỹ thuật Công nghiệp - Đại học Thái Nguyên đã tài trợ cho việc nghiên cứu các vấn đề được đề cập trong bài báo này. PHỤ LỤC A Các thông số băng tải [2] Mômen quán tính động cơ MJ 0.0012N/m Tải trọng cM 1.1Kg Tỷ số truyền G 1 Bán kính con lăn R 0.02m F 970N 0.00267 1L 0.74 2L 1.405 3L 0.00267 REFERENCES 1. N.T. Hưng, N.T.M. Hương (2017), “Ứng dụng điều khiển giới hạn chéo trong các hệ thống cân băng điều tốc”. Tạp chí Khoa học và Công nghệ Đại học Thái Nguyên, tập 173, số 13, 2017. Trang 219-224. 2. A. Selezneva (2007), Modeling and synthesis of tracking control for the belt drive. Msc thesis. Lappeenranta University of Technology. 3. D. He (2007), Energy Saving for Belt Conveyors by Speed Control. Delft University of Technology. 4. D. He, Y. Pang, and G. Lodewijks (2016), “Determination of acceleration for belt conveyor speed control in transient operation,” IACSIT International Journal of Engineering and Technology, vol. 8, no. 3. 5. ConveyorBeltGuide. (2016) Conveyor components. [Online]. Available: tml. Nguyễn Tiến Hưng và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 189(13): 163 - 169 169 ABSTRACT DESIGN AND MANUFACTURING A BELT SCALE REGULATOR ALONG WITH MODBUS COMMUNICATION Nguyen Tien Hung * , Vu Quoc Dong University of Technology - TNU Belt scale systems are widely used in many industrial areas such as cement producing, foodstuff, chemical fertilizer... Previously, since a belt scale system can be regulated by a computer for all conveyor belts, it is difficult to integrate it into a big and modern industrial line where the input materials are processed automatically until the final products are produced. The belt scale regulators with an included industrial communication standard are employed in the belt conveyor systems in order to overcome above limitation. However, since international companies usually provide a total solution for a manufacturing process, using different devices of different brand names in an industrial line exhibits some disadvantages of hardware and software incompatibilities. This paper presents a design of a belt scale system using regulators with an industrial communication standard. Therefore, the regulator can be integrated into different manufacturing systems and communicated with Human Machine Interface devices provided by many famous companies in order to display and store operation data without any computer. This guarantees reliability, stability, and continuousness of the overall system. Keywords: Belt scale system, regulator, industrial communication, microcomputer, Modbus Ngày nhận bài: 13/11/2018; Ngày hoàn thiện: 27/11/2018; Ngày duyệt đăng: 30/11/2018 * Tel: 0913 286461, Email: h.nguyentien@tnut.edu.vn
File đính kèm:
- thiet_ke_va_che_tao_he_thong_can_bang_dinh_luong_dieu_khien.pdf