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

