Lệnh đổi kiểu dữ liệu

Một phần của tài liệu ĐỀ TÀI: Kỹ thuật sinh sản nhân tạo ếch Thái Lan (ranna tigerina tigrina) (Trang 74 - 78)

Trong ngơn ngữ lập trình STL của S7-400 cĩ nhiều dạng dữ liệu khác nhau như:

• Số nguyên 16 bits

• Số nguyên 32 bits

• Số nguyên dạng BCD

• Số thực dấu phẩy động

• Và một số dạng dữ liệu khác

Việc làm với nhiều dạng dữ liệu khác nhau đặt ra cho ta vấn đề chuyển đổi chúng. Ví dụ khi đọc tín hiệu tương tự từ cổng tương tự ta nhận được số liệu dạng nguyên 16 bits mang giá trị tín hiệu tương tự chứ khơng phải bản thân giá trị đĩ, bởi vậy để xử lý tiếp thì cần thiết phải chuyển số nguyên đĩ thành đúng giá trị thật, dấu phẩy động của tín hiệu tương tự ở cổng.

5.1. Chuyển đổi số BCD thành số nguyên và ngược lại

§ Lệnh chuyển đổi BCD thành số nguyên 16 bits Cú pháp: BTI

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi một số BCD cĩ 3 chữ số nằm trong 12 bits đầu của ACCU1 thành số nguyên 16 bits. Kết quả được cất lại vào 16 bits cuối (từ thấp) của ACCU1. Nội dung của từ cao trong ACCU1 và của ACCU2 khơng bị thay đổi. Lệnh cũng khơng làm thay đổi nội dung thanh ghi trạng thái.

31 12 11 8 7 4 3 0

31 16 15 0

Nếu số BCD cần chuyển đổi cĩ cấu trúc sai. Ví dụ như cĩ một chữ số (4 bits nhị phân) khơng nằm trong khoảng từ 0 đến 9, CPU sẽ gọi chương trình ngắt xử lý lỗi OB121 hoặc chuyển sang chế độ STOP (nếu OB121 khơng cĩ chương trình)

ACCU1

ACCU1

0÷9 0÷9 0÷9 BTI

§ Lệnh chuyển đổi BCD thành số nguyên 32 bits Cú pháp: BTD

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi một số BCD cĩ 7 chữ số nằm trong 28 bits đầu của ACCU1 thành số nguyên 32 bits. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi. Lệnh cũng khơng làm thay đổi nội dung thanh ghi trạng thái.

31 27 16 15 0

31 16 15 0

Nếu số BCD cần chuyển đổi cĩ cấu trúc sai. Ví dụ như cĩ một chữ số (4 bits nhị phân) khơng nằm trong khoảng từ 0 đến 9, CPU sẽ gọi chương trình ngắt xử lý lỗi OB121 hoặc chuyển sang chế độ STOP (nếu OB121 khơng cĩ chương trình)

§ Lệnh chuyển đổi số nguyên 16 bits thành BCD Cú pháp: ITB

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi số nguyên 16 bits nằm trong từ thấp của ACCU1 thành số BCD cĩ 3 chữ số. Kết quả được cất lại vào từ thấp của ACCU1. Nội dung của từ cao trong ACCU1 và của ACCU2 khơng bị thay đổi.

31 16 15 0

31 12 11 8 7 4 3 0

Nếu số nguyên 16 bits cần chuyển đổi cĩ giá trị tuyệt đối lớn hơn 999, CPU sẽ thơng báo trong thanh ghi trạng thái dưới dạng kết quả tràn. Lệnh làm thay đổi nội dung thanh ghi trạng thái như sau:

ACCU1 ACCU1 BTD 0÷9 0÷9 0÷9 0÷9 0÷9 0÷9 0÷9 ACCU1 ACCU1 0÷9 0÷9 0÷9 ITB

BR CC1 CC0 OV OS OR STA RLO FC - - - x x - - - -

§ Lệnh chuyển đổi số nguyên 32 bits thành BCD Cú pháp: DTB

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi số nguyên 32 bits nằm trong ACCU1 thành số BCD cĩ 7 chữ số. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi.

31 16 15 0

31 27 16 15 0

Nếu số nguyên 32 bits cần chuyển đổi cĩ giá trị tuyệt đối lớn hơn 999, CPU sẽ thơng báo trong thanh ghi trạng thái dưới dạng kết quả tràn. Lệnh làm thay đổi nội dung thanh ghi trạng thái giống như lệnh ITB

5.2. Chuyển đổi số nguyên 16 bits thành số nguyên 32 bits Cú pháp: ITD

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi một số nguyên 16 bits trong từ thấp của ACCU1 thành số nguyên 32 bits. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi. Lệnh cũng khơng làm thay đổi nội dung thanh ghi trạng thái.

