2010-06-21 50 views
5

Đầu vào X1 có thể thay đổi trong khi trình tự lệnh vẫn đang được xử lý không?Câu hỏi về Hướng dẫn PLC

ví dụ:

LD X1 
AND X2 
OUT Y1 

LD X1 // Can X1 loaded here differ from the previous one? 
AND X3 
OUT Y1 

Cảm ơn

+2

Có lẽ bạn nên chỉ định loại PLC bạn đang nói đến ở đây –

Trả lời

1

Một kỹ thuật phổ biến là tạo bản sao của thanh ghi IO vào địa chỉ bộ nhớ nội bộ để người lập trình có thể yên tâm rằng IO của anh không thay đổi giữa các hướng dẫn. Làm cho các đầu vào sao chép vào đầu quá trình quét và sao chép vào các kết quả đầu ra của bạn ở cuối quá trình quét.

0

Vâng, tất nhiên nó có thể - có lẽ của nó thay đổi trong khoảng thời gian này sẽ rất thấp, vì vậy nếu bạn có một lỗi mà bạn đã cho rằng hai giá trị này sẽ không bao giờ khác rồi nó có thể không hiển thị trong một thời gian.

7

Nhiều, nhưng không phải tất cả, PLC hoạt động với hình ảnh IO. Các đầu vào được đọc và lưu trữ trong thanh ghi. Trong quá trình xử lý, bạn đang làm việc với hình ảnh IO. Hình ảnh được cập nhật vào cuối chu kỳ. Bằng cách này, các đầu vào không thể thay đổi trong quá trình xử lý, mà chỉ giữa các chu kỳ.

+0

Lưu ý bổ sung: Một số PLC có thể có các ảnh IO khác nhau (1 cho mỗi tác vụ PLC). Vì vậy, giá trị có thể thay đổi nếu bạn chạy mã này trong một Tác vụ khác không tương ứng với Tác vụ trong đó IO được cập nhật. Bạn nên chắc chắn thực thi mã trong Nhiệm vụ chính xác. –

3

Để thêm vào câu trả lời của Jim C, điều đáng chú ý là nhiều PLC (nhiều nhất?) Sẽ cho phép bạn sử dụng lệnh loại "ngay lập tức" đặc biệt đọc trạng thái của tiếp điểm/tiếp sức/đầu vào/v.v. trực tiếp (trái ngược với việc đọc từ hình ảnh IO) khi quá trình quét CPU đạt đến độ rung cụ thể đó. Điều này thường không cập nhật hình ảnh IO, có nghĩa là tất cả các lần đọc thông thường khác của liên hệ đó cho phần còn lại của quá trình quét CPU sẽ đọc giá trị cũ trong thanh ghi trừ khi chúng cũng thuộc loại "ngay lập tức".

Ví dụ:

//Start of Program 
// Here the CPU scan starts with X1 closed, X2 closed in the IO image  

LD X1 //(X1 = closed) 
AND X2 //(X2 = closed) 
OUT Y1 //(Y1 will be set high/closed) 

// **suddenly X1 opens** 
//(using LDI here to denote "immediate") 

LDI X1 //(open - reading true status) 
AND X2 //(closed) 
OUT Y1 //(Y1 will now open) 

LD X1 //(reading from image = closed, still) 
AND X2 //(closed) 
OUT Y1 //(Y1 will close again) 

END of Program 

Sau đó, trên CPU kế tiếp quét hình ảnh sẽ cập nhật giá trị mới (X1 = mở) và cả ba nấc sẽ trở lại Y1 mở.

Hướng dẫn ngay lập tức thường đi kèm với một hình phạt thời gian, tất nhiên, bởi vì PLC phải mất thêm thời gian để tìm kiếm giá trị hiện tại của số liên lạc thay vì đọc từ hình ảnh. Tuy nhiên, chúng có thể hữu ích tùy thuộc vào cách bạn muốn chương trình của bạn hoạt động. Tuy nhiên, những hướng dẫn này PHẢI được sử dụng một cách rõ ràng và hoạt động bình thường chỉ đơn giản là đọc từ hình ảnh IO, như Jim đã lưu ý.

ps: Tôi đã sử dụng "LDI" ở đây để biểu thị hướng dẫn ngay lập tức, nhưng tất cả PLC sẽ sử dụng cú pháp khác nhau. Ví dụ, Koyos, sử dụng STR (lưu trữ) thay vì LD và STRI (lưu trữ ngay lập tức).