cái này mình từng viết cho step 7 manager, giờ tia phổ biến qua nên cũng đua đòi update, các bạn có thể tham khảo link cho phiên bản step 7
https://plcvietnam.com.vn/forum/show...1ng-profilebus
1. Ví dụ cấu hình phần cứng
h0.jpg, trong hệ thống mình dùng cpu1518f để quản lý các slave. Trong ví dụ mình sẽ viết chương trình cho 5 slave ở nhánh profibus số 2 cho nó gọn:1 dp/dp coupler, 2abb drive và 2 asi module
2. Bắt đầu viết chương trình
- tạo hàm fcxxx rồi khai báo biến như hình
h2.1.PNG
- trong fc này viết ct
network 1: Ghi địa chỉ phần cứng của salve và địa chỉ profibus vào các biến tạm
// node: 4
l 1038 // con số này là địa chỉ trong phần cứng
t #rio_devs[0]
l 4
t #rio_nodes[0]
// node: 5
l 941
t #rio_devs[1]
l 5
t #rio_nodes[1]
// node: 6
l 944
t #rio_devs[2]
l 6
t #rio_nodes[2]
// node: 7
l 542
t #rio_devs[3]
l 7
t #rio_nodes[3]
// node: 8
l 547
t #rio_devs[4]
l 8
t #rio_nodes[4]
// số node
l 4
t #rio_nnodes
nw2: Tạo xung 1s để cập nhật trạng thái
h3.PNG
* db300.dbw1278 sẽ tăng lên 1 sau mỗi vòng quét để scan toàn bộ slave.
* chỗ chân riosts của fc440, trong db300 khai báo như sau
h6.PNG
mỗi phần tử array[x,y] là 1 slave: X là slave, y là vị trí của submodule gắn trên slave (-1 chính là bản thân slave).
* tiếp tục viết ham fc440, trong fc440 khai báo như sau
h4.PNG
hôm qua co bạn hỏi mình cách viết scl nên sẵn mình dùng scl cho hàm này luôn. Trong hàm này mình dùng hàm thư viện modulestates của siemen để kiểm tra trạng thái của các slave, và kiểm tra cả các module gắn trên remote io( et200). Code chương trình này khá dể hiểu, chỉ cần mở
của hàm modulestates của siemen lên là hiểu ngay.
Tiếp theo lấy bit của slave tương ứng ra dùng, ví dụ slave số 4
a db300.rio_diag_net[1].sts[4, -1] // slave số 4
= m0.0
a db300.rio_diag_net[1].sts[4, 2] // submodule nằm ở slot 2 của slave 4
= m0.1
tương tự bạn có thể lấy được cho tất cả, các bạn có thể làm ngắn gọn hơn bằng cách dùng trực tiếp hàm của siemen cho từng module, hàm này viết tổng quan nên tạo mảng hơi phức tạp.
Những tín hiệu này đưa về hmi, khi có lỗi xảy ra người bảo trì và vận hành sẽ biết được chính xác module và submodule nào bi lỗi
Đánh dấu