Trong chương trình ứng dụng có nhiều lệnh đọc ngõ vào số thì cho dù giá trị thực có của cổng này đã bị thay đổi trong quá trình thực hiện vòng quét, chương trình sẽ vẫn luôn đọc được cùn
Trang 2Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 33.2.5 Tham số hoá và chuẩn đoán hệ thống 55
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 44.5.2 Hệ thống truyền dữ liệu AS-I 109
5.3.5 Biểu diễn giá trị của quá trình Logging Editor 136
5.4.4 Thiết lập giao diện trên WinCC và thiết lập giao tiếp với S&-300 146
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 5TÀI LIỆU THAM KHẢO
[1] Nguyễn Doãn Phước, tự động hóa với Simatic S7-300, NXB KHKT, 2006 [2] Hoàng Minh Sơn, Mạng truyền thông công nghiệp , NXB KHKT, 2001
[3] Trần Thu Hà, Tự động hoá trong công nghiệp với WinCC, NXB Hồng
Đức, 2007
[4] TT Việt Đức - ĐH Sư phạm Kỹ thuật Tp.HCM, SIMATIC S7-300 Điều
khiển hệ thống
[5] TT Việt_Đức - Trường ĐH Sư phạm Kỹ thuật Tp.HCM, Tài liệu huấn
luyện PROFIBUS - DP&FMS
[6] Siemens, AS-Interface – Introdution and Basic information, 2000
[7] Siemens, S7-300 Programmable Controller Hardware and installation
[8] Internet
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 6CHƯƠNG 1: PLC S7-300
1.1 GIỚI THIỆU VỀ PLC S7-300:
PLC S7-300 là thiết bị điều khiển lo g i c k h ả t r ì n h c ỡ t r u n g b ì n h do hãng
S iemens sản xuất với kích thước nhỏ, gọn
Chúng có kết cấu theo kiểu các Module được sắp xếp trên các thanh rack Trên mỗi rack cho phép đặt được nhiều nhất 8 Module mở rộng (không kể CPU, Module nguồi nuôi) Một CPU S7-300 có thể làm việc trực tiếp với nhiều nhất 4 rack
S7-300 được thiết kế dựa trên tính chất của PLC S7-200 (đã được trình bày trong môn học ĐKLT 1) và bổ sung những tính năng mới, đặc biệt trong điều khiển liên kết cả
hệ thống nhiều PLC, gọi là mạng PLC – sẽ được trình bày trong các chương sau
Cấu hình của một trạm PLC S7-300 như sau:
Hình 1.1: Các khối trên một thanh rack của trạm PLC S7-300
CPU
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 7- Module CPU: chứa bộ vi xử lý, hệ điều hành, bộ nhớ, các bộ định thời gian,
bộ đếm, cổng truyền thông (RS485)… và có thể có vài cổng vào/ra số onboard PLC S7-300 có nhiều loại CPU khác nhau, chúng được đặt tên theo bộ vi xử lý có trong CPU như CPU312, CPU314, CPU315, CPU316, CPU318…
Những Module cùng có chung bộ vi xử lý nhưng khác nhau về cổng vào/ra onboard, khác nhau về các khối hàm đặc biệt có sẵn trong thư viện của hệ điều hành được phân biệt với nhau trong tên gọi bằng cách thêm cụm từ IFM (Intergrated Function Module) Ví dụ Module CPU314 IFM
Ngoài ra còn có các loại Module CPU với hai cổng truyền thông, trong đó cổng truyền thông thứ hai có chức năng chính là phục vụ việc nối mạng phân tán có kèm theo những phần mềm tiện dụng được cài đặt sẵn trong hệ điều hành Các loại CPU này được phân biệt với các CPU khác bằng tên gọi thêm cụm từ DP (Distributted Port) trong tên gọi Ví dụ Module CPU 314C-2DP…
Hình vẽ sau minh họa một số CPU của PLC S7-300:
Hình 1.2: Các Module tích hợp CPU của PLC S7-300
- Module mở rộng: chia làm 5 loại
o PS ( Power Supply): Module nguồn nuôi Có 3 loại 2A, 5A và 10A
o SM (Signal Module): Module mở rộng cổng tín hiệu vào/ra, bao gồm:
o DI (Digital Input): Module mở rộng các cổng vào số Số các cổng vào số
mở rộng có thể là 8, 16, hoặc 32 tuỳ thuộc vào từng loại Module
o DO (Digital Output): Module mở rộng các cổng ra số Số các cổng ra số
mở rộng có thể là 8, 16 hoặc 32 tuỳ thuộc vào từng loại Module
o DI/DO (Digital input/Digital output): Module mở rộng các cổng vào/ra
số Số các cổng vào/ra số có thể là 8 vào/8 ra hoặc 16 vào/16 ra tùy thuộc từng loại Module
o AI (Analog input): Module mở rộng cổng vào tương tự Chúng là bộ chuyển đổi tương tự số 12 bits (AD) Số các cổng vào tương tự có thể là
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 8o AO (Analog output): Module mở rộng các cổng ra tương tự Chúng là những bộ chuyển đổi số tương tự (DA) Số các cổng ra tương tự có thể
là 2, 4 hoặc 8 tùy thuộc từng loại
o AI/AO (Analog input/Analog output): Module mở rộng vào/ra tương tự
Số cổng vào/ra tương tự có thể là 4 vào/2 ra hoặc 4 vào/4 ra tùy từng loại Module
o IM (Interface Module): Module ghép nối Đây là loại Module chuyên dụng có chức năng nối các nhóm Module mở rộng lại với nhau thành một khối và được quản lý chung bởi một CPU Một CPU có thể làm việc trực tiếp nhiều nhất 4 rack, mỗi rack tối đa 8 Module mở rộng và các rack được nối với nhau bằng Module IM
o FM (Function Module): Module có chức năng điều khiển riêng, ví dụ như Module điều khiển động động cơ bước, Module điều khiển động cơ servo, Module PID, điều khiển đếm tốc độ cao…
o CP (Communication Module): Module phục vụ truyền thông trong mạng giữa các bộ PLC với nhau hoặc giữa PLC với máy tính
Hình sau minh họa một số Module mở rộng của PLC S7-300:
a) Module nguồn (PS) b) Module vào số (DI) c) Module ra analog (AO)
d) Module ra số (DO) e) Module chức năng (FM) f) Module truyền thông
Hình 1.3: Module mở rộng của PLC S7-300
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 91.3 CÁC MODE HOẠT ĐỘNG:
- PLC S7-300 có 4 mode hoạt động, gồm:
o RUN_P: Xử lý chương trình, có thể đọc và ghi được từ PG
o RUN: Xử lý chương trình, không thể đọc từ PG
o STOP: Dừng, chương trình không được xử lý
o MRES: Chức năng reset hệ thống (Module Reset Các mode này được chọn dựa vào công tắc chọn ở mặt trước CPU như hình 1.4 Trong đó:
o SF: báo lỗi trong nhóm, trong CPU hay trong các Module
o BATF: lỗi pin, hết pin hoặc không có pin
o DC5V: báo có nguồn 5V
o FRCE: báo ít nhất có một ngỏ vào/ra đang bị cưỡng bức hoạt động
o RUN: nhấp nháy khi CPU khởi động và sáng khi CPU làm việc
o STOP: sáng khi PLC dừng, chớp chậm khi có yêu cấu reset bộ nhớ, chớp nhanh khi đang reset bộ nhớ
o Đầu nối điện 24V: cung cấp nguồn cho CPU
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 101.4 CÁC KIỂU DỮ LIỆU:
Tương tự như PLC S7-200, các kiểu dữ liệu sử dụng trong chương trình của PLC S7-300 gồm có:
- BOOL: có dung lượng 1 bit, giá trị là 0 hoặc 1, sử dụng cho biến có 2 giá trị
- BYTE: dung lượng 8 bit, thường dùng biểu diễn số nguyên dương từ 0 đến 255,
mã BCD của số thập phân 2 chữ số, mã ASCII của ký tự,…
- WORD: dung lượng 2 byte, biểu diễn số nguyên dương từ 0 đến 65535
- INT: dung lượng 2 byte, biểu diễn số nguyên từ -32768 đến 32767
- DINT: dung lượng 4 byte, biểu diễn số nguyên từ -2147483648 đến 2147483647
- REAL: dung lượng 4 byte, biểu diễn số thực có dấu phẩy
Ngoài ra còn có các kiểu dữ liệu khác:
- S5T (S5TIME): biểu diễn khoảng thời gian, tính theo giờ/phút/giây/mgiây
- TOD: biểu diễn khoảng thời gian tính theo giờ/phút/giây
- DATE: biểu diễn thời gian theo năm/tháng/ngày
- CHAR: biểu diễn ký tự (tối đa 4 ký tự)
Trang 11- Load memory:
Là vùng nhớ chứa chương trình ứng dụng do người sử dụng viết và được chứa trong các OB, FC, FB hoặc trong các khối chương trình trong thư viện hệ thống được sử dụng (SFB, SFC) và các khối dữ liệu DB Vùng nhớ này tạo ra từ một phần RAM của CPU và EEPROM Khi thực hiện lệnh xóa bộ nhớ (MRES) thì toàn bộ các khối chương trình trong RAM bị xóa hết Tương tự, khi chương trình được Download từ máy tính vào CPU, chúng sẽ được ghi lên phần RAM của vùng nhớ này Vùng nhớ chương trình được chia làm 3 miền:
o OB (Organization Block): miền chứa chương trình tổ chức
o FC (Function): miền chứa chương trình con được tổ chức thành hàm, có biến hình thức để trao đổi dữ liệu với chương trình đã gọi
o FB (Function Block): Miền chứa chương trình con được tổ chức thành hàm,
có khả năng trao đổi dữ liệu với bất kỳ khối chương trình nào Các dữ liệu được xây dựng trên một khối riêng gọi là DB
Là vùng nhớ chứa các khối dữ liệu DB đang mở, khối chương trình (OB, FB, FC, SFC, SFB) đang được CPU thực hiện Tại một thời điểm nhất định vùng nhớ này chỉ chứa một khối chương trình Sau khi thực hiện khối chương trình này xong thì nó sẽ bị CPU xóa khỏi work memory và nạp vào khối chương trình kế tiếp đến lượt thực hiện
Vùng nhớ này chia thành 2 miền:
o DB (Data Block): Miền chứa các dữ liệu tổ chức thành khối, kích thước và
số lượng do người sử dụng quy định Chương trình có thể truy cập miền này theo bit (DBX), byte (DBB), Word (DBW), Double word (DBD)
o L (Local data block): Miền dữ liệu cục bộ được các khối chương trình OB,
FC, FB sử dụng cho các biến tạm thời và trao đổi các biến hình thức với các khối đã gọi nó Nội dung dữ liệu trong khối này sẽ bị xoá khi kết thúc chương trình tương ứng trong OB, FC, FB Miền này có thể truy cập theo bit (L), byte (LB), word (LW) hoặc duoble word (LD) Tùy theo các khối chương trình khác nhau mà bảng khai báo chứa các biến khác nhau nhằm phục vụ cho yêu cầu của khối đó
Chứa các tham số của hệ điều hành và chương trình ứng dụng, chia làm 7 miền
o Miền I: (Process image input): miền bộ đệm các cổng vào số Trước khi thực hiện chương trình, PLC đọc tất cả dữ liệu đầu vào và cất vào miền nhớ này PLC không đọc trực tiếp cổng vào mà đọc từ bộ đệm I
o Miền Q: (Process image output): miền bộ đệm các cổng ra số Khi kết thúc chương trình, PLC chuyển giá trị logic từ bộ đệm Q đến các cổng ra số Thông thường chương trình không gán trực tiếp giá trị tới cổng ra mà chỉ chuyển chúng vào bộ đệm Q
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 12o Miền M: miền nhớ các bit cờ Chương trình ứng dụng sử dụng vùng nhớ này để lưu các tham số cần thiết và có thể truy nhập theo bit, byte, word, double word
o Miền T: miền nhớ phục vụ bộ thời gian Bao gồm việc lưu trữ giá trị thời gian thời gian định trước, thời gian tức thời và giá trị logic đầu ra của timer
o Miền C: miền phục vụ bộ đếm Bao gồm việc lưu trữ giá trị đặt trước, giá trị tức thời và giá trị logic đầu ra
o Miền PI: miền địa chỉ cổng vào các Module tương tự Các giá trị tương tự tại các cổng vào sẽ được chuyển tự động theo những địa chỉ Chương trình ứng dụng có thể truy cập miền PI theo bit (PI), theo byte (PIB), theo từ (PIW), hoặc theo từ kép (PID)
o Miền PQ: miền địa chỉ cổng ra các Module tương tự Giá trị theo những địa chỉ này sẽ được Module tương tự chuyển tới các cổng ra tương tự Chương trình ứng dụng có thể truy cập miền nhớ PQ theo bit (PQ), theo byte (PQB), theo từ (PQW) hoặc theo từ kép Trong các vùng nhớ trình bày trên không có vùng nhớ làm bộ đệm cho cổng vào/ra tương tự, như vậy mỗi lệnh truy nhập Module tương tự (đọc hoặc gửi giá trị) đều có tác dụng trực tiếp tới cổng vật lý
1.6 CHU KỲ QUÉT CỦA PLC S7-300:
Tương tự PLC S7-200, PLC S7-300 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
- Vòng quét được bắt đầu bằng giai đoạn truyền thông nội bộ và kiểm tra lỗi
- Bước tiếp theo là giai đoạn chuyển dữ liệu từ các cổng vào số tới bộ đệm ảo I
- Sau đó là giai đoạn thực hiện chương trình 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 Kết quả được lưu trong bộ đệm Q
- Sau cùng 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ố
Hình 1.6: Vòng quét chương trình
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 13Bộ đệ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ý mà không thông qua bộ đệm
Thời gian cần thiết để PLC thực hiện được một vòng quét gọi là thời gian vòng quét Thời gian vòng quét không cố định, tức là không phải vòng quét nào cũng được thực hiện trong một khoảng thời gian như nhau Có vòng quét thực hiện lâu, có vòng quét thực hiện nhanh tùy thuộc vào số lệnh trong chương trình được thực hiện, tùy thuộc vào khối lượng dữ liệu được truyền thông trong vòng quét
Việc đọc dữ liệu từ đối tượng để xử lý, tính toán và gửi tín hiệu tới đối tượng cần một khoảng thời gian trễ đúng bằng thời gian vòng quét Thời gian vòng quét quyết định tính thời gian thực của chương trình điều khiển
Việc đọc dữ liệu từ đối tượng để xử lý, tính toán và gửi tín hiệu tới đối tượng cần một khoảng thời gian trễ đúng bằng thời gian vòng quét Thời gian vòng quét quyết định tính thời gian thực của chương trình điều khiển
Nếu sử dụng các khối OB đặc biệt có chế độ ngắt như OB40, OB80, OB35 thì chương trình của khối đó được thực hiện khi xuất hiện tín hiệu báo ngắt cùng loại Thời gian vòng quét càng lớn khi có nhiều tín hiệu ngắt xuất hiện trong vòng quét
1.7 TRAO ĐỔI DỮ LIỆU GIỮA CPU VÀ MODULE MỞ RỘNG:
Sự trao đổi dữ liệu giữa CPU với các Module mở rộng trong một trạm PLC thông qua bus nội bộ
- Ngay đầu vòng quét các dữ liệu tại cổng vào của Module số (DI) được CPU chuyển đến bộ đệm vào I Đến cuối vòng quét, nội dung bộ đệm số ngõ ra được CPU chuyển tới cổng ra của các Module số (DO)
Việc thay đổi nội dung hai bộ đệm này được thực hiện bởi chương trình ứng dụng Trong chương trình ứng dụng có nhiều lệnh đọc ngõ vào số thì cho dù giá trị thực có của cổng này đã bị thay đổi trong quá trình thực hiện vòng quét, chương trình sẽ vẫn luôn đọc được cùng một giá trị từ I và đó là giá trị của cổng vào có tại thời điểm đầu vòng quét Nếu chương trình có nhiều lần thay đổi giá trị cổng ra số thì do nó chỉ thay đổi nội dung bit nhớ tương ứng trong Q nên chỉ có giá trị ở lần thay đổi cuối cùng được đưa tới cổng ra vật lý của Module DO
- Khác với việc đọc/ghi cổng số, việc truy nhập cổng vào/ra tương tự lại được CPU thực hiện trực tiếp trên Module tương tự (AI/AO) Như vậy lệnh đọc giá trị từ địa chỉ thuộc vùng PI sẽ thu được giá trị đúng bằng giá trị thực có ở cổng tại thời điểm thực hiện lệnh, khi thực hiện lệnh gửi một giá trị tới địa chỉ vùng PQ, giá trị
đó được gửi trực tiếp đến cổng ra tương tự của Module
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 14Hình 1.7: Trao đổi dữ liệu giữa CPU và Module mở rộng
1.8 CẤU TRÚC CHƯƠNG TRÌNH PLC S7-300:
Chương trình do người dùng viết cho S7-300 được lưu trong vùng nhớ chương trình,
có 2 dạng với cấu trúc khác nhau:
… Lệnh n
OB1
Vòng quét
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 15PLC S7-300 có 4 loại khối cơ bản:
o Khối OB (Organization Block): là khối tổ chức và quản lý chương trình điều khiển Có nhiều loại OB với các chức năng khác nhau, chúng được phân biệt dựa vào số nguyên gán thêm phía sau OB1, OB35, OB40…
OB1 là khối luôn được CPU quét và thực hiện lặp lại các lệnh theo thứ tự từ trên xuống dưới
o Khối FC (Program Block): là khối chương trình với các chức năng riêng, giống như 1 chương trình con Một chương trình có thể có nhiều khối FC, chúng được phân biệt dựa theo số nguyên gán thêm phía sau, FC1, FC2, …
o Khối FB (Function Block): là 1 khối FC đặc biệt có khả năng trao đổi lượng
dữ liệu lớn với các khối chương trình khác Một chương trình có thể có nhiều khối FB, chúng được phân biệt dựa theo số nguyên gán thêm phía sau, FB1, FB2, …
o Khối DB (Data Block): là khối chứa các dữ liệu cần thiết để thực hiện chương trình Các tham số của khối này do người sử dụng tự đặt Một chương trình có thể có nhiều khối DB, chúng được phân biệt dựa theo số nguyên gán thêm phía sau, DB1, DB2,
Chương trình trong các khối được liên kết với nhau bằng các lệnh gọi khối, chuyển khối
1.9 CÁC KHỐI OB ĐẶC BIỆT:
Nếu OB1 là khối được thực hiện liên tục trong từng vòng quét thì các khối OB khác chỉ được thực hiện khi có tín hiệu báo ngắt tương ứng Chương trình viết cho các khối này chính là các chương trình xử lý tín hiệu ngắt, bao gồm:
- OB10 (Time of date interrupt): chương trình trong khối OB10 sẽ được thực khi giá trị của đồng hồ thời gian thực nằm trong một khoảng thời gian đã quy định OB10 có thể gọi một lần hay nhiều lần cách đều nhau từng phút, từng giờ, từng ngày…
- OB20 (Time delay interrupt): chương trình trong khối OB20 sẽ được thực hiện sau một koảng thời gian trễ đặt trước kể từ khi gọi chương trình hệ thống SFC32
để đặt thời gian trễ
- OB35 (Cyclic interrupt): chương trình trong OB35 sẽ được thực hiện cách đều nhau một khoảng thời gian nhất định Mặc định thời gian này là 100ms, song ta
có thể thay đổi nó trong bảng tham số của CPU nhờ phần mềm STEP7
- OB40 (Hardware interrupt): OB40 sẽ được thực hiện khi có tín hiệu ngắt từ ngoại
vi đưa vào CPU thông qua cổng vào ra số onboard đặc biệt, hoặc thông qua Module SM, CP, FM
- OB80 (Cycle time fault): được thực hiện khi thời gian vòng quét vượt quá thời gian cực đại đã quy định (mặc định là 150ms) hoặc có tín hiệu ngắt gọi OB nào
đó mà OB này chưa kết thúc ở lần gọi trước
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 16- OB81 (Power supply fault): khi có lỗi về nguồn nuôi thì CPU sẽ gọi OB81
- OB82 (Diagnostic interrupt): được gọi khi có phát hiện có sự cố từ các Module vào/ra mở rộng Các Module mở rộng này phải có khả năng tự kiểm tra
- OB85 (Not load fault): được gọi khi chương trình có sử dụng chế độ ngắt nhưng
- chương trình ngắt lại không có trong OB tương ứng
- OB87 (Communication Fault): được gọi khi CPU thấy có lỗi truyền thông
- OB100 (Start up information): được thực hiện một lần khi CPU chuyển trạng thái
từ STOP sang RUN
- OB121 (Synchronous error): được thực hiện khi CPU thấy lỗi logic trong chương trình như sai kiểu dữ liệu hoặc lỗi truy cập các khối DB, FC, FB không có trong CPU
- OB122 (Synchronous error): được thực hiện khi CPU phát hiện có, lỗi truy nhập Module trong chương trình, ví dụ chương trình có lệnh truy nhập Module vào/ra nhưng lại không tìm thấy Module này
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 17CHƯƠNG 2 : TẬP LỆNH CỦA PLC S7-300
1.1 CẤU TRÚC LỆNH VÀ TRẠNG THÁI KẾT QUẢ:
Trong tài liệu ĐKLT 1 đã trình bày về các phương pháp lập trình cho PLC, gồm có ngôn ngữ lập trình dạng STL, LAD và FBD Phần này sẽ trình bày chủ yếu về cấu trúc
và kết quả của lệnh dạng STL
Một lệnh STL của PLC S7-300 gồm có: “Tên lệnh” + “Toán hạng”
Ví dụ: A I0.0 là lệnh nạp giá trị ngõ vào có địa chỉ I0.0
o Số nguyên kiểu INT (2 byte)
o Số nguyên kiểu DINT (4 byte)
o Số thực kiểu REAL
o Dữ liệu về thời gian
o Dữ liệu của bộ đếm, định thời
o Phần số: chỉ địa chỉ của vùng nhớ trong miền đã được xác định
- Thanh ghi trạng thái:
Khi thực hiện lệnh, CPU sẽ ghi lại trạng thái của phép tính trung gian cũng như ghi lại kết quả vào 1 thanh ghi đặc biệt 16 bit, gọi là thanh ghi trạng thái
Tuy nhiên chỉ có 9 bit thấp của thanh ghi này được sử dụng, có cấu trúc như sau:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 18Trong đó:
o FC (Fisrt Check): khi thực hiện các lệnh logic liên tiếp nhau gồm các phép
tính ^ (VÀ), V (HOẶC), ĐẢO thì bit FC=1 Khi kết thúc các lệnh thì FC=0
o OS (Overflow Store bit): ghi giá trị bit bị tràn
o OV (Overflow bit): bit báo kết quả phép tính bị tràn
o CCO và CC1 (Condition Code): hai bit báo trạng thái của kết quả phép tính với số nguyên, số thực, dịch chuyển hoặc phép tính logic trong ACCU
o BR (Binary Result bit): bit trạng thái cho phép liên kết giữa hai ngôn ngữ STL và LAD Cho phép người lập trình viết một khối chương trình FB hoặc
FC bằng STL, nhưng có thể gọi và sử dụng chúng trong chương trình khác viết bằng LAD Để có mối liên kết này, cần phải kết thúc trong chương trình trong FB, FC bằng lệnh ghi giá trị vào BR:
1 nếu chương trình không có lỗi,
0 nếu chương trình có lỗi
Trang 19nhận giá trị 0, chỉ sau khi thực hiện lệnh đầu tiên của network các bit trạng thái mới thay đổi theo phép tính
1.2 NHÓM LỆNH LOGIC:
- Lệnh gán:
Cú pháp = <toán hạng>
Toán hạng là địa chỉ bit I, Q, M, L, D, T, C
Lệnh gán giá trị logic của RLO tới ô nhớ có địa chỉ được chỉ thị trong toán hạng
Lệnh tác động vào thanh ghi trạng thái như sau:
Ký hiệu: (-) Chỉ nội dung bit không bị thay đổi theo lệnh
(x) Chỉ nội dung bit bị thay đổi theo lệnh
Khi giá trị logic của bit tại <address> bằng 1 thì RLO có giá trị 1
Khi giá trị logic của bit tại <address> bằng 0 thì RLO có giá trị bằng 0
- Lệnh gán có điều kiện giá trị 1:
Cú pháp S <toán hạng>
Toán hạng là địa chỉ bit I, Q, L, M, D
Nếu RLO=1 lệnh sẽ ghi giá trị 1 váo ô nhớ có địa chỉ trong toán hạng
Lệnh tác động vào thanh ghi trạng thái như sau:
=
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 20Toán hạng là địa chỉ bit I, Q, M, L, D
Nếu RLO=0, lệnh sẽ ghi giá trị 0 vào ô nhớ có địa chỉ trong toán hạng
Lệnh tác động vào thanh ghi trạng thái như sau:
Trang 21Cú pháp A <toán hạng>
Toán hạng là dữ liệu kiểu BOOL hoặc địa chỉ bit I, Q, M, L, D, T, C
Nếu FC = 0 lệnh sẽ gán giá trị logic của toán hạng vào RLO
Ngược lại khi FC = 1 lệnh sẽ thực hiện phép tính AND RLO với toán hạng
và ghi lại kết quả vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Khi giá trị logic hai địa chỉ <address> bằng 1 thì RLO có giá trị 1
Nếu có ít nhất 1 trong 2 ngõ vào xuống mức 0 thì RLO có giá trị bằng 0
Cú pháp AN <toán hạng>
Toán hạng là dữ liệu kiểu BOOL hoặc địa chỉ bit I, Q, M, L, D, T, C
Nếu FC = 0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO Ngược lại khi FC =1 nó sẽ thực hiện phép tính AND RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 22Toán hạng là dữ liệu kiểu BOOL hoặc địa chỉ bit I, Q, M, L, D, T, C
Nếu FC = 0 lệnh sẽ gán giá trị logic của toán hạng vào RLO Nếu FC = 1 nó thực hiện
phép tính OR RLO với toán hạng và ghi lại kết quả vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
RLO có giá trị 1 khi có ít nhất một trong hai tín hiệu tại hai địa chỉ
<address> ở mức 1
RLO có giá trị 0 khi cả hai tín hiệu ngõ vào đều xuống mức 0
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 23- Lệnh OR NOT:
Cú pháp ON <toán hạng>
Toán hạng là dữ liệu kiểu BOOL hoặc địa chỉ bit I, Q, M, L, D, T, C
Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO Nếu FC=1 nó thực hiện phép tính OR RLO với giá trị nghịch đảo của toán hạng
và ghi lại kết quả vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Nếu FC = 0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO
Nếu FC = 1 nó sẽ thực hiện phép tính AND giữa RLO với giá trị logic của biểu thức trong dấu ngoặc sau nó và ghi lại kết quả vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 24O I0.4
O I0.5 )
Nếu FC = 0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO
Nếu FC = 1 nó sẽ thực hiện phép tính OR giữa RLO với giá trị của biểu thức trong dấu ngoặc sau nó và ghi lại kết quả vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 25Ví dụ:
Thực hiện Q4.0 = I0.2 v (I0.4 v I0.5)
A I0.2 O(
AN I0.4
A I0.5 )
= Q4.0
1.3 NHÓM LỆNH TIẾP ĐIỂM ĐẶC BIỆT:
- Lệnh ghi giá trị logic 1 vào RLO:
Cú pháp SET Lệnh không có toán hạng và có tác dụng ghi 1 vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
o LAD: lệnh không thực hiện
- Lệnh ghi giá trị logic 0 vào RLO:
Cú pháp CLR Lệnh không có toán hạng và có tác dụng ghi 1 vào RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 26- Lệnh đảo giá trị RLO:
Cú pháp NOT Lệnh không có toán hạng và có tác dụng đảo giá trị RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Lệnh tác động váo thanh ghi trạng thái như sau:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 27Khi RLO thay đổi từ 0 lên 1 kết quả của lệnh kiểm tra FB ở trạng thái 1 trong một vòng quét Để hệ thống phát hiện được sự thay đổi cạnh lên thì RLO phải được lưu trữ trong 1 bit nhớ FB hoặc bit dữ liệu <address>
Nếu giá trị RLO trước đó lưu trữ trong <address > có giá trị 0 và RLO ở vòng quét hiện tại có giá trị 1 thì kết quả RLO của lệnh có giá trị 1 trong vòng quét
- Lệnh phát hiện xung cạnh xuống:
Cú pháp FN <Toán hạng>
Toán hạng là địa chỉ I, Q, M, L, D và được sử dụng như 1 biến cờ để ghi lại giá trị của RLO tại vị trí này trong chương trình RLO sẽ có giá trị trong vòng quét khi có sườn xuống trong RLO
Lệnh tác động vào thanh ghi trạng thái như sau:
Khi RLO thay đổi từ 1 xuống 0 kết quả của lệnh kiểm tra FB ở trạng thái trong 1 vòng quét Để hệ thống phát hiện được sự thay đổi cạnh lên thì RLO phải được lưu trữ trong một bit nhớ FB hoặc bit dữ liệu <address>
Nếu giá trị RLO trước đó lưu trữ trong <address > có giá trị 0 và RLO ở vòng quét hiện tại có giá trị 1 thì kết quả RLO của lệnh có giá trị 1 trong vòng quét
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 281.4 NHÓM LỆNH SO SÁNH:
- So sánh số nguyên 16 bit:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 29- So sánh số nguyên 32 bit:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 30- So sánh số thực:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 311.5 NHÓM LỆNH TOÁN HỌC:
- Thực hiện với số nguyên 16 bit:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 32- Thực hiện với số nguyên 32 bit:
- Thực hiện với số thực:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 33Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 341.6 LỆNH CHUYỂN ĐỔI BCD – SỐ NGUYÊN:
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 351.7 LỆNH VỀ TIMER:
1.7.1 Giới thiệu Timer:
Bộ thời gian Timer là bộ tạo thời gian trễ T mong muốn giữa tín hiệu logic ngõ vào và tín hiệu logic ngõ ra
S7 300 có 5 loại timer khác nhau Tất cả 5 loại Timer này cùng bắt đầu tạo thời gian trễ tín hiệu kể từ thời điểm kích của tín hiệu đầu vào, tức là khi tín hiệu đầu vào chuyển trạng thái, được gọi là thời điểm timer được kích
Thời gian trễ T mong muốn được khai báo với timer bằng một word 16 bit bao gồm 2 thành phần:
- Độ phân giải: timer của S7 300 có 4 chế độ phân giải: 10ms, 100ms, 1s và 10s
- Một số nguyên BCD trong khoảng 0 ÷ 999 được gọi là PV (reset value _ giá trị
đặt trước)
Thời gian trễ T mong muốn tính như sau: T = Độ phân giải *PV
Bit 14, 15 không sử dụng
Bit 13, 12 dùng để đặt độ phân giải
Bit 0 đến bit 11 là giá trị PV dưới dạng BCD (0< PV < 999)
Ngay tại thời điểm kích timer, giá trị PV được chuyển vào thanh ghi 16 bit của T_word (gọi là thanh ghi CV, viết tắt current value, giá trị tức thời) Timer sẽ ghi nhớ khoảng thời gian trôi qua kể từ khi được kích bằng cách giảm dần một cách tương ứng nội dung thanh ghi CV Nếu nội dung thanh ghi trở về bằng 0 thì timer
đã đạt được thời gian trễ mong muốn T và điều này sẽ được báo ra ngoài bằng cách đổi trạng thái tín hiệu ngõ ra
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 36CPU 314 có 128 timer được đánh số từ 0 đến 127 Một timer được đặt tên là Tx, trong
đó x là số hiệu của timer (0 ≤ x ≤ 127) Ký hiệu Tx cũng đồng thời là địa chỉ hình thức của thanh ghi CV (T- word) và của đầu ra T-bit của timer đó Tuy chúng có cùng địa chỉ hình thức, song T-word và T-bit vẫn được phân biệt với nhau nhờ kiểu lệnh sử dụng với toán hạng Tx Khi dùng lệnh làm việc với từ, Tx được hiểu là địa chỉ của Tword, ngược lại khi sử dụng lệnh làm việc với tiếp điểm Tx sẽ được hiểu là địa chỉ của T-bit
Một timer đang trong chế độ làm việc (sau khi được kích) có thể được đưa về chế độ chờ khởi động ban đầu, tức là chờ sườn lên của tín hiệu đầu vào Công việc này gọi là reset timer Tín hiệu reset timer được gọi là tín hiệu xoá và khi tín hiệu xoá có giá trị bằng 1 timer sẽ không làm việc Tại thời điểm xuất hiện sườn lên của tín hiệu xoá, T_word và T-bit được xoá về 0, tức là thanh ghi CV được đặt về 0 và tín hiệu đầu ra
có trạng thái 0
1.7.2 Khai báo sử dụng Timer:
Khai báo sử dụng timer gồm có 5 bước:
o Khai báo tín hiệu enable nếu muốn sử dụng tín hiệu chủ động kích
o Khai báo tín hiệu đầu vào
o Khai báo tín hiệu trễ mong muốn
o Khai báo loại timer được sử dụng
o Khai báo tín hiệu xoá timer nếu muốn
- Khai báo tín hiệu enable:
Trang 37- Khai báo thời gian trễ mong muốn:
Cú pháp L <hằng số>
“Hằng số “ trong toán hạng xác định thời gian trễ T đặt trước cho timer Hằng số này có hai dạng:
o Dạng dữ liệu thời gian trực tiếp: S5T#h_m_s_ms
L S5T#00h05m20s00ms có thời gian trễ là 5 phút 20 giây
o Dạng khai báo theo độ phân giải:
L W#16#2127 có thời gian trễ là 127 giây
- Khai báo loại timer:
S7-300 có 5 loại timer được khai báo theo các lệnh:
o SD: Timer đóng mạch chậm
Cú pháp SD <Tên timer>
Thời gian giữ trễ được bắt đầu tính từ khi có sườn lên của tín hiệu đầu vào (hoặc khi có sườn lên của tín hiệu enable đồng thời tín hiệu vào bằng 1), tức là ở ngay thời điểm đó giá trị PV (giá trị đặt trước) được chuyển vào thanh ghi T-word (CV giá trị tức thời) Trong khoảng thời gian trễ T-bit có giá trị 0 Khi hết thời gian trễ, T-bit có giá trị bằng 1 Như vậy T-bit có giá trị 1 khi T-word = 0 hay CV = 0 Khoảng thời gian trễ chính là khoảng thời gian giữa thời điểm xuất hiện sườn lên của tín hiệu đầu vào và sườn lên của T-bit
Khi tín hiệu vào bằng 0, T-bit và T-word cùng nhận giá trị 0
o SS: Timer đóng mạch chậm có nhớ
Cú pháp : SS <tên timer>
Thời gian giữ trễ được bắt đầu tính từ khi có sườn lên của tín hiệu đầu vào (hoặc khi có sườn lên của tín hiệu enable đồng thời tín hiệu vào bằng 1), tức là ở ngay thời điểm đó giá trị PV (giá trị đặt trước) được chuyển vào thanh ghi T-word (CV giá trị tức thời) Trong khoảng thời gian trễ T-bit có giá trị 0 Khi hết thời gian trễ, tức là khi T-word = 0, T-bit có giá trị bằng 1
Khoảng thời gian trễ chính là khoảng thời gian giữa thời điểm xuất hiện sườn lên của tín hiệu đầu vào và sườn lên của T-bit
Với bộ timer trễ theo sườn lên có nhớ, thời gian trễ vẫn được tính cho dù lúc đó tín hiệu đầu vào đã về 0
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 38o SP: Timer Xung
Cú pháp SP <tên timer>
Thời gian giữ trễ được bắt đầu tính từ khi có sườn lên của tín hiệu đầu vào (hoặc khi có sườn lên của tín hiệu enable đồng thời tín hiệu vào bằng 1), tức là ở ngay thời điểm đó giá trị PV (giá trị đặt trước) được chuyển vào thanh ghi T-word (CV giá trị tức thời) Trong khoảng thời gian trễ ,tức là khi T-word có giá trị ≠ 0, T-bit
có giá trị bằng 1 Ngoài thời gian trễ T-bit có giá trị bằng 0
Nếu chưa hết thời gian trễ mà tín hiệu đầu vào về 0 thì giá trị T-bit và t-word cũng về 0
o SE: Timer giữ độ rộng xung
Cú pháp SE <Tên timer>
Thời gian giữ trễ được bắt đầu tính từ khi có sườn lên của tín hiệu đầu vào (hoặc khi có sườn lên của tín hiệu enable đồng thời tín hiệu vào bằng 1), tức là ở ngay thời điểm đó giá trị PV (giá trị đặt trước) được chuyển vào thanh ghi T-word (CV giá trị tức thời) Trong khoảng thời gian trễ, tức là khi T-word có giá trị ≠ 0, T-bit
có giá trị bằng 1 Ngoài thời gian trễ T-bit có giá trị bằng 0
Nếu chưa hết thời gian trễ mà tín hiệu đầu vào về 0 thì thời gian trễ vẫn được tính tiếp tục, tức là T-bit và T-word không về 0 theo tín hiệu đầu vào
Cú pháp SF <Tên timer>
Thời gian giữ trễ được bắt đầu tính từ khi có sườn lên của tín hiệu đầu vào (hoặc khi có sườn lên của tín hiệu enable đồng thời tín hiệu vào bằng 1), tức là ở ngay thời điểm đó giá trị PV (giá trị đặt trước) được chuyển vào thanh ghi T-word (CV giá trị tức thời) Trong khoảng thời gian trễ, tức là khi T-word có giá trị ≠ 0, T-bit
có giá trị bằng 1 Ngoài thời gian trễ T-bit có giá trị bằng 0
- Khai báo tín hiệu xóa (reset)
Cú pháp A <Địa chỉ bit>
R <Tên timer>
Toán hạng thứ nhất “Địa chỉ bit” xác định tín hiệu sẽ được sử dụng làm tín hiệu chủ động xóa cho timer có tên trong toán hạng thứ hai Khi tín hiệu xóa bằng 1, T-word (thanh ghi CV) và T-bit cùng đồng thời được đưa về 0
Nếu tín hiệu xóa bằng 0, timer sẽ chờ được kích lại
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 391.7.3 Khai báo Timer trong LAD và FBD:
- Timer đóng mạch chậm (SD):
Bảng khai báo thông số Timer đóng chậm:
Giản đồ thời gian Timer đóng chậm:
Khởi động: Timer khởi động khi RLO tại ngõ vào S thay đổi từ 0 lên 1 Timer bắt đầu chạy với giá trị thời gian rõ ràng đặt tại ngõ vào TV miễn là trạng thái ngõ vào S =1
Xoá: Khi RLO reset ngõ vào “R” là 1, thì giá trị thời gian hiện hành và độ phân giải bị xoá và ngõ ra Q ở trạng thái Reset
Ban quyen © Truong DH Su pham Ky thuat TP HCM
Trang 40Ngõ ra digital: Giá trị thời gian hiện hành có thể đọc như một số nhị phân tại ngõ ra BI và BCD Giá trị thời gian hiện hành là giá trị ban đầu của TV trừ đi giá trị thời gian đã hoạt động của timer, tính từ khi timer được khởi động
Ngõ ra Binary: Tín hiệu tại ngõ ra “Q” là “1”, sau khi timer đã chạy hết, không
có lỗi và ngõ vào “S” có tín hiệu ở trạng thái “1” Khi timer đang hoạt động, nếu tín hiệu ở ngõ vào “S” thay đổi từ “1” xuống “0”, thì timer ngưng hoạt động Trong trường hợp này ngõ ra Q có trạng thái tín hiệu 0
- Timer đóng mạch chậm có nhớ (SS):
Với các thông số, kiểu dữ liệu và toán hạng khai báo giống như dang LAD và FBD của timer đóng mạch chậm (SD)
Giản đồ thời gian Timer đóng chậm có nhớ:
Khởi động: Timer khởi động khi RLO ở ngõ vào S thay đổ từ 0 đến 1 Timer bắt đầu hoạt động với giá trị thời gian xác định rõ ràng tại ngã vào TV và tiếp tục hoạt động thậm chí nếu tín hiệu ngõ vào S thay đổi thành 0 trong suốt thời gian
đó Nếu tín hiệu tại ngõ vào S thay đổi từ 0 đến 1 trong khi timer đang hoạt động, thì timer sẽ khởi động mới lại
Reset: Khi RLO tại ngõ vào R là 1 thì giá trị thời gian hiện hành và độ phân giải
bị xoá và ngõ ra Q ở trạng thái Reset
Ban quyen © Truong DH Su pham Ky thuat TP HCM