3.2.5. Kỹ thuật lập trình a. Vịng qt chương trình
PLC thực hiện chương trình theo chu trình lặp. Mỗi vịng lặp được gọi là vòng quét. Mỗi vòng quét được bắt đầu bằng giai đoạn chuyển dữ liệu từ các
cổng vào số tới vùng bộ đệm ảo I, tiếp theo là giai đoạn thực hiện chương trình. Trong từng vịng qt chương trình được thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB1.
Sau giai đoạn thực hiện chương trình là giai đoạn chuyển các nội dung của bộ đệm ảo Q tới các cổng ra số. Vòng quét kết thúc bằng giai đoạn truyền thông nội bộ và kiểm tra lỗi.
Chú ý rằng bộ đệm I và Q không liên quan tới các cổng vào / ra tương tự nên các lệnh truy nhập cổng tương tự được thực hiện trực tiếp với cổng vật lý chứ không thông qua bộ đệm.
b. Cấu trúc lập trình
Hình 3.9: Cấu trúc lập trình
c. Khối tổ chức OB
Organization blocks (OB): là giao diện giữa hoạt động hệ thống và chương trình người dùng. Chúng được gọi ra bởi hệ thống hoạt động và điều khiển theo q trình:
• Xử lý chương trình theo q trình
• Báo động, kiểm sốt, xử lý chương trình
• Xử lý lỗi
Startup OB, Cycle OB, Timing Error OB và Diagnosis OB: có thể chèn và lập trình các khối này trong các project. Không cần phải gán các thông số cho chúng và cũng khơng cần gọi chúng trong chương trình chính.
Process Alarm OB và Time Interrupt OB: Các khối OB này phải được tham số hóa khi đưa vào chương trình. Ngồi ra, q trình báo động OB có thể được gán cho một sự kiện tại thời gian thực hiện bằng cách sử dụng các lệnh ATTACH, hoặc tách biệt với lệnh DETACH.
Time Delay Interrupt OB: OB ngắt thời gian trễ có thể được đưa vào dự án và lập trình. Ngồi ra, chúng phải được gọi trong chương trình với lệnh SRT_DINT, tham số là khơng cần thiết.
d. Hàm chức năng
Funtions (FC) là các khối mã không cần bộ nhớ. Dữ liệu của các biến tạm thời bị mất sau khi FC được xử lý. Các khối dữ liệu tồn cầu có thể được sử dụng để lưu trữ dữ liệu FC. Hàm (FC) và khối hàm (FB) chứa mã chương trình tương ứng với các nhiệm vụ riêng biệt hay với sự kết họp các thông số. Mỗi FC và FB cung cấp một tổ họp các thông số ngõ vào và ngõ ra dành cho việc chia sẻ dữ liệu với khối đang gọi.
Functions có thể được sử dụng với mục đích:
• Trả lại giá trị cho hàm chức năng được gọi
• Thực hiện cơng nghệ chức năng, ví dụ: điều khiển riêng với các hoạt động nhị phân
• Ngồi ra, FC có thể được gọi nhiều lần tại các thời điểm khác nhau trong một chương trình. Điều này tạo điều kiện cho lập trình chức năng lặp đi lặp lại phức tạp.
• FB (function block): đối với mỗi lần gọi, FB cần một khu vực nhớ. Khi một FB được gọi, một Data Block (DB) được gán với instance DB. Dữ liệu
trong Instance DB sau đó truy cập vào các biến của FB. Các khu vực bộ nhớ khác nhau đã được gán cho một FB nếu nó được gọi ra nhiều lần.
3.2.6. Các vùng nhớ và việc ghi địa chỉ a. Vùng nhớ dữ liệu
CPU cung cấp một số các tùy chọn dành cho việc lưu trữ dữ liệu trong suốt sự thực thi chương trình người dùng:
- Global memory (bộ nhớ tồn cục): CPU cung cấp nhiều vùng nhớ chuyên mơn hóa, bao gồm các ngõ vào (I), các ngõ ra (Q) và bộ nhớ bit (M). Bộ nhớ này là có thể truy xuất bởi tất cả các khối mã mà khơng có sự hạn chế nào.
- Data block (DB – khối dữ liệu): ta có thể bao gồm các DB trong chưorng trình người dùng
- Temp memory (bộ nhớ tạm thời): khi một khối mã được gọi, hệ điều hành của CPU phân bổ bộ nhớ tạm thời hay cục bộ (L) để sử dụng trong suốt sự thực thi của khối. Khi sự thực thi của khối hoàn thành, CPU sẽ phân bổ lại bộ nhớ cục bộ dành cho việc thực thi các khối mã khác.
Mỗi vị trí bộ nhớ khác nhau có một địa chỉ đơn nhất. Chương trình người dùng sử dụng các địa chỉ này để truy xuất thơng tin trong vị trí bộ nhớ.
Tổng quát các vùng nhớ trong PLC S7 1200 b. Các kiểu dữ liệu
Các kiểu dữ liệu được sử dụng để xác định cả kích thước của một phần tử dữ liệu cũng như cách thức mà dữ liệu được diễn dịch. Mỗi thơng số lệnh hỗ trợ ít nhất một kiểu dữ liệu, và một số thơng số cịn hỗ trợ nhiều kiểu dữ liệu.
3.2.6. Các tập lệnh trong PLC a. Tập lệnh cơ bản
Tên lệnh Kí hiệu Chức năng
Tiếp điểm
thường hở Tiếp điểm thường hở đóng lại khi giá trịcủa bit được gán bằng 1.
Tiếp điểm thường đóng
Tiếp điểm thường đóng đóng lại khi giá trị của bit được gán bằng 0.
Lệnh OUT Giá trị của địa chỉ đầu ra bằng 1 khi giá trị đầu vào của lệnh này bằng 1 và ngược lại.
Tiếp điểm phát hiện xung cạnh
lên
Phát hiện sự thay đổi trạng thái của 1 tín hiệu “IN” từ 0 lên 1.
Tiếp điểm phát hiện xung cạnh
xuống
Phát hiện sự thay đổi trạng thái của 1 tín hiệu “IN” từ 1 xuống 0.
Trạng thái của tín hiệu IN được lưu lại vào “M_BIT”.
Lệnh Set
Giá trị của các bit bằng 1 khi đầu vào của lệnh này bằng 1.Khi đầu vào của lệnh bằng 0 thì bit này vẫn giữ nguyên trạng
thái.
Lệnh Reset
Giá trị của các bit bằng 0 khi đầu vào của lệnh này bằng 1. Khi đầu vào của lệnh bằng 0 thì các bit này vẫn giữ nguyên
trạng thái.
b. Bộ thời gian (Timer)
Timer trong PLC được định nghĩa là những bộ đếm thời gian có thể lập trình được. Hiện này có rất kiểu timer được tích hợp trong plc như là on delay: có nghĩa là khi có tác động của ngõ vào thì timer sẽ tạo một khoảng thời gian trễ được cài đặt trước sau đó sẽ tác động ngõ ra, tương tự như vậy là loại off delay thì ngược lại.
Ngồi ra đối với một số dòng plc cao cấp cịn tích hợp nhiều loại timer khác nhau chứ tác động ngõ ra theo chu kỳ thời gian, timer đơi là dạng tích hợp hai chu kỳ thời gian.
Ứng dụng của timer trong PLC rất quan trọng để xử lý nhiều thao tác khác
nhau như:
• Tạo khoảng thời gian trễ để điều khiển ngõ ra. Ví dụ như cần bật bóng đèn sấy 10s sau khi bấm cơng tắc thì ta có thể sử dụng lệnh timer để bật đèn sáng đúng 10s sau đó tắt.
• Timer cùng được dùng để tạo ra chu kỳ cập nhật cho một thao tác nào đó. Ví dụ như ta có thể ứng dụng timer để lập trình bài tốn đèn xanh đỏ vàng. Bằng cách lập trình để các timer có thể trì hỗn đúng thời gian sáng lần lượt của các đền xanh đỏ vàng.
• Timer trong plc cịn ứng dụng để tạo tín hiệu báo lỗi ví dụ như khi khởi động máy 10 phút mà chưa có thao tác của người vận hành thì có thể ra tín hiệu cảnh báo hoặc cho plc vào chế độ sleep.
Lưu ý : Tùy theo mỗi loại plc và cấu trúc của timer mà các bạn cần phải đọc kỹ manual và tập lệnh để có thể sử dụng được timer. Để lập trình được timer thì các bạn phải tìm hiểu về loại timer( On delay hay off delay hay loại nào khác ?), tiếp theo là đơn vị ( ms hay là s), cấu trúc của ngõ vào, ngõ ra tác động như thế nào.
Có 4 loại Timer: On-delay TON
Ngõ ra Q sẽ lên 1 khi đạt được giá trị thời gian PT (Preset Time). Thay đổi PT khi Timer vận hành không ảnh hưởng.
Khi ngõ vào IN ngừng tác động thì reset và dừng hoạt động. Kí
Tham số Chức năng Kiểu dữ liệu Mô tả
IN Input BOOL Ngõ vào (IN=1, chạy thời
gian)
Q Output BOOL Ngõ ra
PT (Preset Time) Input TIME Thời gian đặt ET (Elapsed
Time)
Output TIME Thời gian đếm được
Off-Delay TOF
Ngõ ra Q sẽ xuống 0 khi đạt được giá trị thời gian PT (Preset Time). Thay đổi PT khi Timer vận hành không ảnh hưởng.
Khi ngõ vào IN ngừng tác động thì reset và dừng hoạt động. Kí
Tham số Chức năng Kiểu dữ liệu Mô tả
IN Input BOOL Ngõ vào (IN=0, chạy thời
gian)
Q Output BOOL Ngõ ra
PT (Preset Time) Input TIME Thời gian đặt
ET (Elapsed Time)
Output TIME Thời gian đếm được
Pulse Generation TP
Timer TP tạo một chuỗi xung với độ rộng xung đặt trước. Thay đổi PT, IN không ảnh hưởng khi Timer đang chạy.
Khi đầu vào IN được tác động vào timer sẽ tạo ra một xung có độ rộng bằng thời gian đặt PT
Tham số Chức năng Kiểu dữ liệu Mô tả
IN Input BOOL Ngõ vào (IN=1, chạy thời
gian)
Q Output BOOL Ngõ ra
PT (Preset Time) Input TIME Thời gian đặt
ET (Elapsed Time)
Output TIME Thời gian đếm được
Accumulating On Delay TONR
Thay đổi PT không bị ảnh hưởng khi Timer vận hành, chỉ ảnh hưởng khi Timer đếm lại.
Khi ngõ vào IN chuyển sang 0 thì Timer sẽ dừng nhưng khơng đặt lại bộ định thì. Khi IN lên 1 thì Timer bắt đầu tính từ giá trị thời gian tích lũy trước đó.
Tham số Chức năng Kiểu dữ liệu Mô tả
IN Input BOOL Ngõ vào (IN=1, chạy thời
gian)
Q Output BOOL Ngõ ra
PT (Preset Time) Input TIME Thời gian đặt
ET (Elapsed Time)
Output TIME Thời gian đếm được
R Input BOOL Chân reset
c. Tập lệnh so sánh
Bộ so sánh 2 kiểu dữ liệu giống nhau, nếu lệnh so sánh thỏa mãn thì ngõ ra sẽ là mức 1 = TRUE. Kiểu dữ liệu so sánh là : SInt, Int, Dint, USInt, UDInt, Real, LReal, String, Char, Time, DTL, Constant.
Tên lệnh Kí hiệu Chức năng
Lệnh so sánh
Lệnh so sánh dùng để so sánh hai giá trị IN1 và IN2 bao gồm IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1< IN2, IN1 > IN2 hoặc IN1 <> IN2. So sánh 2 kiểu dữ liệu giống nhau, nếu lệnh so sánh thỏa mãn thì ngõ ra sẽ là mức 1 = TRUE (tác động mức cao) và ngược lại.
d. Toán học
Tham số IN1, IN2 là các ngõ vào phép toán phải cùng kiểu dữ liệu: SInt, Int, Dint, USInt, UInt, UDInt, Real, LReal, Constant.
Tham số OUT ngõ ra phép tốn có kiểu dữ liệu: SInt, Int, Dint, USInt, UInt, UDInt, Real, Lreal.
Tham số ENO = 1 nếu khơng có lỗi xảy ra trong q trình thực thi. Ngược lại ENO = 0 khi có lỗi.
Bảng lệnh cộng, trừ, nhân, chia
Lệnh cộng ADD
Lệnh trừ SUB
Lệnh nhân
MUL
Lệnh chia DIV
Lệnh cộng ADD : OUT = IN1 + IN2
Lệnh trừ SUB : OUT = IN1 – IN2
Lệnh nhân MUL: OUT = IN1*IN2
e. Di chuyển Move
Bảng lệnh di chuyển Move
Tên lệnh Kí hiệu Chức năng
Lệnh Move
Lệnh Move di chuyển nội dung ngõ vào IN đến ngõ ra OUT mà không làm thay đổi giá trị ngõ
vào IN. Tham số:
EN : cho phép ngõ vào ENO : cho phép ngõ ra IN : nguồn giá trị đến OUT1: Nơi chuyển đến
f. Toán tử word logic
Lệnh tốn tử word logic
Tên lệnh Kí hiệu Chức năng
g. Bộ đếm (Counter)
Lệnh Counter được dùng để đếm các sự kiện ở ngồi hay các sự kiện q trình ở trong PLC. Trong nhiều trường hợp, việc kiểm tra một số lượng xác định phải thơng qua tổng các xung. Có thể thực hiện đếm các xung này bằng các bộ đếm. Sử dụng bộ đếm có thể giải quyết được một số vấn đề sau:
• Đếm số lượng.
• So sánh với một giá trị đặt trước ở các trường hợp bằng nhau, nhỏ hơn, lớn hơn.
• Kiểm tra sự khác biệt về số lượng.
Bộ đếm cũng có thể sử dụng để thực hiện các nhiệm vụ như: Cộng các xung của bộ phát xung nhịp và dựa vào đó để gọi các giai đoạn điều khiển liên tiếp nhau. Hoặc các yêu cầu điều khiển theo chu kỳ lặp như điều khiển đèn giao thông.
Giá trị bộ đếm CV được tăng lên 1 khi tín hiệu ngõ vào CY chuyển từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV >= PV. Nếu trạng thái R=Reset được tác động thì bộ đếm CV=0.
Tham số Chức năng Kiểu dữ liệu Mơ tả
CU Input BOOL Tín hiệu vào đếm lên
Q Output BOOL Ngõ ra (Đúng khi CV >= PV) PV (Preset Value) Input SInt, Int,
DInt, USInt, UInt, UDInt
Giá trị đặt
CV (Counter Value)
Output SInt, Int, DInt, USInt, UInt, UDInt
Giá trị đếm được
R Input BOOL Chân reset về 0
Down Counter (CTD)
Giá trị bộ đếm được giảm 1 khi tín hiệu ngõ vào CD chuyển từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV<=0. Nếu trạng thái LOAD được tác động thì CV=PV.
CD Input BOOL Tín hiệu vào đếm xuống Q Output BOOL Ngõ ra (Đúng khi CV <= 0) PV (Preset Value) Input SInt, Int, DInt,
USInt, UInt, UDInt
Giá trị đặt
CV (Counter Value)
Output SInt, Int, DInt, USInt, UInt,
UDInt
Giá trị đếm được
LD Input BOOL Chân điều khiển giá trị PV.
Up-Down Counter CTUD
Giá trị bộ đếm CV được tăng lên 1 khi tín hiệu ngõ vào CY chuyển từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV >= PV. Nếu trạng thái R=Reset được tác động thì bộ đếm CV=0.
Giá trị bộ đếm được giảm 1 khi tín hiệu ngõ vào CD chuyển từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV<=0. Nếu trạng thái LOAD được tác động thì CV=PV.
Tham số Chức năng Kiểu dữ liệu Mô tả
CU,CD Input BOOL Tín hiệu vào đếm lên, đếm
xuống -QU
-QD
Output BOOL -Ngõ ra đếm lên (Đúng khi CV >= PV)
-Ngõ ra đếm xuống (Đúng khi CV <= 0)
PV (Preset Value) Input SInt, Int, DInt, USInt, UInt, UDInt
Giá trị đặt
CV (Counter Value)
Output SInt, Int, DInt, USInt, UInt, UDInt
Giá trị đếm được
LD Input BOOL Điều khiển giá trị PV (QD).
R Input BOOL Chân Reset (QU).
3.4. Giới thiệu về phần mềm Tia Portal V15.1 3.4.1. Khái quát về phần mềm
Để thực hiện viết code cho PLC S7 – 1200 ta cần có phần mềm chuyên dụng là TIA Portal (Totally Integrated Automation Portal).
Phần mềm lập trình mới này giúp người sử dụng phát triển, tích hợp các hệ thống tự động hóa một cách nhanh chóng, do giảm thiểu thời gian trong việc tích hợp, xây dựng ứng dụng từ những phần mềm riêng rẽ. Được thiết kế với giao diện thân thiện người sử dụng, TIA Portal thích hợp cho cả những người mới lẫn
những người nhiều kinh nghiệm trong lập trình tự động hóa. Là phần mềm cơ sở cho các phần mềm dùng để lập trình, cấu hình, tích hợp các thiết bị trong dải sản phẩm. Tích hợp tự động hóa tồn diện (TIA) của Siemens. Ví dụ như phầm mềm mới Simatic Step 7 để lập trình các bộ điều khiển Simatic, Simatic WinCC để cấu hình các màn hình HMI và chạy Scada trên máy tính.
Để thiết kế TIA portal, Siemens đã nghiên cứu rất nhiều các phần mềm ứng dụng điển hình trong tự động hóa qua nhiều năm, nhằm mục đích hiểu rõ nhu cầu của khách hàng trên toàn thế giới. Là phần mềm cơ sở để tích hợp các phần mềm lập trình của Siemens lại với nhau, TIA Portal giúp cho các phần mềm này chia sẻ cùng một cơ sở dữ liệu, tạo nên sự thống nhất trong giao diện và tính tồn vẹn cho ứng dụng. Ví dụ, tất cả các thiết bị và mạng truyền thơng bây giờ đã có thể được cấu hình trên cùng một cửa sổ. Hướng ứng dụng, các khái niệm về thư viện, quản lý dữ liệu, lưu trữ dự án, chẩn đốn lỗi, các tính năng online là những đặc điểm rất có ích cho người sử dụng khi sử dụng chung cơ sở dữ liệu TIA Portal.
Ở đây nhóm sử dụng TIA Portal V15.1 để thực hiện lập trình và thiết kế giao diện giám sát cho PLC S7 – 1200.
Hình 3.10: Biểu tượng TIA Portal V15.1 trên màn hình Desktop
Phần mềm TIA PORTAL, tích hợp lập trình PLC, HMI và WinCC. TIA PORTAL V15.1 là hệ thống kỹ thuật đồng bộ đảm bảo hoạt động liên tục hoàn hảo. Một hệ thống kỹ thuật mới thông minh và trực quan cấu hình phần cứng kỹ thuật và cấu hình mạng, lập trình, chẩn đốn và nhiều hơn nữa. Lợi ích với