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.

pdf7 trang | Chuyên mục: Kỹ Thuật Cảm Biến | Chia sẻ: yen2110 | Lượt xem: 198 | Lượt tải: 0download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ắt đầu từ cuộn thứ 13i . 
Trước tiên cần xác định cuộn dây thứ 13i 
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:

  • pdfthiet_ke_va_che_tao_he_thong_can_bang_dinh_luong_dieu_khien.pdf