Anh có thể cho cách làm ngày trên bài toán của e để dễ hình dung được ko ạ,cái này tổng quát quá
Printable View
Thôi vậy chỉ bạn làm cách dễ trước vì bài toán của bạn cũng chỉ có 2 bơm.
Trước hết là mức Stop (Mức thấp) 2 bơm dừng, cái này thì quá dễ, so sánh level dùng 2 lệnh Reset là xong.
Kế tiếp là mức cao, 2 bơm đều chạy, cái này cũng dễ, so sánh level dùng 2 lệnh Set cho cả 2 bơm.
Phần khó nhất là đây, mức trung bình (Mức Start), chạy luân phiên:
Xem code này nhé, lưu ý code này chỉ để tham khảo thôi chứ chưa tối ưu cho hệ thống của bạn:
//Nếu mực nước đạt mức Start thì trigger bằng 1
IF #Trigger=1 THEN
IF #Mem=1 THEN #Mem:=0;
//Đảo trạng thái cờ nhớ vì chỉ có 2 bơm nên đảo bit là được
ELSE #Mem:=1;
END_IF;
END_IF;
IF #"1 Pump Mode"=0 THEN
//Chế độ Alternative - đảo bơm dựa vào cờ nhớ, cứ mỗi lần trigger là đảo
IF #Mem=0 THEN #"Pump 1":=1; #"Pump 2":=0;
ELSE #"Pump 1":=0; #"Pump 2":=1;
END_IF;
ELSE
//Chế độ 1 bơm, chỉ chạy 1 bơm chứ không đảo, dùng trong trường hợp bảo trì 1 bơm, biến "Pump No" dùng để chọn bơm
IF #"Pump No"=1 THEN
#"Pump 1":=1;
#"Pump 2":=0;
END_IF;
IF #"Pump No"=2 THEN
#"Pump 1":=0;
#"Pump 2":=1;
END_IF;
END_IF;
Còn làm kiểu xét thời gian thì có vẻ hơi khó so với bạn nên khi nào gặp bài toán thực tế mình hướng dẫn sau. Vẫn dùng ngôn ngữ SCL vì nó dễ hiểu và gần với giải thuật.
bài toán của e,em đã viết giải thuật rồi,những chuyển xuống code thì e chưa làm được,em viết LAD thôi aĐính kèm 2361
ngôn ngữ anh Lợi viết bằng SCL rất gần với thực tế và giải thuật,nhưng e lại ko biết viết ngôn ngữ đó,a có tài liệu gì ko chia sẻ e với