1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài nghiên cứu, tìm hiểu về PLC s7 300

80 961 9

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 80
Dung lượng 5,26 MB
File đính kèm PLC-S7-300.rar (1 MB)

Nội dung

Đ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 1

Mụ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 2

Ch¬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 3

CHƯƠ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 4

Dan 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 5

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

 Đ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 6

6ES7 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 7

0.0127.7 0127 0126 0124

Đầ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.0127.7 0127 0126 0124

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.0255.7 0255 0254 0252

Đợc sử dụng nh một biến cờ cho chơng trình ứng dụng.

Timer (T) T0T255 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) C0C255 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.065535.7

065535 065534 065532

0.065535.7

065535 065534 065532

Là khối DB nhng đợc mở bằng lệnh OPN DI“OPN ”

0.065535.7

065535 065534 065532

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 8

bộ 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 9

có 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 12

Module 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 14

Analog 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 15

Basic 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 16

1.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.0I3.7 Tại Slot 5 có Module DO với 32 đầu ra số với địa chỉ là Q4.0Q4.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 18

1.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 19

Sự 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 20

Hì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 21

Có 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 22

1.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 InsertStationSIMATIC 300 Station hoặc InsertStationSIMATIC 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 23

d 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 24

Mỗ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 25

Nế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ínhvớ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ínhvớ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 27

cờ 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 28

b 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ínhgiữ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ínhgiữ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ínhgiữ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ínhgiữ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 30

thờ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 31

0 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 32

Có 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 RLOCC0  CC1, kÕt qu¶ ghi vµo RLO

PhÐp tÝnh sè häc:

+; - ; * ; /

Accu1Accu2

Trang 33

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 AND lớn hơn

Cú pháp A >0

Lệnh tính RLOCC0  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 RLOCC0  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 34

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 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 35

2.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 36

Cú 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 37

Hì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 38

Tê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 39

2.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 40

2.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:

Ngày đăng: 24/08/2015, 16:36

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w