Đang tải tiến độ trên máy…
PLC Gym
Trang chủ PLC GymCấp độ 1, 0 XP · tiến độ của bạn
TIA Portal V20

Siemens SCL

Đã kiểm thử bằng trình mô phỏng

S7-1500 tiêu chuẩn · bộ nhớ FB được tối ưu hóa · tag cục bộ # trong SCL.

Cấu trúc
Giao diện có kiểu; phép gán, IF / ELSIF / ELSE, danh sách CASE INT/DINT có dấu và REGION / END_REGION. Khoảng giá trị CASE nằm ngoài phạm vi này.
Biểu thức
Logic BOOL, phép tính số, phép so sánh và dấu ngoặc đơn. INT, DINT, REAL và TIME. & cũng có nghĩa là AND. ABS, LIMIT, MIN, MAX, ROUND và TRUNC dùng được cho số. Muốn đưa REAL vào INT hoặc DINT, hãy dùng ROUND hoặc TRUNC: TIA Portal không tự chuyển đổi. Chú thích là // đến hết dòng, (* ... *), hoặc (/* ... */) cho chú thích có thể được dịch.
Lệnh có trạng thái
Các bộ định thời TON_TIME, TOF_TIME, TP_TIME và TONR_TIME; các bộ đếm IEC_COUNTER.CTU, CTD_INT và CTUD_INT với INT PV/CV; R_TRIG và F_TRIG. Danh sách bên dưới có từng loại.
Vòng lặp FOR và EXIT
FOR counter := start TO end BY step DO … END_FOR; dùng biến đếm INT/DINT, giới hạn tính cả hai đầu và BY là tùy chọn (mặc định +1). Bước âm vẫn dùng được. EXIT thoát khỏi vòng lặp trong cùng. Giữ nguyên biến đếm, giá trị end và toán hạng BY trong thân vòng lặp; BY bằng 0 sẽ bị từ chối.
Mảng
Khai báo ARRAY[0..9] OF REAL trong giao diện của khối; đọc hoặc ghi #Samples[#Index]. Phần tử BOOL, INT, DINT và REAL, kể cả cận dưới âm.
Kiểu dữ liệu PLC và FB
Kiểu dữ liệu PLC có tên (bảng hoặc tài liệu TYPE) và các FB tái sử dụng với Input, Output, InOut, Static và Temp. Khai báo các instance FB trong Static và gọi #Instance(Input := …, Output => …).
Giới hạn thực thi
Mảng một chiều: tối đa 256 phần tử mỗi mảng và 1.024 giá trị lưu trữ mở rộng cho mỗi chương trình. Mỗi phần tử xuất hiện trong Tag theo dõi và phần phát lại. Chỉ số vượt phạm vi sẽ dừng chu kỳ quét kèm chỉ số thực tế và giới hạn cho phép. Các vòng lặp dùng chung ngân sách 20.000 phép toán của chu kỳ quét, kể cả khi thân vòng lặp trống. Đây là các giới hạn của học viện.
Ngoài phạm vi này
WHILE / REPEAT, toán tử lũy thừa **, các hàm toán học khác (SQRT, SIN và v.v.), mảng nhiều chiều, mảng UDT hoặc instance, cấu trúc lồng nhau ẩn danh, sao chép cả mảng, hàm của riêng bạn có giá trị trả về, địa chỉ con trỏ và các tệp dự án gốc.

Bộ định thời, bộ đếm và chốt

TON TON_TIME
Trễ đóng. Q bật khi IN đã bật được PT, và tắt cùng IN. #Delay(IN := #Start, PT := T#2s); Siemens: trang cá nhân
TOF TOF_TIME
Trễ ngắt. Q bật cùng IN và giữ bật thêm PT sau khi IN tắt. #RunOn(IN := #Start, PT := T#2s); Siemens: trang cá nhân
TP TP_TIME
Xung. Q bật trong PT kể từ mỗi sườn lên của IN, bất kể sau đó IN thế nào. Một sườn mới trong lúc xung đang chạy sẽ bị bỏ qua. #Dose(IN := #Start, PT := T#2s); Siemens: trang cá nhân
TONR TONR_TIME
Bộ tích lũy thời gian. ET cộng dồn thời gian IN bật và giữ nguyên khi IN tắt. Q bật khi đạt PT và giữ bật. R xóa ET và Q. #RunTime(IN := #Running, R := #Clear, PT := T#1h); Siemens: trang cá nhân
CTU IEC_COUNTER
Đếm lên. Mỗi sườn lên của CU cộng 1 vào CV. Q bật khi CV bằng hoặc lớn hơn PV. R đặt CV về 0. #Bottles.CTU(CU := #Sensor, R := #Clear, PV := 6); Siemens: trang cá nhân
CTD CTD_INT
Đếm xuống. LD nạp PV vào CV. Mỗi sườn lên của CD trừ đi 1. Q bật khi CV bằng hoặc nhỏ hơn 0. #Left(CD := #Sensor, LD := #Refill, PV := 12); Siemens: trang cá nhân
CTUD CTUD_INT
Đếm lên và xuống. CU cộng 1, CD trừ 1, và cả hai trong cùng một chu kỳ quét thì CV giữ nguyên. R đặt CV về 0 và LD nạp PV. QU bật khi bằng hoặc lớn hơn PV, QD khi bằng hoặc nhỏ hơn 0. #Stock(CU := #In, CD := #Out, R := #Clear, LD := FALSE, PV := 10); Siemens: trang cá nhân

SR, RS và cuộn dây đảo là các khối LAD và FBD. Trong SCL, hãy viết một chốt bằng IF và một bit đảo bằng NOT.

Kiểu dữ liệu PLC và FB

Nhóm dữ liệu thiết bị và dùng lại một khối điều khiển đã kiểm tra

Đã kiểm thử bằng trình mô phỏng
  • Một UDT mô tả một nhóm giá trị liên quan. PumpStatus chứa trạng thái chạy và tổng số lần khởi động; nó không thực thi logic nào.
  • PumpControl chứa logic dùng lại được. DutyControl và StandbyControl là hai instance riêng: chúng dùng chung định nghĩa, nhưng mỗi cái giữ giá trị Latch và WasRunning của riêng mình.
  • Đầu vào được cấp khi gọi. Running được chép sang đầu ra sau khi thực thi. Status là một InOut có cấu trúc, tham chiếu đến tag trạng thái của bơm đó; ghi Status.Starts sẽ cập nhật dữ liệu của nơi gọi.
  • Mỗi lệnh gọi chạy theo thứ tự chương trình. Bỏ qua một lệnh gọi thì instance và đầu ra giữ nguyên giá trị; một IF bao quanh lệnh gọi không phải là lệnh dừng. Hãy cấp đầu vào cấm/Stop và thực thi khối để tắt bơm.

Khai báo PumpStatus là kiểu dữ liệu PLC và PumpControl là một FB. Khai báo DutyControl/StandbyControl trong Static để gọi nhiều instance. SCL dùng tag cục bộ có dấu #, Input/InOut dùng := và Output dùng =>. Dữ liệu Temp được xóa sau mỗi lần gọi trong mô hình dạy học đã được tối ưu này.

Kiểu dữ liệu PLC · tài liệu TYPE
TYPE
    PumpStatus : STRUCT
        Running : BOOL;
        Starts : DINT;
    END_STRUCT;
END_TYPE
FB PumpControl · giao diện
TênPhầnKiểu dữ liệu
StartĐầu vàoBOOL
StopĐầu vàoBOOL
PermitĐầu vàoBOOL
FaultĐầu vàoBOOL
RunningOutputBOOL
StatusInOutPumpStatus
LatchStaticBOOL
WasRunningStaticBOOL
Thân FB (SCL)
#Latch := (#Start OR #Latch) AND NOT #Stop AND #Permit AND NOT #Fault;
IF #Latch AND NOT #WasRunning THEN
    #Status.Starts := #Status.Starts + 1;
END_IF;
#Status.Running := #Latch;
#Running := #Latch;
#WasRunning := #Latch;
Hai instance được gọi từ routine chính
#DutyControl(Start := #Start, Stop := #Stop, Permit := #Permit, Fault := #Fault, Running => #PumpOn, Status := #DutyStatus);
#StandbyControl(Start := #StandbyStart, Stop := #Stop, Permit := #Permit, Fault := #StandbyFault, Running => #StandbyPump, Status := #StandbyStatus);

Thử trên bàn làm việc

Mở bất kỳ SCL nhiệm vụ nào và dùng các thẻ Kiểu dữ liệu PLC và Khối chức năng (tab). Sau đó khai báo các instance trong Giao diện khối.

  1. Xem UDT và định nghĩa khối, rồi đến hai instance có tên khác nhau.
  2. Khi đang tạm dừng, ghi đè Start thành TRUE trong tab Đầu vào và chạy từng bước vài chu kỳ quét: PumpOn vẫn bật và DutyStatus.Starts tăng một lần.
  3. Nhả Start. Mạch tự duy trì giữ bơm chính tiếp tục chạy. Khởi động bơm dự phòng; số lần khởi động của nó là độc lập.
  4. Chuyển Fault sang ON: bơm chính dừng ngay trong khi bơm dự phòng vẫn chạy. Nhấn Stop khi đang chạy, hoặc ghi đè Stop thành TRUE trong tab Đầu vào khi đang tạm dừng: cả hai đều dừng.
  5. Tua lại một chu kỳ quét đã ghi và so sánh tag trạng thái của nơi gọi với trạng thái cục bộ của khối và các dòng đã thực thi trong khối.

Quy ước mô phỏng

  • Tác vụ ảo cố định 20 ms. Tốc độ phát lại và tốc độ khung hình 3D không làm thay đổi kết quả.
  • Mỗi kịch bản kiểm tra bắt đầu từ trạng thái bộ điều khiển và thiết bị hoàn toàn mới.
  • Chỉnh sửa sẽ dừng việc thực thi. Kết quả và phần phát lại thuộc về bản chương trình đã được kiểm tra.
  • REAL dùng độ chính xác 32 bit. Tràn số nguyên không được hỗ trợ sẽ tạo ra một chẩn đoán.
  • Bộ đếm giữ giá trị INT. Các độ rộng bộ đếm khác (SINT, DINT và các kiểu không dấu) và bộ định thời LTIME chưa được triển khai ở đây.
  • Các phép tính NORM_X/SCALE_X hợp lệ được hỗ trợ trong FBD. Phạm vi không hợp lệ sẽ dừng kèm một chẩn đoán; kết quả ENO/lỗi gốc không được tái tạo.
  • Biểu đồ dùng một đường hoạt động và các hành động logic Boole N/S/R. Hành động có thời gian gốc, đường song song và tùy chọn quét cuối/đặt lại nằm ngoài mô hình này.
  • Phép chia số nguyên bỏ phần thập phân: 7 / 2 là 3. Phép so sánh số thập phân dùng độ chính xác của toán hạng; một giá trị REAL 0.1 so sánh bằng 0.1. Hãy dùng toán hạng REAL để chia ra phần thập phân.
  • SCL chấp nhận các hằng số REAL có kiểu như REAL#2.0. Các phép tính dấu phẩy động mơ hồ dùng độ chính xác kép của S7-1500 trước khi gán cho tag REAL.
  • Việc giữ dữ liệu khi mất điện, I/O thật, thời gian mạng và firmware của hãng nằm ngoài mô hình.

Đọc tài liệu gốc

Học viện này dạy một tập con có giới hạn. Muốn xác minh với bản gốc thì phải biên dịch và kiểm tra trong phần mềm của hãng được nêu tên.

Việc chấm phỏng vấn chạy ngay trong trình duyệt này. Quy trình trực tiếp hiện tại là một bản mẫu cục bộ, không phải dịch vụ đánh giá từ xa an toàn. Các tệp xuất ra đang ở bản thử nghiệm và cần kiểm tra việc nhập và hành vi trong TIA Portal V20 hoặc Studio 5000.

Hành vi cơ bản đã được đối chiếu với các sổ tay Logix chính thức, sổ tay S7-1200 và hướng dẫn S7-1200/1500. Các tài liệu của Siemens có trước V20. Hành vi của TwinCAT theo các trang tham khảo Tc2_Standard của Beckhoff và sổ tay TwinCAT 3 PLC. Việc đối chiếu này không thay thế cho việc kiểm tra trên bộ điều khiển đích, nhất là về thời gian của biểu đồ và các khối dùng lại.

Siemens TIA Portal V20Studio 5000 v38Sổ tay khối chức năng LogixSổ tay SFC của LogixCác ngôn ngữ của TwinCAT 3 PLCTwinCAT Tc2_Standard TONTwinCAT Tc2_Standard CTU