Ví dụ: L -127 ITD T MD0 31 24 23 16 15 8 7 0 xxxxxxxx xxxxxxxx 11111111 00000001 31 24 23 16 15 8 7 0 11111111 11111111 11111111 00000001 ACCU1 ACCU1 DTB 0÷9 0÷9 0÷9 0÷9 0÷9 0÷9 0÷9 ACCU1 MD0

5.3. Chuyển đổi số nguyên 32 bits thành số thực Cú pháp: DTR

Lệnh thực hiện việc chuyển đổi một số nguyên 32 bits trong ACCU1 thành số thực 32 bits dấu phẩy động. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi. Lệnh cũng khơng làm thay đổi nội dung thanh ghi trạng thái.

Ví dụ: Đổi giá trị nguyên 16 bits (-32768 ÷ 32767) đọc được từ cổng tương tự PIW304 thành một số thực cĩ giá trị đúng bằng mức điện áp tín hiệu tại cổng (-10V ÷ 10V) và cất kết quả vào ơ nhớ MD0.

L PIW304 // Số đọc được là số nguyên 16 bits ITD // Chuyển thành số nguyên 32 bits DTR // Chuyển thành số thực

L 3276.7

/R // Tính ra đúng giá trị điện áp tại cổng

T MD0

5.4. Chuyển đổi số thực thành số nguyên 32 bits

§ Lệnh chuyển đổi số thực thành số nguyên gần nhất Cú pháp: RND

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi số thực dấu phẩy động trong ACCU1 thành số nguyên 32 bits cĩ giá trị gần nhất so với số thực đã cho. Nếu số thực đã cho nằm giữa hai số nguyên, ví dụ 10,5 thì CPU sẽ lấy số chẵn. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi. L -12.7

RND

T MD0 // MD0 chứa số nguyên 32 bits –13

Trường hợp số thực nằm ngồi khoảng mà một số nguyên 32 bits cĩ thể biểu diễn được, CPU sẽ thơng báo bằng kết quả tràn ở thanh ghi trạng thái. Lệnh thay đổi nội dung thanh ghi trạng thái như sau:

BR CC1 CC0 OV OS OR STA RLO FC - - - x x - - - -

§ Lệnh chuyển đổi số thực thành số nguyên nhỏ nhất nhưng khơng nhỏ hơn số thực

Cú pháp: RND+

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi số thực dấu phẩy động trong ACCU1 thành số nguyên 32 bits cĩ giá trị nhỏ nhất nhưng khơng nhỏ

hơn số thực đã cho. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi.

Ví dụ:

L -12.7 RND+

T MD0 // MD0 chứa số nguyên 32 bits –12

Trường hợp số thực nằm ngồi khoảng mà một số nguyên 32 bits cĩ thể biểu diễn được, CPU sẽ thơng báo bằng kết quả tràn ở thanh ghi trạng thái. Lệnh thay đổi nội dung thanh ghi trạng thái giống như lệnh RND.

§ Lệnh chuyển đổi số thực thành số nguyên lớn nhất nhưng khơng lớn hơn số thực

Cú pháp: RND-

Lệnh khơng cĩ tốn hạng và thực hiện việc chuyển đổi số thực dấu phẩy động trong ACCU1 thành số nguyên 32 bits cĩ giá trị lớn nhất nhưng khơng lớn hơn số thực đã cho. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi.

Ví dụ:

L -12.7 RND-

T MD0 // MD0 chứa số nguyên 32 bits –13

Trường hợp số thực nằm ngồi khoảng mà một số nguyên 32 bits cĩ thể biểu diễn được, CPU sẽ thơng báo bằng kết quả tràn ở thanh ghi trạng thái. Lệnh thay đổi nội dung thanh ghi trạng thái giống như lệnh RND.

§ Lệnh lấy phần nguyên Cú pháp: TRUNC

Lệnh khơng cĩ tốn hạng và thực hiện việc lấy phần nguyên của số thực dấu phẩy động trong ACCU1. Kết quả được cất lại vào ACCU1. Nội dung của ACCU2 khơng bị thay đổi. Trường hợp số thực nằm ngồi khoảng mà một số nguyên 32 bits cĩ thể biểu diễn được, CPU sẽ thơng báo bằng kết quả tràn ở thanh ghi trạng thái. Lệnh thay đổi nội dung thanh ghi trạng thái giống như lệnh RND.

Một phần của tài liệu ĐỀ TÀI: Kỹ thuật sinh sản nhân tạo ếch Thái Lan (ranna tigerina tigrina) (Trang 74 - 78)

Tải bản đầy đủ (PDF)

(200 trang)