Điều này cho thấy nếu trong chơng trình ứng dụng có nhiều lệnh đọc giá trị cổng vào số thì cho dù giá trị logic thực có của cổng vào này có thể đã bị thay đổi trong quá trình thực hiện v
Trang 1Mục lục
Chơng I: Cấu hình cứng của hệ PLC S7-300
1.1 Cấu tạo chung của PLC S7-300
1.2 Các lĩnh vực ứng dụng của PLC S7-300
1.3 Phân loại PLC S7-300 theo cấu trúc
1.3.1 PLC có cấu trúc Onboard
1.3.2 PLC có cấu trúc module (Great PLC)
1.3.2.1 Module nguồn (PS)
1.3.2.2 Module CPU
1.3.2.3 Module tín hiệu vào/ra (SM)
1.3.2.4 Module chức năng (FM)
1.3.2.5 Module truyền thông CP
1.3.2.6 Module kết nối vào/ra phân tán (ET 200M)
1.4 Cấu hình tập trung
1.4.1 Kết nối hệ SIMATIC PLC S7-300
1.4.2 Phơng pháp gán địa chỉ tự động
1.4.3 Trao đổi dữ liệu giữa CPU và Module mở rộng
1.5 Cấu hình vào ra phân tán
1.5.1 Giới thiệu .
1.5.2 Module CPU có cổng DP
1.5.3 Module CPU không có cổng DP
1.6 Mạng MPI (Multi-point-Capable-Interface)
1.6.1 Giới thiệu về mạng MPI
1.6.2 Các bớc khai báo một mạng MPI
Chơng II: kỹ thuât lập trình trên nền SIMATIC S7-300
2.1 Giới thiệu chung về ngôn ngữ lập trình S7-300
2.1.1 Kiểu dữ liệu
2.1.2 Sơ lợc về ngôn ngữ lập trình STL (Statement list)
2.1.3 Các lệnh cơ bản
2.1.4 Các lệnh toán học
2.1.5 Lệnh logic tiếp điểm trên thanh ghi trạng thái
2.2 Bộ thời gian (Timer)
2.3 Bộ đếm (counter)
2.4 Lập trình tuyến tính
2.5 Lập trình có cấu trúc
2.5.1 Cơ sở lý thuyết
2.5.1.1 Khai báo local block cho FC
2.5.1.2 Gọi khối FC và thủ tục truyền tham trị
2.5.1.3 Local block của FB
2.5.1.4 Instance block và thủ tục gọi khối FB
2.5.1.5 Sử dụng các khối OB
2.5.1 5 1 Ngăn xếp I (I - Stack)
2.5.1.5.2 Chơng trình ứng dụng xử lý ngắt
2.5.1.5 3 Chơng trình khởi động (Initialization)
2.5.1.5.4 Xử lý lỗi hệ thống
2.5.1.6 Những hàm chuẩn quản lý ngắt
2.5.1.6.1 Che và bỏ mặt nạ che các tín hiệu ngắt
2.5.1.6 2 Che và bỏ mặt nạ che tín hiệu báo lỗi đồng bộ
Trang 2Ch¬ng III: Giíi thiƯu vµ lµm viƯc víi phÇn mỊm Step7
3.1 Giới thiệu chung về phần mềm
3.3 Soạn Thảo Một Project
3.3.1 Khai báo và mở rộng một
Trang 3CHƯƠNG IV: Bài toán ứng dụng
4.2 Bài toán điều khiển đèn đờng giao thông
4.2.1 Thiết lập bài toán điều khiển
4.2.2 Chọn các cổng vào ra
4.2.3 Cấu trúc chơng trình
4.2.4 Chơng trình điều khiển
Trang 4Dan mục các hình vẽ đợc sử dụng trong đồ án
Hình 1.1: Nguyên lý chung về cấu trúc của một bộ điều khiển logic khả trình (PLC)
Hình 1.8: Ghép nối các trạm qua MPI
Hình 1.9: Soạn thảo dữ liệu truyền thông Global Data Block
Hình 1.10: Ghép nối PLC qua Profibus
Hình 2.1: Thực hiện một chơng trình tuyến tính
Hình 2.2: Thực hiện gọi khối FC10
Hình 2.3: Thực hiện gọi khối FB1 kèm cùng với DB2 và OB1
Hình 2.4: Cất giữ dữ liệu cần thiết cho việc quay về khi xử lý xong ngắt vào
Hình 2.5: Mô tả quá trình khởi động chơng trình điều khiển với khối OB100 của S7-300
Hình 2.6: Các bớc hệ điều hành xử lý tín hiệu báo lỗi đồng bộ
CHƯƠNG I: Cấu hình cứng của hệ PLC s7-300
1.1 Cấu tạo chung của PLC S7-300
Thiết bị điều khiển logic khả trình (Programmable Logic Control) viết tắt là
PLC, là loại thiết bị cho phép thực hiện linh hoạt các thuật toán điều khiển sốthông qua một ngôn ngữ lập trình thay cho việc phải thể hiện thuật toán đó bằngmạch số
Để có thực hiện đợc một chơng trình điều khiển, PLC phải có tính năng nhmột máy tính, nghĩa là phải có một bộ vi xử lý (CPU), một hệ điều hành, bộ nhớ để
lu chơng trình điều khiển, dữ liệu và các cổng vào/ra để giao tiếp đợc với đối tợng
điều khiển và để trao đổi thông tin với môi trờng xung quanh Bên cạnh đó nhằmphục vụ bài toán điều khiển số, PLC còn phải có thêm các khối chức năng đặc biệtkhác nh: Bộ đếm (Counter), bộ thời gian (Timer) và những khối hàm chuyêndụng
CPU
Bộ nhớ ch ơng trình
Bộ đệm vào / ra
Khối vi xử
lý trung tâm+
Hệ điều hành
Timer
Counte r Bít cờ
Cổng vào ra onboard
Cổng vào ra onboard
Cổng ngắt và đếm tốc độ cao
Cổng ngắt và đếm tốc độ cao
Quản lý ghép nối Bus của PLC
Trang 5Hình 1.1 Nguyên lý chung về cấu trúc của một bộ điều khiển logic khả trình
Điều khiển đèn giao thông
Điều khiển các vũ khí trang thiết bị quân sự
Điều khiển các hệ thống viễn thông
CPU của S7-300 có 5 loại, tuỳ theo nhiệm vụ cụ thể mà chọn cho thích hợpCPU312 IFM, CPU313, CPU314, CPU315, CPU315-2DP
1.3 Phân loại PLC theo cấu trúc.
1.3.1 PLC có cấu trúc Onboard.
Thông thờng loại PLC này có sẵn một số cổng vào/ra cố định Một số cũng
đ-ợc tích hợp giao diện truyền thông cho một lọai bus trờng
Trên loại CPU này có tích hợp các chức năng khác
+ Cung cấp nguồn
+ Giám sát hệ thống
+ Soạn thảo chơng trình điều khiển
Ví dụ nh LOGO, trên CPU của nó tích hợp cả chức năng vào/ra cả màn hình giámsát, tích hợp cả các phím lập trình
1.3.2 PLC có cấu trúc module (Great PLC)
Đối với các ứng dụng có quy mô vừa và lớn, ta cần sử dụng các PLC có thiết
kế module bởi độ linh hoạt cao
Thông thờng để tăng tính mềm dẻo của PLC có cấu trúc module, trong ứngdụng thực tế mà ở đó phần lớn các đối tợng điều khiển có số tín hiệu đầu vào, đầu
ra cũng nh chủng loại tín hiệu vào/ra khác nhau mà các bộ điều khiển PLC đợcthiết kế không bị cứng hóa về cấu hình Chúng đợc chia nhỏ thành các module Sốcác module đợc sử dụng nhiều hay ít tùy theo từng bài toán, song tối thiểu bao giờcũng phải có một module chính là module CPU Các module còn lại là nhữngmodule nhận/truyền tín hiệu với đối tợng điều khiển, các module chức năngchuyên dụng nh PID, điều khiển động cơ, chúng đợc gọi chung là module mởrộng Tất cả các module đợc gá trên các thanh ray (Rack)
Trang 66ES7 307-1EA00-OAAO Vào 120/230vAC;Ra 24vDC/5A + PS 307 2A
6ES7 307-1bA00-OAAO Vào 120/230vAC; Ra 24vDC/2A
1.3.2.2 Module CPU
a Tổ chức bộ nhớ CPU
Cách phân chia bộ nhớ cho các vùng nhớ khác nhau bao gồm:
Vùng nhớ chứa các thanh ghi
ơng trình và khối dữ liệu nằm trong RAM sẽ bị xoá, khi chơng trình hay khối dữ liệu đợc đổ (down load), từ thiết bị lập trình (PG, máy tính) vào module CPU, chúng sẽ đợc ghi lên phần RAM cả vùng nhớ Load memory.
* Work memory:
Là vùng nhớ chứa các khối DB đang đợc mở, khối chơng trình (OB,
FC, FB, SFC hoặc SFB) đang đợc CPU thực hiện và phần bộ nhớ cấp phát cho những tham số hình thức để các khối chơng trình này thay đổi tham trị với hệ điều hành và với các khối chơng trình khác (local block) Tại một thời
điểm nhất định vùng Word memory chỉ chứa một khối chơng trình, sau khi khối chơng trình đó đợc thực hiện xong thì hệ điều hành sẽ xoá nó khỏi Word memory và nạp vào đó khối chơng trình kế tiếp đến lợt đợc thực hiện.
* System memory:
Là vùng nhớ chứa các bộ đệm vào/ra số (Q, I), các biến cờ (M), thanh ghi C-Word, PV, T-bit của Timer, thanh ghi C-Word, PV, C-bit của Counter Việc truy cập, sửa đổi dữ liệu những ô nhớ thuộc vùng nhớ này đợc phân chia hoặc bởi hệ điều hành của CPU hoặc do chơng trình ứng dụng.
Trong các vùng nhớ đợc trình bày trên không có vùng nhớ nào đợc dùng làm bộ đệm cho các cổng vào/ra tơng tự.
Bảng sau trình bày chi tiết hơn về ý nghĩa các vùng nhớ:
Trang 70.0127.7 0127 0126 0124
Đầu mỗi vòng quét, hệ điều hành sẽ ghi vào phần nhớ này các giá trị đợc lấy từ cổng vào
số (digitale inputs) vật lý của module mở rộng.
Process-image
Output (Q)
Bộ đệm ra số
Q QB QW QD
0.0127.7 0127 0126 0124
Cuối mỗi vòng quét, hệ điều hành sẽ đọc nội dung của miền nhớ này và chuyển ra cổng ra số (digitale outputs) của các module mở rộng Bit memory (M)
Vùng nhớ cờ M MB
MW MD
0.0255.7 0255 0254 0252
Đợc sử dụng nh một biến cờ cho chơng trình ứng dụng.
Timer (T) T0T255 Miền nhớ lu giữ các giá trị
PV, CV, T-bit của Timer
Đ-ợc truy nhập và sửa đổi bởi
hệ điều hành và chơng trình ứng dụng.
Counter (C) C0C255 Miền nhớ lu giữ các giá trị
PV, CV, C-bit của Counter.
Đợc truy nhập để sửa đổi bởi
hệ điều hành và chơng trình ứng dụng.
Data block (DB)
Khối dữ liệu
share.
DBX DBB DBW DBD
0.065535.7
065535 065534 065532
0.065535.7
065535 065534 065532
Là khối DB nhng đợc mở bằng lệnh OPN DI“OPN ”
0.065535.7
065535 065534 065532
Miền nhớ đợc cấp phát cho các khối OB, FC, FB mỗi khi khối này đợc gọi để thực hiện Miền nhớ này cũng sẽ đợc giải phóng khi thực hiện xong các khối chơng trình đó Peripheral input
Trừ phần bộ nhớ EEPROM thuộc vùng Load memory và một phần RAM tự nuôi đặc biệt (non-volatile) dùng để lu giữ tham số cấu hình trạm PLC nh địa chỉ trạm (MPI address), tên các module mở rộng, tất cả các phần
Trang 8bộ nhớ còn lại ở chế độ mặc định không có khả năng tự nhớ (non-retentive) Khi mất nguồn nuôi hoặc khi thực hiện công việc xoá bộ nhớ (MRES), toàn
bộ nội dung của phần bộ nhớ non-retentive sẽ bị mất Tuy nhiên ta có thể sử dụng phần mềm Step7 để chuyển những khối DB chứa những dữ liệu quan trọng, cũng nh các dữ liệu của Timer, Counter vào phần bộ nhớ RAM tự nuôi khi mất điện.
Bảng sau trình bày những dữ liệu có thể đợc chuyển vào phần bộ nhớ non-volatile của CPU314 nhờ Step7:
Dữ liệu thuộc miền Phần có thể chuyển Mặc định của Step7
Vùng nhớ cờ (M) 0256 (byte) 16 (số các byte)
Các khối DB 0127 1 Có thể quy định từng phần chứ
không cần phải toàn bộ khối DB.
b Xác định địa chỉ cho module mở rộng
Một trạm PLC đợc hiểu là một module CPU ghép nối cùng với các module mở rông khác (module DI, DO, AI, AO, CP, FM) trên những thanh rack (giá đỡ), trong đó việc truy nhập của CPU vào các module mở rộng đợc thực hiện thông qua địa chỉ của chúng Một module CPU có khả năng quản lý
đợc 4 thanh rack với tối đa 8 module mở rộng trên mỗi thanh.
Tuỳ vào vị trí lắp đặt của module mở rộng trên những thanh rack mà các module có những địa chỉ khác nhau.
c Trao đổi dữ liệu giữa CPU và các module mở rộng
Trong trạm PLC luôn có sự trao đổi dữ liệu giữa CPU với các module
mở rộng thông qua bus nội bộ Ngay tại đầu vòng quét, các dữ liệu tại cổng vào của các module số (DI) đã đợc CPU chuyển tới bộ đệm vào số (process image input table - I) Cuối mỗi vòng quét nội dung của bộ đệm ra số (process image output table - Q) lại đợc CPU chuyển tới cổng ra của các module ra 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 (user program) Điều này cho thấy nếu trong chơng trình ứng dụng
có nhiều lệnh đọc giá trị cổng vào số thì cho dù giá trị logic thực có của cổng vào này có thể đã 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à giá trị đó chính là giá trị từ cổng vào có tại thời điểm đầu vòng quét Cũng nh vậy, nếu chơng trình ứng dụng nhiều lần thay đổi giá trị cho một 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 mới thực
sự đợc đa tới cổng ra vật lý của module DO.
Khác hẳn 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 với module mở rộng (AI/AO) Nh vậy mỗi lệnh đọc giá trị từ địa chỉ thuộc vùng PI (peripheral input) sẽ thu đợc một giá trị đúng bằng giá trị thực có ở cổng tại thời điểm thực hiện lệnh Tơng tự khi thực hiện lệnh gửi một giá trị (số nguyên 16 bits) tới địa chỉ của vùng PQ (peripheral output), giá trị đó sẽ đợc gửi ngay tới cổng ra tơng tự của module.
Sở dĩ có sự khác nhau nh vậy là do đặc thù về tổ chức bộ nhớ và phân chia địa chỉ của S7-300 Chỉ có các module vào/ra số mới có bộ đệm còn các module vào/ra tơng tự thì không, chúng chỉ đợc cung cấp địa chỉ để truy nhập (địa chỉ PI và PQ).
Tuy nhiên miền địa chỉ PI và PQ lại đợc cung cấp nhiều hơn là số các cổng vào ra tơng tự có thể có của một trạm, thực chất các cổng vào tơng tự chỉ
Trang 9có thể có là từ địa chỉ PIB256 đến địa chỉ PIB767 nhng miền địa chỉ của PI và
PQ lại là từ 0 đến 65535 Điều này tạo ra khả năng kết nối các cổng vào/ra số với những địa chỉ dôi ra đó trong PI/PQ giúp chơng trình ứng dụng có thể truy nhập trực tiếp các module DI/DO mở rộng để có đợc giá trị tức thời tại cổng mà không cần thông qua bộ đệm I và Q.
Ví dụ: Ta có thể thay lệnh đọc đồng thời 8 cổng vào số thông qua bộ
Module CPU là module trên đó chứa bộ vi xử lý hệ điều hành, bộ nhớ, bộ
đếm, cổng truyền thông… và có thể có một vài cổng vào/ra số gọi là cổng ra và có thể có một vài cổng vào/ra số gọi là cổng raOnboard Trong họ PLC S7-300 có nhiều loại module khác nhau, chúng đợc
đặt tên theo bộ vi xử lý có trong nó Ví dụ nh Module CPU 312, ModuleCPU314
Những module cùng sử dụng một loại bộ vi xử lý, nhng khác nhau về cổngvào/ra onboard cũng nh các khối hàm đặc biệt đợc tích hợp sẵn trong th viện của
hệ điều hành phục vụ việc sử dụng các cổng vào ra onboard đợc phân biệt với nhautrong tên gọi bằng cách thêm cụm chữ cái IFM (Intergrated Function Module) Vídụ: Module CPU312IFM, Module CPU314IFM
Ngoài ra còn có loại module với hai cổng truyền thông, đối với cổng truyềnthông thứ hai chỉ sử dụng vào việc phục vụ nối mạng phân tán Kèm theocổng truyền thông thứ hai này là các phần mềm tiện dụng thích hợp đã đợccài sẵn trong hệ điều hành Các loại module CPU đợc phân biệt với các loạimodule khác bởi cụm từ DP (Distributed Port)
Module CPU có chứa bộ vi xử lí, hệ điều hành, bộ nhớ, các bộ Timer,Counter, cổng truyền thông RS485 và có thể một cổng vào ra số Các cổng vào ra
số trên module CPU gọi là cổng vào ra OnBoard
Trong PLC S7-300 có nhiều loại module CPU khác nhau và chúng đợc phân biệt nhau qua tên gọi bằng cụm chữ cái IFM, DP
Ví dụ: CPU 314-IFM, CPU 315-DP.
Module CPU của S7-300 Bao gồm các loại sau :
- 6ES7 312-5AC81-0AB0
- 6ES7 312-5AC82-0AB0
V1.0 V1.1 V1.2 + Các module này có:
- Vùng nhớ làm việc: 6KB
- Thời gian xử lí 1 khối lệnh: 0.6ms/KAW
- DI/DO trên module CPU: 10/6
- Sử dụng trong nối mạng MPI
Trang 10- Vùng nhớ làm việc: 12KB
- Thời gian xử lí 1 khối lệnh: 0.6ms/KAW
- Sử dụng trong nối mạng MPI
- 6ES7 314-1AE83-0AB0
- 6ES7 314-1AE84-0AB0
V1.0 V1.1 V1.2 + Các module này có:
- Vùng nhớ làm việc: 24KB
- Thời gian xử lí 1 khối lệnh: 0.3ms/KAW
- Sử dụng trong nối mạng MPI
- 6ES7 314-5AE82-0AB0
- 6ES7 314-5AE83-0AB0
V1.0 V1.1 V1.2 + Các module này có:
- Vùng nhớ làm việc: Từ 24KB đến 32KB
- Thời gian xử lí 1 khối lệnh: 0.3ms/KAW
- DI/DO trên module CPU: 20/16
- Truyền thông kiểu MPI
* CPU314C-2DP
Trang 11- Vïng nhí lµm viÖc: 48KB
- Thêi gian xö lÝ 1 khèi lÖnh: 0.3ms/KAW
- Sö dông trong nèi m¹ng MPI
- 6ES7 315-2AF82-0AB0
- 6ES7 315-2AF83-0AB0
V1.0 V1.1 V1.2 + C¸c module nµy cã:
- Vïng nhí lµm viÖc: 48KB
- Thêi gian xö lÝ 1 khèi lÖnh: 0.3ms/KAW
- TruyÒn th«ng kiÓu MPI, Profilbus-DP
* CPU 316
- 6ES7 316-2AG00-0AB0
+ C¸c module nµy cã:
- Vïng nhí lµm viÖc: 128KB
- Thêi gian xö lÝ 1 khèi lÖnh: 0.3ms/KAW
- Sö dông trong nèi m¹ng MPI
* CPU 316-DP
- 6ES7 316-2AG00-0AB0
+ C¸c module nµy cã:
- Vïng nhí lµm viÖc: 128KB
- Thêi gian xö lÝ 1 khèi lÖnh: 0.3ms/KAW
- TruyÒn th«ng kiÓu MPI, Profilbus-DP
* CPU 318-2
- 6ES7 318-2AJ00-0AB0
+ C¸c module nµy cã:
- Vïng nhí lµm viÖc: 256KB
- Thêi gian xö lÝ 1 khèi lÖnh: 0.3ms/KAW
- Sö dông trong nèi m¹ng MPI
1.3.2.3 Module tÝn hiÖu vµo/ra (SM)
Trang 12Module SM (signal module): Module më réng cæng tÝn hiÖu vµo ra
a Module DI (Digital Input)
- Module më réng c¸c cæng vµo sè, sè c¸c cæng vµo cã thÓ lµ 8, 16, 32 tuú tõng lo¹i module Ta cã mét sè lo¹i module sau:
- 6ES7 322-1EH01- 0AB0
§iÖn ¸p vµo cæng DO lµ:10046´120VAC/0.5A
§iÖn ¸p vµo cæng DI/DO lµ: DI8´24+DO8´24V/0.5A
d Module AI (Analog Input)
Trang 13- Module AI (analog input): là loại module mở rộng các cổng vào tơng tự.
Nó là những bộ chuyển đổi tơng tự số 12 bit tức là mỗi tín hiệu tơng tự đợc chuyển thành một tín hiệu số có độ dài 12 bit Số các cổng vào tơng tự có thể là 2, 4 hoặc
8 tuỳ từng loại module Có các loại module AI sau:
- Analog Input module: AI8´JC/4´RTD, 15 bits
e Module AO (Analog output)
Trang 14Analog I/O module AI4/8 bits + 2AO/8 bits, non-isolated, not for configuration with active bus submodules
+ Module điều khiển động cơ bớc
+ Module điều khiển Servo.
+ Module PID.
+ Module điều khiển vòng kín.
Một số loại module FM của S7-300
Closed-loop control module 4 channels (step and pulse) 4AI+8DI+8DO
- Counter Function Modules
Counter Module, 8 channels
- Positioning Function Modules
- Module CP (Communication Module): là module phục vụ truyền thông
trong mạng giữa các PLC với nhau hoặc giữa PLC với máy tính.
Một số loại module CP của S7-300
+ 6GK7 342-2AH01-0XA0
+ 6GK7 342-2AH00-0XA0
Trang 15Basic module for actuator-sensor interface link
- Communications processors for PROFIBUS (S7-300)
+ S7 CP for PROFIBUS with DP protocol
+ S7 CP for PROFIBUS with DP Protocol, FO-port
- Communications processors for point-to-point communication of the S7-300
1.3.2.6 Module kÕt nèi vµo/ra ph©n t¸n (ET 200M)
Bus interface for S7-300 SMs, extended environmental conditions, FM
350 to FM 352, FM 355, CP 340 to CP 342-2, exchange module during operation, publisher capability for lateral communication
+ 6ES7 153-1AA83-0XB0
Bus interface for S7-300 SMs, extended environmental conditions, FM
350 to FM 352, FM 355, CP 340 to CP 342-2, exchange module during operation, publisher capability for lateral communication
+ 6ES7 153-1AA83-0XB0
Bus interface for S7-300 SMs, extended environmental conditions, FM
350 to FM 352, FM 355, CP 340 to CP 342-2, exchange module during operation, publisher capability for lateral communication
+ 6ES7 153-1AA83-0XB0
Bus interface for S7-300 SMs, extended environmental conditions, FM
350 to FM 352, FM 355, CP 340 to CP 342-2, exchange module during operation.
IM 153-2 with fiber-optic cable physics, bus interface module for
S7-300 SMs, FMs (without FM356-4), module exchange in operation Redundant capability with active backplane bus in an H system.
Trang 161.4 Cấu hình tập trung
Trong hệ thống điều khiển tập trung một máy tính duy nhất đợc sử dụng để
điều khiển các quá trình con, các bộ cảm biến và chấp hành đợc nối trực tiếp, điểm
đến với máy tính điều khiển trung tâm qua các cổng vào/ra của nó Mỗi bộ cảmbiến nối với một cổng vào và mỗi thiết bị chấp hành nối với một cổng ra bằng mộtdây nối riêng biệt Điểm đáng chú ý ở đây là sự tập trung toàn bộ trí tuệ vào mộtthiết bị điều khiển duy nhất
Cấu trúc tập trung nh vậy thờng thích hợp cho việc tự động hóa các loại máy móc, các thiết bị vừa và nhỏ bởi sự đơn giản, dễ thực hiện Ngoài ra còn có các u điểm sau:
+ Tiết kiệm dây nối và công đi dây
+ Giảm kích thớc hộp điều khiển
+ Tăng độ linh hoạt hệ thống nhờ sử dụng các thiết bị có giao diện chuẩn
và khả năng ghép nối đơn giản
+ Thiết kế và bảo trì dễ dàng nhờ cấu trúc đơn giản
+ Khả năng chuẩn đoán lỗi tốt hơn
+ Tăng độ tin cậy của hệ thống
Tuy nhiên cấu trúc này bộc những hạn chế sau:
+ Công việc nối dây phức tạp, giá thành cao
+ Việc mở rộng hệ thống gặp nhiều khó khăn
+ Độ tin cậy của hệ thống phụ thuộc vào một thiết bị điều khiển duy nhất
Để nâng cao độ tin cậy của hệ thống, có thể dùng thêm một máy tính
dự phòng giống hệt máy tính chính Tuy nhiên, trong trờng hợp đó giá thành
hệ thống bị đẩy lên rất cao.
Hình 1.2.Cấu hình tập trung
1.4.1 Kết nối hệ SIMATIC PLC S7-300
Một trạm PLC có 4 thanh Rack và trên mỗi thanh Rack có một Module
IM (Interface Module ) là Module ghép nối dùng để liên kết các Module mở rộng lại với nhau tạo thành một khối Với PLC có ghép các Module mở rộng thì địa chỉ đợc xác định cho các Module mở rộng từ 0.0 127.7, mỗi Module
Trang 17đợc gán địa chỉ riêng Ví dụ tại thanh rack 0 có ghép tất cả 10 Module trong
đó gồm một Module nguồn nuôi CPU, một Module ghép nối IM gửi, tại Slot 4
đợc ghép nối Module DI với 32 đầu vào số, địa chỉ của đầu vào này từ I0.0I3.7 Tại Slot 5 có Module DO với 32 đầu ra số với địa chỉ là Q4.0Q4.7.
- Việc ghép nối đợc thực hiện theo từng giá bắt đầu từ giá có địa chỉ 0 Giá có
địa chỉ 0 là giá có module CPU và đợc gọi là giá trung tâm.
- Các module ghép nối trên giá trung tâm có địa chỉ từ 1 cho đến 11.
- Với S7-300 có tối đa là 4 giá.
Slot 1: Module nguồn Slot 2: Module CPU Slot 4: Module DI với 32 đầu vào Slot 5: Module DO với 32 đầu ra
Slot 6: Module DI/DO 8 đầy vào, 8
đầura Slot 7: Module AI với 2 đầu vào
Hình1.3 Cách xác định địa chỉ cho Module mở rộng
Trang 181.4.2 Phơng pháp gán địa chỉ tự động
Một trạm PLC đợc hiểu là gồm một Module CPU ghép nối với các Module mở rộng nh Module DI, DO, AI … Các Module đ Các Module đ ợc gắn trên thanh các rack và đợc liên kết với nhau bởi Module IM (Interace Module) Module ghép nối Việc truy cập của CPU vào các Module mở rộng đợc thực hiện thông qua địa chỉ của chúng Tuỳ thuộc vào việc lắp đặt các Module mở rộng trên thanh rack mà chúng đợc gán các địa chỉ khác nhau.
a Gán địa chỉ cho các Module tơng tự
Địa chỉ đánh theo các khe, mỗi khe gồm 4 byte địa chỉ, tăng từ thấp đến cao Với S7-300 từ rack 0 đến rack 3, rack 0 địa chỉ bắt đầu từ khe 4 trở đi, còn từ rack 1 thì địa chỉ từ khe thứ 2.
Gán địa chỉ cho các Module số
1.4 3 Trao đổi dữ liệu giữa CPU và Module mở rộng
Việc trao đổi giữ liệu giữa CPU và các Module mở rộng đợc thực hiện quabus nội bộ, ở đầu vòng quét dữ liệu tại cổng vào số DI đợc CPU chuyển tới bộ đệmvào số, tại cuối vòng quét tại bộ đệm ra số lại đợc CPU chuyển tới cổng ra DO.Khác với việc vào ra số, việc vào ra tơng tự lại đợc thực hiện trực tiếp với Module
mở rộng (AI/AO), nh vậy mỗi lần đọc giá trị tại vùng địa chỉ PI (Peripheral Input)
sẽ thu đợc một giá trị thực có ở cổng tại thời điểm thực hiện lệnh, khi thực hiệnlệnh gửi địa chỉ đến vùng PQ giá trị đó đợc gửi ngay đến cổng ra của Module
IM nhậ n IM nhậ n IM nhậ n IM Gửi
CPU+nguồn
67.7 32.0
35.7 0.0
71.7 36.0
39.7 4.0
75.7 40.0
43.7 8.0
79.7 44.0
47.7 12.0
83.7 48.0
51.7 16.0
87.7 52.0
55.7 20.0
91.7 56.0
59.7 24.0
95.7 60.0
63.7 28.0
31.7
Slot 4 Slot 11Hình1.5 Quy tắc xác định địa chỉ cho các Module số
Trang 19Sự khác nhau về mặt trao đổi dữ liệu tơng tự và số đó là do đặc thù về
sự tổ chức bộ nhớ và phân chia địa chỉ của S7-300 Chỉ có các địa chỉ vào/ ra
số mới có bộ đệm còn Module vào/ ra tơng tự thì không có mà chỉ đợc cung cấp địa chỉ để truy cập (PI và PQ).
1.5 Cấu hình vào ra phân tán
1.5.1 Giới thiệu
Trong đa số các ứng dụng có quy mô vừa và lớn, phân tán là tính chất
cố hữu của hệ thống Một dây chuyền sản xuất thờng đợc phân chia thành nhiều phân đoạn, có thể đợc phân bố tại nhiều vị trí cách xa nhau, để khắc phục sự phụ thuộc vào một máy tính trung tâm trong cấu trúc tập trung và tăng tính linh hoạt của hệ thống, ta có thể điều khiển mỗi phân đoạn bằng một hoặc một số máy tính cục bộ.
Các máy tính điều khiển cục bộ thờng đợc đặt rải rác tại các phòng
điều khiển phòng điện của từng phân đoạn, phân xởng, ở vị trí không xa với quá trình kỹ thuật Các phân đoạn có liên hệ tơng tác với nhau, vì vậy để
điều khiển quá trình tổng hợp cần có sự điều khiển phối hợp giữa các máy tính điều khiển Trong phần lớn các trờng hợp, các máy tính điều khiển đợc nối mạng với nhau và với một hoặc nhiều máy tính giám sát trung tâm qua bus hệ thống, giải pháp này dẫn đến các hệ thống có cấu trúc điều khiển phân tán hay đợc gọi là các hệ điều khiển phân tán.
Ưu thế của cấu trúc điều khiển phân tán không chỉ dừng lại ở độ linh hoạt cao hơn so với cấu trúc tập trung Hiệu năng cũng nh độ tin cậy của hệ thống của hệ thống đợc nâng cao nhờ sự phân tán chức năng xuống các cấp d-
ới Việc phân tán chức năng xử lý thông tin và phối hợp điều khiển có sự giám sát từ các trạm vận hành trung tâm mở ra các khả năng ứng dụng mới, tích hợp trọn vẹn trong hệ thống nh lập trình cao cấp, điều khiển trình tự, điều khiển theo công thức và ghép nối với cấp điều hành sản xuất.
Trang 20Hình 1.6 Cấu hình vào ra phân tánThiết bị vào/ra phân tán khác với một PLC ở chỗ nó không có bộ xử lýtrung tâm CPU Thay vào đó, nó đợc tích hợp các vi mạch giao diện mạng cũng
nh phần mềm xử lý giao thức Tùy theo cấu trúc của thiết bị vào/ra phân tán làdạng module hay dạng gọn nhẹ mà phần giao diện mạng đợc thực hiện bằng mộtmodule riêng biệt hay không
Hình 1.7 Cách nối mạng Profilbus-DP cho một thiết bị vào/ra phân tán cócấu trúc module
Về nguyên tắc, phơng pháp này không khác so với cách ghép nối các bộPLC
PS Interface DI DO AI AO Module
Cổng DPProfibus-DP
Distributed
I/0
Trang 21Có 2 loại module CPU để ghép nối vào/ ra phân tán:
1.5.2 Module CPU có cổng DP
Với module CPU này đã có sẵn cổng DP để nối với mạng vào/ra phân tán ta chỉ phải nháy đúp phím trái chuột vào biểu tợng của cổng DP để nối với mạng vào/ra phân tán, sau đó ta gắp các ET200 vào mạng Từ các ET vừa gắp ta có các thiết bị vào/ra phân tán
1.5.3 Module CPU không có cổng DP
+ Với module CPU loại này ta cần có thêm một module CP nh hình trên
+ Các bớc khai báo nh của module CPU có cổng DP.
1.6 Mạng MPI (Multi-point-Capable-Interface)
1.6.1 Giới thiệu về mạng MPI.
Mạng MPI là mạng giao diện nhiều điểm phục vụ cho việc nối máy lập trình với các thiết bị ngoại vi khác Trong thiết bị điều khiển logic khả trình(PLC), chỉ tồn tại một đờng nối duy nhất với máy lập trình MPI tạo ra khả năng ghép nối với các module khả trình khác nh FM Giao diện MPI đợc nối bằng các bus ở phía sau nh một bus truyền thông.
Ghép nối: Một vài thiết bị có khả năng ghép nối dữ liệu với CPU
Khả năng: Một máy lập trình có khả năng cùng làm việc song song với một panel điều hành, và nối thêm một PLC nữa Có thể nối đồng thời đồng nhiều điểm trong một CPU Bốn điểm /node có thể nối trong CPU 314.
Hình 1.8 Ghép nối các trạm qua MPI
Đặc điểm của MPI: Sự linh hoạt của mạng MPI đợc thể hiện bằng văn bản trên màn hình, bằng các panel điều hành, và bằng máy lập trình của Siemens, mạng MPI cung cấp các khả năng sau đây:
Lập trình CPU và cổng vào/ra thông minh.
Chức năng điều hành hệ thống và chức năng thông báo
Trao đổi dữ liệu giữa máy lập trình và PLC.
Trao đổi chơng trình giữa CPU và thiết bị lập trình.
Đặc tính: Những đặc tính quan trọng của mạng MPI bao gồm :
Trang 221.6.2 Các bớc khai báo một mạng MPI
a Nhập các S7-Station.
+ Để nhập các S7-Station ta tạo một Project mới và khai báo phần cứng + Sau đó ta vào InsertStationSIMATIC 300 Station hoặc InsertStationSIMATIC 400 Station
b Khai báo địa chỉ cho các trạm
+ Muốn khai báo địa chỉ cho các trạm ta nháy kép phím trái chuột vào tên module CPU trong bảng khai báo phần cứng để vào chế độ đặt lại tham số làm việc, trong đó ta lại chọn tiếp General MPI và sửa lại địa chỉ ở Address
c Compile và soạn thảo trong bảng dữ liệu truyền thông Global Data Block
+ Để vào chế độ soạn thảo dữ liệu truyền thông ta vào:
View Global Data Block
Hình 1.9 Soạn thảo dữ liệu truyền thông Global Data Block
Trang 23d Ghép nối các trạm
Hình 1.10 Ghép nối PLC qua Profibus
e Download
Sau khi đã quy định địa chỉ MPI cho các module CPU ta phải ghi lại địa chỉ
đó lên module CPU Công việc ghi địa chỉ MPI lên module CPU đợc thực hiện cùng với việc ghi tất cả các tham số quy định chế độ làm việc của module bằng cách kích vào biểu tợng Download trên thanh công cụ hoặc chọn PLC Download.
Chơng II: kỹ thuât lập trình TRÊN NềN SIMATIC S7-3002.1 Giới thiệu chung về ngôn ngữ lập trình S7-300
Phần bộ nhớ của CPU dành cho chơng trình ứng dụng có tên gọi là logic block, nh vậy logic block là tên chung để gọi tất cả các khối chơng trình bao gồm những khối chơng trình tổ chức OB (organization block), khối chơng trình FC (Functions), khối hàm FB (Functions block) Trong các loại khối ch-
ơng trình đó thì chỉ có duy nhất khối OB1 đợc thực hiện trực tiếp theo vòng quét Nó đợc hệ điều hành gọi theo chu kỳ lặp với khoảng thời gian không cách đều nhau mà phụ thuộc vào độ dài của chơng trình Các loại khối chơng trình khác không tham gia trực tiếp vào vòng quét.
Nh vậy, phần chơng trình trong khối OB1 có đầy đủ điều kiện của một chơng trình điều khiển thời gian thực và toàn bộ chơng trình ứng dụng có thể chỉ cần đợc viết trong khối OB1 là đủ.
Các khối OB khác không tham gia vào vòng quét mà đợc gọi bằng những tín hiệu báo ngắt S7-300 có nhiều loại tín hiệu báo ngắt nh tín hiệu báo ngắt khi có sự cố nguồn nuôi, tín hiệu báo ngắt khi có sự cố chập mạch ở các module mở rộng, tín hiệu báo ngắt theo chu kỳ thời gian, và mỗi loại tín hiệu báo ngắt nh vậy cũng chỉ có khả năng gọi một loại khối OB nhất định Ví
dụ tín hiệu báo ngắt sự cố nguồn nuôi chỉ gọi khối OB81, tín hiệu báo ngắt truyền thông chỉ gọi khối OB87.
Trang 24Mỗi khi xuất hiện một tín hiệu báo ngắt hệ thống sẽ tạm dừng công việc
đang thực hiện lại, chẳng hạn nh tạm dừng việc thực hiện chơng trình trong khốiOB1 lại, và chuyển sang thực hiện chơng trình xử lý ngắt trong các khối OB tơngứng Ví dụ khi đang thực hiện OB1 mà xuất hiện tín hiệu báo ngắt sự cố truyềnthông, hệ thống sẽ tạm dừng việc thực hiện OB1 lại để gọi và thực hiện chơng trìnhtrong khối OB87 Chỉ sau khi đã thực hiện xong chơng trình trong OB87, hệ thốngmới quay trở về thực hiện tiếp tục phần chơng trình còn lại trong OB1
+ Kiểu Word: gồm 2byte để biễu diễn số nguyên dơng từ 0-65635
8bit =1byte, 1 word =2byte, Double word = 2 word = 4byte
+ Kiểu INT: số nguyên biểu diễn dới dạng từ đơn (gồm 2byte)
0: số dơng
1: số âm
+ Kiểu DINT: số nguyên biểu diễn dới dạng từ kép (gồm 4byte)
+ Kiểu Real (4 byte) để biểu diễn số thực dấu phảy động
+ Phơng pháp biểu diễn số nguyên:
+ Bit logic thờng làm việc với RLO
Tên vùng + địa chỉ byte + số thứ tự bit
+ Word logic làm việc với thanh ghi ACCU
Địa chỉ của toán hạng trong Word logic
Tên vùng + kích thớc ô nhớ + địa chỉ byte
I B, W, D địa chỉ byte đầu tiên
Q B byte W=2B
Trang 25Nếu FC = 1 thì RLO = RLOI0.0 và duy trì FC = 1.
Khi vào đầu một chơng trình thì FC = 0 hoặc chỉ cần tạo một Network mới
RLO: Result of logic oplogic operation
2) Lệnh AN
Cú pháp AN (toán hạng)
- FC = 0 sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO
- FC = 1 nó sẽ thực hiện phép tính giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO
3) Lệnh O
Cú pháp O (toán hạng)
- FC = 0 thì nó sẽ gán giá trị logic của toán hạng vào RLO
- FC = 1 nó sẽ thực hiện phép giữa RLO với toán hạng và ghi lại kết quả vào RLO
4) Lệnh ON
Cú pháp ON (toán hạng)
- FC = 0 thì nó sẽ gán giá trị logic của toán hạng vào RLO
- FC = 1 nó sẽ thực hiện phép giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO.
- 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
- FC = 1 lệnh sẽ thực hiện phép tính và giữa RLO với giá trị nghịch đảo logic của biểu thức trong dấu ngoặc sau nó và ghi lại kết quả vào RLO.
8) Lệnh thực hiện phép tính với giá trị 1 biểu thức (Lệnh này không có toán hạng).
Cú pháp O(
- 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
Trang 26- FC = 1 lệnh sẽ thực hiện phép tính 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.
9) Lệnh thực hiện phép tính với giá trị nghịch đảo của 1 biểu thức
- FC = 0 lệnh ghi giá trị logic của toán hạng vào RLO
- FC = 1 lệnh sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có khác nhau không nếu khác thì ghi 1 vào RLO nếu không khác thì ghi
0 vào RLO.
11) Lệnh thực hiện phép tính exclusive or not
Cú pháp XN (toán hạng)
- FC = 0 lệnh sẽ ghi giá trị nghịch đảo của toán hạng vào RLO
- FC = 1 lệnh sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có giống nhau không nếu giống thì ghi 1 vào RLO nếu không giống thì ghi 0 vào RLO.
12) Lệnh thực hiện phép tính exclusive or với giá trị của một biểu thức (Lệnh này không có toán hạng)
Trang 27cờ có giá trị 1 thì sẽ ghi 1 vào RLO, trong trờng hợp khác thì ghi 0 đồng thời chuyển nội dung RLO vào lại cờ biến.
Vậy RLO có giá trị 1 trong 1 vòng quét khi có sờn lên trong RLO
20) Lệnh phát hiện sờn xuống
cú pháp FN (toán hạng)
Lệnh đợc sử dụng nh một cờ biến để ghi nhận lại giá trị của RLO tại vị trí này trong chơng trình nhng của vòng quét trớc Tại mỗi vòng quét lệnh sẽ kiểm tra nếu biến cờ có giá trị 1 thì sẽ ghi 1 vào RLO, trờng hợp khác thì ghi
0 đồng thời chuyển nội dung RLO vào lại cờ biến Vậy RLO có giá trị 1 trong
1 vòng quét khi có sờn xuống trong RLO.
Trang 28b Lệnh đọc ghi đảo vị trí Byte trong thanh ghi ACCU
ACCU1 Byte cao Byte thấp Byte cao Byte thấp
ACCU2 Byte cao Byte thấp Byte cao Byte thấp
2) Lệnh chuyển nội dung của ACCU tới ô nhớ
Lệnh chuyển 9 bit của từ thấp của ACCU1 vào thanh ghi trạng thái
3) Lệnh chuyển nội dung của ACCU2 vào ACCU1
Cú pháp POP
Lệnh không làm thay đổi nội dung của ACCU2
4) Lệnh chuyển nội dung của ACCU1 vào ACCU2
Cú pháp PUSH
Lệnh không làm thay đổi nội dung của ACCU1
5) Lệnh đảo nội dung của hai thanh ghi ACCU1 và ACCU2
Cú pháp TAK
Lệnh không làm thay đổi nội dung của thanh ghi trạng thái
6) Lệnh đảo nội dung của hai byte của từ thấp trong ACCU1
Nội dung của ACCU2 không bị thay đổi
9) Lệnh đảo giá trị các bit của ACCU1
Cú pháp INVD
Nội dung của ACCU2 không bị thay đổi
e Lệnh logic thực hiện trên thanh ghi ACCU
1) Lệnh thực hiện phép tính giữa các bit trong từ thấp của ACCU1, ACCU2
Cú pháp AW [<dữ liệu hằng >]
- Nếu lệnh không có toán hạng, kết quả phép tính đợc ghi lại vào ACCU1
- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thớc 16bit, kết quả phép tính đợc ghi lại vào ACCU1.
2) Lệnh thực hiện phép tính giữa các bit của hai thanh ghi ACCU1, ACCU2
Cú pháp AD [<dữ liệu hằng >]
Trang 29- Nếu lệnh không có toán hạng kết quả phép tính đợc ghi lại vào ACCU1.
- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thớc 32bit Kết quả phép tính đợc ghi lại vào ACCU1
3) Lệnh thực hiện phép tính giữa các bit trong từ thấp của ACCU1, ACCU2
Cú pháp OW [<dữ liệu hằng >]
- Nếu lệnh không có toán hạng, kết quả đợc ghi lại vào ACCU1
- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thớc 16bit, kết quả phép tính đợc ghi lại vào ACCU1.
4) Lệnh thực hiện phép tính giữa các bit của hai thanh ghi ACCU1, ACCU2
Cú pháp OD [<dữ liệu hằng >]
- Nếu lệnh không có toán hạng, kết quả phép tính đợc ghi lại vào ACCU1.
- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích
th-ớc 32bit, kết quả đợc ghi lại vào ACCU1
5) Lệnh thực hiện phép tính exclusive or 16bit
Cú pháp XOW [<dữ liệu hằng >]
- Nếu lệnh không có toán hạng mà hai bit không cùng giá trị thì kết quả sẽ
là 1, toàn bộ bit kết quả đợc ghi lại vào ACCU1.
- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích
th-ớc 32bit, nếu hai bit không cùng giá trị thì kết quả sẽ là 1 Toàn bộ 16 bit kết quả đợc ghi lại vào ACCU1
6) Lệnh thực hiện phép tính exclusive or 32bit
Cú pháp XOD [<dữ liệu hằng >]
- Nếu lệnh không có toán hạng mà hai bit không cùng giá trị thì bit kết quả
sẽ là 1, toàn bộ 32bit kết quả đợc ghi lại vào ACCU1
- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thớc 32bit Nếu hai bit không cùng giá trị thì kết quả sẽ là 1 Toàn bộ 32bit kết quả
đợc ghi lại vào ACCU1.
f Lệnh tăng giảm nội dung của thang ghi ACCU
1) Lệnh tăng nội dung của thanh ghi ACCU1
Cú pháp INC (toán hạng)
Toán hạng là số nguyên 8 bit, lệnh thực hiện phép cộng giữa byte thấp của
từ thấp trong ACCU1 với toán hạng Kết quả đợc ghi lại vào từ thấp của ACCU1
2) Lệnh giảm nội dung của thanh ghi ACCU1
Cú pháp DEC (toán hạng)
Toán hạng là số nguyên 8 bit, lệnh thực hiện phép trừ của từ thấp trong ACCU1 cho toán hạng, kết quả đợc ghi lại vào byte thấp của từ thấp trong ACCU1.
g Nhóm lệnh dịch chuyển nội dung thanh ghi ACCU
1) Lệnh xoay tròn các bit của ACCU1 theo chiều trái
Cú pháp RLD [<toán hạng>]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
32 Cứ mỗi lần xoay bít cuối cùng bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và vào bit đầu tiên Nếu toán hạng là 0 thì lệnh không thực hiện, nếu toán hạng
là 32 thì nội dung ACCU1 không bị thay đổi và bit CC1 trong thanh ghi có giá trị là bit đầu tiên của ACCU1 Hai bit CC0 và OV trong thanh ghi trạng thái
sẽ bằng không khi toán hạng là một số lớn hơn 0.
- Nếu không có toán hạng, số bit đợc xoay chỉ ở trong byte thấp của từ thấp, cứ mỗi lần xoay bít cuối cùng bị đẩy ra khỏi ACCU1 sẽ đợc ghi đồng
Trang 30thời vào CC1 và vào bit đầu tiên Nếu byte thấp của từ thấp trong ACCU2 bằng 0 lệnh không thực hiện, nếu bằng 32 nội dung của ACCU1 không bị thay
đổi bit CC1 trong thanh ghi có giá trị là bit đầu tiên của ACCU1 Hai bit CC0
và OV trong thanh ghi trạng thái sẽ bằng không khi nội dung của byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0.
2) Lệnh xoay tròn ACCU1 theo chiều trái 1 bit
Cú pháp RLDA
Lệnh không có toán hạng Khi thực hiện lệnh này bít cuối cùng bị đẩy ra khỏi ACCU1 đợc ghi vào CC1 nội dung của CC1 đợc chuyển vào bit đầu tiên 3) Lệnh xoay tròn các bit của ACCU1 theo chiều phải
Cú pháp RRD
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
32 Cứ mỗi lần xoay bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi đồng thời vào CC1 và vào bit 31 Nếu toán hạng là 0 thì lệnh không thực hiện Hai bit CC0
và OV trong thanh ghi trạng thái sẽ bằng không khi toán hạng là một số lớn hơn 0.
- Nếu không có toán hạng, số bit đợc xoay chỉ ở trong byte thấp của từ thấp trong ACCU2 cứ mỗi lần xoay bít đầu tiên bị đẩy ra khỏi ACCU 1 sẽ đợc ghi
đồng thời vào CC1 và vào bit 31, nếu byte thấp của từ thấp trong ACCU2 lớn hơn 0, hai bit CC0 và OV trong thanh ghi trạng thái sẽ đợc ghi 0
4) Lệnh xoay tròn ACCU1 theo chiều phải 1 bit
Cú pháp RRDA
Lệnh không có toán hạng, thực hiện lệnh này bít đầu tiên bị đẩy ra khỏi ACCU1 đợc ghi vào CC1 nội dung của CC1 đợc chuyển vào bit cuối cùng 5) Lệnh dịch trái các bit của từ thấp của ACCU1
Cú pháp SLW [<Toán hạng >]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
16 Cứ mỗi lần dịch bít 15 bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit
đầu ghi 0, nếu toán hạng là 0 thì lệnh không thực hiện, nếu toán hạng là 16, nội dung ACCU1 không bị thay đổi và bit CC1 trong thanh ghi trạng thái có giá trị là bit thứ 0 của ACCU1 Hai bit CC0 và OV trong thanh ghi trạng thái
sẽ bằng không khi toán hạng là một số lớn hơn 0.
- Nếu không có toán hạng, số bit đợc dịch là nội dung của byte thấp trong
từ thấp trong ACCU2 Nội dung của từ cao trong ACCU1 không bị thay đổi
cứ mỗi lần dịch bít 15 bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit đầu
đ-ợc ghi 0, nếu byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
6) Lệnh dịch trái các bit của ACCU1
Cú pháp SLD [<Toán hạng >]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
32 Cứ mỗi lần dịch bít 31 bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit
đầu ghi 0, nếu toán hạng là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
- Nếu không có toán hạng, số bit đợc dịch là nội dung của byte thấp trong
từ thấp trong ACCU2 Cứ mỗi lần dịch bít 31 bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit đầu đợc ghi 0 Nếu byte thấp của từ thấp trong ACCU2 là một
số 0 hai bit CC0 và OV sẽ bằng 0.
7) Lệnh dịch phải các bit của từ thấp của ACCU1
Cú pháp SRW [<Toán hạng >]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
16 Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit
15 ghi 0, nếu toán hạng là một số lớn hơn 0, hai bit CC0 và OV sẽ bằng 0.
- Nếu không có toán hạng, số bit đợc dịch là nội dung của byte thấp trong
từ thấp trong ACCU2 Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit 15 đợc ghi 0 Nếu byte thấp của từ thấp trong ACCU2 bằng
Trang 310 lệnh không thực hiện, nếu byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
8) Lệnh dịch phải các bit của ACCU1
Cú pháp SRD [<Toán hạng >]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
32 Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 vào CC1 và bit 31 ghi 0, nếu toán hạng là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
- Nếu không có toán hạng, số bit đợc dịch là nội dung của byte thấp trong
từ thấp trong ACCU2, cứ mỗi lần dịch bít đầu bị đẩy từ ACCU1 sang CC1 và bit 31đợc ghi 0 Nếu byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
9) Lệnh dịch phải số nguyên 16 bit trong ACCU1
Cú pháp SSI [<toán hạng >]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
16 Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit
15 đợc ghi đúng bằng giá trị cũ của nó Nếu toán hạng là số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
- Nếu không có toán hạng, số bit đợc dịch là nội dung của byte thấp trong
từ thấp trong ACCU2 Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit 15 đợc ghi đúng bằng giá trị cũ của nó, nếu byte thấp của
từ thấp trong ACCU2 là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
10) Lệnh dịch phải số nguyên 32 bit trong ACCU1 có toán hạng
Cú pháp SSD [<toán hạng >]
- Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0
32 Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit cuối đợc ghi đúng bằng giá trị cũ của nó Nếu toán hạng là số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
Nếu không có toán hạng Số bit đợc dịch là nội dung của byte thấp trong từ thấp trong ACCU2, nội dung của từ cao trong ACCU1 không bị thay đổi Cứ mỗi lần dịch bít đầu bị đẩy ra khỏi ACCU1 sẽ đợc ghi vào CC1 và bit 32 đợc ghi đúng bằng giá trị cũ của nó Nếu byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0 hai bit CC0 và OV sẽ bằng 0.
h Lệnh so sánh
Thuộc nhóm lệnh không toán hạng là các lệnh thực hiện không điều kiện, lệnh so sánh đợc thực hiện trong hai thanh ghi ACCU1 và ACCU2 kết quả của phép so sánh đợc ghi trong bit RLO của từ trạng thái STW
Trang 32Có ph¸p Sè nguyªn INT Sè nguyªn DINT Sè thùc R > I D R
2.1.5 LÖnh logic tiÕp ®iÓm trªn thanh ghi tr¹ng th¸i
a LÖnh AND trªn thanh ghi tr¹ng th¸i
1) LÖnh AND nhá h¬n
Có ph¸p A <0
LÖnh tÝnh RLO CC0 CC1, kÕt qu¶ ghi vµo RLO
PhÐp tÝnh sè häc:
+; - ; * ; /
Accu1Accu2
Trang 33Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
2) Lệnh AND lớn hơn
Cú pháp A >0
Lệnh tính RLO CC0 CC1, kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
3) Lệnh AND khác nhau
Cú pháp A < >0
Lệnh tính RLO [(CC0 CC1 ) (CC0 CC1 )], kết quả ghi vào RLO Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
4) Lệnh AND bằng nhau
Cú pháp A = =0
Lệnh tính RLO CC0 CC1, kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
5) Lệnh AND lớn hơn hoặc bằng
Cú pháp A >=0
Lệnh tính RLO CC0, kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
6) Lệnh AND nhỏ hơn hoặc bằng
Cú pháp A <=0
Lệnh tính RLO CC1, kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
b Lệnh OR trên thanh ghi trạng thái
1) Lệnh OR nhỏ hơn
Cú pháp O <0
Lệnh tính RLO (CC0 CC1 ), kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
2) Lệnh OR lớn hơn
Cú pháp O >0
Lệnh tính RLO (CC0 CC1 ), kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
3) Lệnh OR khác nhau
Cú pháp O < >0
Lệnh tính RLO [(CC0 CC1 ) (CC0 CC1 )], kết quả ghi vào RLO Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
4) Lệnh OR bằng nhau
Cú pháp O = =0
Lệnh tính RLO (CC0 CC1 ), kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
5) Lệnh OR lớn hơn hoặc bằng
Cú pháp O >=0
Lệnh tính RLO CC0, kết quả ghi vào RLO
Trang 34Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
6) Lệnh OR nhỏ hơn hoặc bằng
Cú pháp O <=0
Lệnh tính RLO CC1, kết quả ghi vào RLO
Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không rồi thực hiện phép tính giữa RLO với kết quả của phép kiểm tra đó
c Lệnh EXCLUSIVE OR trên thanh ghi trạng thái
1) Lệnh exclusive or nhỏ hơn
Cú pháp X <0
Lệnh đảo nội dung của RLO nếu CC0 CC1 1, lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không nếu kết quả kiểm tra là đúng thì đảo nội dung RLO.
2) Lệnh exclusive or lớn hơn
Cú pháp X >0
Lệnh đảo nội dung của RLO nếu CC0 CC1 1, lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không nếu kết quả kiểm tra là đúng thì đảo nội dung RLO
3) Lệnh exclusive or khác nhau
Cú pháp X < >0
Lệnh đảo nội dung của RLO nếu CC0 CC1 1 hoặc CC0 CC1 1 Lệnh kiểm tra kết quả phép tính vừa thực hiện có nhỏ hơn 0 hay không nếu kết quả kiểm tra là đúng thì đảo nội dung RLO
đảo nội dung RLO
b Lệnh rẽ nhánh theo bit trạng thái
Trang 352.2 Bộ thời gian (Timer)
Bộ thời gian: Là bộ tạo tín hiệu ra phụ thuộc vào thời điểm xuất hiện tín hiệu vào
1) Khai báo sử dụng Timer
+ Khai báo tín hiệu enable (chủ động kích)
Cú pháp A <địa chỉ bit>
FR <tên timer>
+ Khai báo thời gian trễ mong muốn
Cú pháp L <hằng số >
2) Khai báo loại Timer
a) Trễ theo sờn lên không có nhớ
Trang 36Cú pháp LC <tên timer>
2.3 Bộ đếm (counter)
Counter là bộ đếm thực hiện chức năng đếm sờn xung của các tín hiệu
đầu vào
1) khai báo sử dụng
+ Khai báo tín hiệu kích đếm
Kỹ thuật lập trình tuyến tính là phơng pháp lập trình mà toàn bộ
ch-ơng trình ứng dụng sẽ chỉ nằm trong một khối OB1, kỹ thuật này có u điểm là gọn, rất phù hợp với những bài toán điều khiển đơn giản, ít nhiệm vụ.
Do toàn bộ khối chơng trình điều khiển chỉ nằm trong khối OB1 nên khối OB1 sẽ gần nh là đợc thờng trực trong vùng nhớ Word memory, trừ tr- ờng hợp khi hệ thống phải xử lý các tín hiệu báo ngắt Ngoài khối OB1, trong vùng Word memory còn có miền nhớ địa phơng (local block) cấp phát cho OB1 và những khối DB đợc OB1 sử dụng Hình dới mô tả quy trình thực hiện chơng trình điều khiển tuyến tính.
Xoá OB1 và giải phóng local block trong Work memory.
Thực hiện OB1 trong Work memory
System memory
Share DB
Instance DB
Trang 37Hình 2.1 Thực hiện một chơng trình tuyến tính
Local block của OB1
Khi thực hiện khối OB1, hệ điều hành luôn cấp của một Local block có kích thớc mặc định là 20 bytes trong Work memory để OB1 có thể lấy những dữ liệu từ hệ điều hành, những dữ liệu này gồm:
Trang 38Tên hình thức Kiểu Giá trị và ý nghĩa
OB1_EV_CLASS Byte Bits 0-3=1(Coming event) Bits
4-7=1(Event class 1) OB1_SCAN_1 Byte 1=vòng quét đầu, 3=từ vòng quét thứ 2 OB1_PRIORITY Byte Mức u tiên 1(Mức u tiên thứ nhất)
OB1_RESERVED_1 Byte Dự trữ (của hệ điều hành)
OB1_RESERVED_2 Byte Dự trữ (của hệ điều hành)
OB1_PREV_CYCLE Int Thời gian vòng quét trớc (miliseconds) OB1_MIN_ CYCLE Int Thời gian vòng quét ngắn nhất đã có
(miliseconds) OB1_MAX_ CYCLE Int Thời gian vòng quét lớn nhất đã có
(miliseconds) OB1_DATE_TIME Date_And_Time Thời điểm OB1 bắt đầu đợc thực hiện
Mặc dù kích thớc chỉ là 20 bytes mặc định nhng ngời sử dụng có thể mở rộng Local block để sử dụng thêm các biến nhớ cho chơng trình (hình dới), tuy nhiên phải để ý rằng do Local block đợc giải phóng ở cuối mỗi vòng quét
và đợc cấp lại ở vòng quét sau nên các giá trị có trong Local block của vòng quét trớc cũng bị mất khi bắt đầu vòng quét mới Do đó tốt nhất chỉ nên sử dụng Local block cho việc lu giữ biến nháp tạm thời trong tính toán của một vòng quét
Ngời sử dụng
không đợc thay đổicác biến này
Phần ngời sử dụng định nghĩa thêm để sử dụng.
Còn lại cách sử dụng local block cũng không khác gì nh sử dụng vùng biến cờ M (Bit memory) Chẳng hạn, để đọc khoảng thời gian thực hiện vòng quét trớc đã đợc hệ điều hành chuyển vào ô nhớ 2 bytes gồm byte 6 và byte 7 trong local block dới dạng số nguyên 16 bits, ta dùng lệnh.
L LW6 //Đọc nội dung 2 bytes kể từ địa chỉ 6 của local block vào ACCU1
Bên cạnh việc truy nhập theo địa chỉ ô nhớ nh đã làm, ta còn có thể sử dụng tên biến hình thức OB1_PREV_CYCLE đã có của ô nhớ LW6 nh sau:
Trang 392.5.1 Cơ sở lý thuyết
Lập trình có cấu trúc (structure programming) là kỹ thuật cài đặt thuật toán điều khiển bằng cách chia nhỏ thành các khối chơng trình con FC hay FB với mỗi khối thực hiện một nhiệm vụ cụ thể của bài toán điều khiển chung và toàn bộ các khối chơng trình này lại đợc quản lý một cách thống nhất bởi khối OB1 Trong OB1 có các lệnh gọi những khối chơng trình con theo thứ tự phù hợp với bài toán điều khiển đặt ra.
Hoàn toàn tơng tự, một nhiệm vụ điều khiển con có thể còn đợc chia nhỏ thành nhiều nhiệm vụ nhỏ và cụ thể hơn nữa, do đó một khối chơng trình con cũng có thể đợc gọi từ một khối chơng trình con khác Duy có điều cấm kỵ
ta cần phải tránh là không bao giờ một khối chơng trình con lại gọi đến chính
nó Ngoài ra do có sự hạn chế về ngăn xếp của các module CPU nên không đ
-ợc tổ chức chơng trình con gọi lồng nhau quá số lần mà module CPU đ-ợc sử dụng cho phép.
Để đơn giản trong trình bày, khi một khối chơng trình con này gọi một khối chơng trình con khác, ta sẽ ký hiệu khối chứa lệnh gọi là khối mẹ và khối
đợc gọi là khối con Hình dới đây mô tả quy trình thực hiện việc gọi một khối con FC10 từ khối mẹ OB1.
Hình 2.2 Thực hiện gọi khối FC10 Giữa khối mẹ và khối con có sự liên kết thể hiện qua việc trao đổi các giá trị, khi gọi khối con khối mẹ cần cho những sơ kiện thông qua các tham trị
đầu vào để khối con thực hiện nhiệm vụ Sau khi thực hiện xong nhiệm vụ, khối con phải trả lại cho khối mẹ kết quả bằng những tham trị đầu ra, hệ điều hành của CPU tổ chức việc truyền tham trị thông qua local block của từng khối con.
Nh vậy, khi thực hiện lệnh gọi khối con, hệ điều hành sẽ :
1) Chuyển khối con đợc gọi từ vùng Load memory vào vùng Work
memory.
2) Cấp phát cho khối con một phần bộ nhớ trong Work memory để làm local block Cấu trúc local block đợc qui định khi soạn thảo các khối 3) Truyền các tham trị từ khối mẹ cho biến hình thức IN, IN-OUT của local
block.
4) Sau khi khối con thực hiện xong nhiệm vụ và ghi kết quả dới dạng tham trị đầu ra cho biến OUT,IN-OUT của local block , hệ điều hành sẽ chuyển các tham trị này cho khối mẹ và giải phóng khối con cùng local block ra khỏi vùng Work memory.
Chuyển FC10 vào Work memory, cấp phát local block và gán tham trị từ OB1
Trang 402.5.1.1 Khai báo local block cho FC
Local block của khối con đợc chia thành hai phần:
- Phần các biến hình thức để khối con nhận và truyền tham trị với
khối mẹ Biến hình thức trong local block của FC có ba loại cho trong bảng dới:
IN Biến hình thức nhận tham trị từ khối mẹ làm sơ kiện
cho chơng trình trong khối con OUT Biến hình thức truyền tham trị từ khối con về khối mẹ IN- OUT Biến hình thức vừa có khả năng nhận vừa có khả
năng truyền tham trị giữa khối con với khối mẹ.
- Phần chứa các biến tạm thời đợc ký hiệu là TEMP (chữ viết tắt củatemporary) chứa các giá trị tính toán tức thời Do local block sẽ đợc giải phóng khikết thúc chơng trình, giá trị các biến tạm thời này cũng sẽ bị mất theo ngay sau khichơng trình trong khối con đợc thực hiện xong
Việc khai báo local block đồng nghĩa với việc đặt tên biến, định nghĩa loại biến (biến hình thức hay biến tạm thời) và kiểu dữ liệu (nguyên, thực,ký
tự … Các Module đ ) cho từng biến, trong đó tên biến là những dãy ký tự hoặc số và không thuộc nhóm ký tự khoá (đã đợc dùng bởi hệ điều hành).
Chơng trình truy nhập local block thông qua các tên biến dới dạng toán hạng của lệnh theo cấu trúc:
L#<địa chỉ>
Thì đó sẽ là ô nhớ thuộc miền các biến TEMP
Những kiểu dữ liệu hợp lệ cho tất cả các loại biến (kế cả biến hình thức
và biến tạm thời) đợc tổng kết trong bảng sau: