Chu trình làm việc, lập trình và cấu trúc chương trình
Lập trình tuyến tính 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 bao gồm những khối chương trình tổ chức OB, khối chương trình FC, ...
Lập trình tuyến tính
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 bao gồm những khối chương trình tổ chức OB, khối chương trình FC, khối hàm FB.
Trong các loại khối chương trình đó thì chỉ có khối 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 khả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 vào vòng quét.
Với tổ chức chương trình như vậy thì 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 viết trong OB1 là đủ như hình vẽ sau.
Cách tổ chức chương trình với chỉ một khối OB1 duy nhất như vậy được gọi là lập trình tuyến tính.
Khối OB1 được hệ thống gọi xoay vòng liên tục theo vòng quét.
Các khối OB khác không tham gia vào vòng quét được gọi bằng những tín hiệu báo ngắt. S7-300 có nhiều 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, có sự cố chập mạch ở các modul 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 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.
Mỗi khi xuất hiện tín hiệu báo ngắt hệ thống sẽ 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 OB1, và chuyển sang thực hiện chương trình xử lý ngắt tong các khối OB tương ứng. Ví dụ khi đang thực hiện chương trình trong khối OB1 mà xuất hiện ngắt báo sự cố truyền thông, hệ thống sẽ tạm dừng việc thực hiện chương trình trong OB1 lại để gọi chương trình trong khối truyền thông OB87. Chỉ sau khi đã thực hiện xong chương trình trong khối OB87 thì hệ thống mới quay trở về thực hiện tiếp tục phần chương trình còn lại trong OB1.
Lập trình cấu trúc
Với kiểu lập trình có cấu trúc thì khác vì toàn bộ chương trình điều khiển được chia nhỏ thành các khối FC và FB mang một nhiệm vụ cụ thể riêng và được quản lý chung bởi những khối OB. Kiểu lập trình này rất phù hợp cho những bài toán phức tạp, nhiều nhiệm vụ và lại rất thuận lợi cho việc sửa chữa sau này.
- Khối OB (Organization Block): Khối tổ chức và quản lý chương trình điều khiển. Có nhiều loại khối OB với những chức năng khác nhau ,chúng được phân biệt với nhau bằng một số nguyên đi sau nhóm kí tự OB.
Ví dụ: OB10, OB85, ...
- Khối FC (Program Block): Khối chương trình với những chức năng riêng giống như 1 chương trình con hoặc một hàm ( chương trình con có biến hình thức). Một chương trình ứng dụng có thể có nhiều khối FC và các khối FC này được phân biệt với nhau bằng một số nguyên sau nhóm kí tự FC.
Ví dụ: FC1,FC2….
- Khối FB (Function Block): Là loại khối FC đặc biệt có khả năng trao đổi 1 lượng dữ liệu lớn với các khối chương trình khác .Các dữ liệu này phhải được tổ chức thành khối dữ liệu riêng có tên gọi là Data block.Một chương trình ứng dụng có thể có nhiều khối FB và các khối Fb này được phân biệt với nhau bằng một số nguyên sau nhóm kí tự FB. Chẳng hạn như FB1,FB2…
- Khối DB (Data Block): Khối chứa các dữ liệu cần thiết để thực hiện chương trình. Các tham số của khối do người dùng tự đặt .Một chương trình ứng dụng có thể có nhiều khối DB và các khối DB này được phân biệt với nhau bằng một số nguyên sau nhóm kí tự DB. Ví dụ: DB1,DB2,...
Chương trình trong các khối được liên kết với nhau bằng các lệnh gọi khối, chuyển khối. Xem những phần chương trình trong các khối như là các chương trình con thì S7_300 cho phép gọi chương trình con lồng nhau ,tức là chương trình con này gọi một chương trình con khác và từ một chương trình con được gọi lại gọi tới một chương trình con thứ 3,… Số các lệnh gọi lồng nhau phụ thuộc vào từng chủng loại module CPU mà ta đang sử dụng. Ví dụ đối với module CPU 314 thì số lệnh gọi lồng nhau nhiều nhất có thể cho phép là 8.Nếu số lần gọi khối lồng nhau mà vượt quá con số giới hạn cho phép ,PLC sẽ tự chuyển qua chế độ Stop và đặt cờ báo lỗi.
Các khối OB đặc biệt
Trong khi khối OB được thực hiện đều đặn ở từng vòng quét trong giai đoạn thực hiện chương trình thì các khối OB khác chỉ được thực hiện khi xuất hiện tín hiệu báo ngắt
tương ứng ,nói cách khác chương trình viết cho các khối OB này chính là chương trình xử lí tín hiệu ngắt (event).Chúng bao gồm:
- OB10 ( Time of Day Interrupt):Chương trình trong khối sẽ được thực hiện khi giá trị của đồng hồ thời gian thực nằm trong một khoảng thời gian đã được quy định. OB10 có thể gọi một lần ,nhiều lần cách đều nhau từng phút, từng giơ,từng ngày ….Việc quy định khoảng thời gian hay số lần gọi OB10 được thực hiện nhờ chương trình hệ thống SFC28 hoặc trong bảng tham số của module CPU nhờ phần mềm Step 7.
- OB20 ( Time Day Interrupt): Chương trình trong khối sẽ được thực hiện sau một khoảng thời gian trễ đặt trước kể từ khi gọi chương trình hệ thống SFC32 để đặt thời gian trễ.
- OB35 (Cyclic Interrupt): Chương trình trong OB35 sẽ được thực hiện cách đều nhau 1 khoảng thời gian cố định.Mặc định khoảng thời gian này sẽ là 100ms,xong ta có thể thay đổi nó trong bảng tham số của module CPU ,nhờ phần mềm Step7.
- OB40 (Hardware Interrupt) : Chương trình trong OB sẽ được thực hiện khi xuất hiện 1 tín hiệu báo ngắt từ ngoại vi đưa vào module CPU thông qua các cổng vào ra số onboard đặc biệt,hoặc thông qua các module SM,CP,FM OB80 (Cycle Time Fault): Chương trình trong khối OB80 sẽ được thực hiện khi thời gian vòng quét(Scan time) vượt quá khoảng thời gian cực đại đã được quy định hoặc khi có một tín hiệu ngắt gọi một khối OB nào đó mà khối OB này chưa kết thúc ở lần gọi trước.Mặc định thời gian Scan time cực đại là 150ms ,nhưng có thể thay đổi nó thông qua bảng tham số của module CPU nhờ phần mềm Step 7.
- OB81 (Power Supply fault): CPU sẽ gọi chương trình trong khối OB81 khi phát hiện thấy có lỗi về nguồn nuôi.
- OB82( Diagnostic Interrupt):Chương trình trong OB82 được gọi khi CPU phát hiện sự cố từ các Modul vào ra
- OB85( Not Load fault):Chương trình trong OB82 được gọi khi CPU phát hiện thấy chương trình ứng dụng có sử dụng chế độ ngắt nhưng chương trình sử lí tín hiệu ngắt lại không có trong khối OB tương ứng.
- OB87 ( Communication fault):Khối OB87 sẽ được gọi khi CPU phát hiện thấy lỗi trong truyền thông ví dụ như không có tín hiệu trả lời từ các đối tác.
- OB100 ( Start Up Information):Khối OB100 sẽ được thực hiện 1 lần khi CPU chuyển trạng thái Stop sang Run.
- OB121 ( Synchronous error):Khối OB121 sẽ được gọi khi CPU phát hiện thấy lỗi logic trong chương trình như đổi sai kiểu dữ liệu hoặc lỗi truy nhập khối DB ,FC,FB không có trong bộ nhớ CPU.
- OB122 ( Synchronous error):Khối OB122 sẽ được gọi khi CPU phát hiện thấy lỗi truy cập module trong chương trình,ví dụ chương trình có lệnh truy nhập module vào ra mở rộng nhưng lại không tìm thấy module này.
SFB: System Function block
SFC: System function
SDB: System Data Block
Chú ý: FB luôn sử dụng chung với DB
PLC thực hiện chương trình theo một chu trình kín được lặp lại liên tục cho đến khi nào có lệnh dừng. Mỗi vòng lặp hay còn gọi là vòng quét được bắt đầu bằng việc quét các số liệu từ các kênh vào/ra, chuyển các số liệu này đến vùng nhớ đệm đầu vào/ra, tiếp theo là bước thực hiện các lệnh tiếp theo của chương trình như thực hiện các phép tính logic, các phép tính số học để xác định các tác động điều khiển, bước kế tiếp là chuyển dữ liệu từ bộ nhớ đệm đầu ra đến các kênh ra. Khi có một lệnh dừng nào đó xuất hiện thì PLC sẽ dừng các hoạt động xử lý thông tin và truyền tin để kiểm tra khối chương trình tương ứng với lệnh ngắt.
Vòng quét càng ít lệnh dừng thì thực hiện càng nhanh. Nếu chương trình hoạt động bình thường thì chu kỳ của mỗi vòng quét có độ dài như nhau. Tốc độ quét càng cao thì có thể cho phép nhập được nhiều số liệu gần như đồng thời trong thời gian quét, và như vậy khả năng điều khiển được đồng thời nhiều đại lượng là hoàn toàn có thể thực hiện được. Khả năng xử lý tín hiệu trong một chu trình điều khiển không có hiện tượng trễ còn được gọi là điều khiển trong thời gian thực. Các PLC và các PC ngày nay có tốc độ xử lý rất cao nên chất lượng của các hệ thống điều khiển số không kém chất lượng của các hệ thống điều khiển tương tự. Chu kỳ quét của PLC thường vào khoảng từ 1 đến 25 mi li giây. Thời gian quét đầu vào và đầu ra tương đối ngắn so với chu kỳ quét của PLC. Phần lớn thời gian dùng cho việc tính toán các hàm điều khiển.
Thông thường chương trình được nạp vào PLC bởi bộ lập trình cầm tay, thiết bị lập trình chuyên dụng hay máy tính cá nhân. Bộ lập trình cầm tay thường dùng cho các PLC rẻ tiền, đơn giản. Bộ lập trình chuyên dụng được trang bị màn hình và các phím tương ứng với các phần tử của sơ đồ thang để tiện cho việc lập trình. Các thiết bị này cho phép kiểm tra việc thực hiện các lệnh của chương trình trong thời gian thực. Ngày nay ta thưòng sử dụng các phần mềm lập trình cho PLC trên máy tính và sau khi chay thử mô phỏng có thể nạp vào PLC thông qua cổng RS232.
Bộ nạp EPROM cho phép nạp chương trình ghi trên EPROM vào bộ nhớ của PLC. Thiết bị mô phỏng thường gắn với các đi ốt quang điện LED hoặc các côang tắc để thử nghiệm các bước của chương trình logic.
Bộ xử lý đồ hoạ thường dùng để làm giao diện giữa hệ thống mô phỏng và hệ thống hiển thị bằng màn hình.
Các PLC hoạt động liên tục từ lúc được bật lên. Khác với máy tính thông thường, PLC không cần có hệ điều hành, không cần có phần mềm nào ngoài phần mềm của người sử dụng và riêng đối với các máy CNC hoặc rô bốt có thể có thêm phần mềm đồ hoạ dùng cho mô phỏng các quá trình gia công hay các hoạt động của rô bốt . PLC lần lượt đọc các đầu vào, thực hiện tính toán, xác định các tác động điều khiển, truền các tác đông điều khiển đến đầu ra và lặp lại. Kết nối với mô đun vào là các đại lượng vật lý. Các đại lượng vào này có thể là có hai dạng:
- Các đại lượng tương tự (analog): là các đại lượng đến từ các cảm biến tương tự.
- Các đại lượng lô gíc: là các đại lượng thể hiện các trạng thái hay các điều kiện để thực hiện một hàm lô gíc hay chính là các quyết định lô gíc. Các đại lượng này đên từ các công tắc, cảm biến số.
Các mô đun ra kết nối các đầu ra với các động cơ, các cuộn hút, các đèn tín hiệu vv. Tác động của chương trình điều khiển là các thao tác khởi động động cơ, dừng động cơ, bật/tắt đèn, kích hoạt một cơ cấu nào đó vv.
Tất cả các PLC đều thực hiện các chức năng điều khiển về mặt bản chất là giống nhau. Tuy nhiên về cách thể bằng lập trình có thể khác nhau, phụ thuộc vào nhà sản xuất PLC.
Mỗi đầu vào của PLC được nối với một hay nhiều thiết bị mà qua đó dòng điện bị chặn lại hay được cho đi qua. Nếu có điện áp trên đầu vào thì đầu vào đó được được xem như đang ở trạng thái bật. Ngược lại nếu không có điện áp trên đầu vào, có nghĩa là đầu vào đang ở trạng thái tắt.
PLC kiểm tra trạng thái các đầu vào và so sánh với chương trình lô gíc để đóng hay ngắt tín hiệu điện áp trên đầu ra. Các PLC không cần biết đến các các thiết bị có được kết nối vào nó qua mô đun vào hay mô đun ra hay không, mà chúng chỉ đơn giản là kiểm tra các trạng thái của các đầu vào và bật hay tắt các đầu ra tương ứng với lô gíc của chương trình điều khiển.
Mỗi vòng điều khiển hoàn thành được gọi là một chu kỳ quét. Thời gian của một chu kỳ là rất quan trọng, vì nó liên quan đến số lượng các đầy ra có thể điều khiển được của PLC. Thời gian chu kỳ càng nhỏ PLC càng hoath động nhanh, càng có thể điều khiển được nhiều đại lượng vật lý khác nhau. Chính vì vậy PLC trở nên thiết bị điều khiển lý tưởng cho các máy và thiết bị công nghiệp.
Khi chưa có chương trình điều khiển PLC không thể hoạt động được. PLC chỉ hoạt động khi đã có chương trình điều khiển nạp vào bộ nhớ của nó. Chương trình điều khiển có thể nạp vào PLC bằng 3 phương pháp khác nhau:
- Lập trình nhờ các phần mềm lập trình trên máy tính và nạp chương trình lên PLC qua cổng RS232 hay qua cổng kết nối với mạng LAN hay mạng Internet. Máy tính cá nhân là phương tiện lập trình tốt nhất cho PLC, bởi vì chứng ta có thể quan sát được nhiều dòng lệnh trên màn hình, soạn thảo và truy cập vào chương trình dễ dàng. Điều bất tiện là máy tính cá nhân không thích hợp lắm với môi trường công nghiệp và khả năng di chuyển kém.
- Lập trình bằng thiết bị lập trình sách tay: lập trình trực tiếp vào bộ nhớ của PLC. Thiết bị này không dễ sử dụng như máy tính, những lại tiện cho việc mang đi theo người. Lập trình được thực hiện từng dòng lệnh tương ứng với từng bậc của sơ đồ thang.
- Lập trình trên máy tính, nạp lên thẻ nhớ và sau đó nạp từ thẻ nhớ vào PLC qua cổng tiêu chuẩn. Các thẻ nhớ EEPROM là các bộ nhớ ROM có thể xoá và lập trình lại được bằng điện. Ưu điểm của EEPROM là nó có thể thay đổi chương trình của PLC bằng cách cắm vào cổng của PLC.
Khi nạp chương trình điều khiển từ PC đến PLC, để chương trình có thể chạy được, nó phải được nạp vào bộ nhớ của bộ xử lý. Khi nạp chương trình trực tiếp từ PC cần phảI chú ý các thao tác sau:
1. Tất cả các phần tử có liên quan đến PLC phải được ngắt điện.
2. Nối PC với PLC
3. Chuyển công tắc trên bộ xử lý sang chế độ điều khiển từ xa.
4. Bật công tắc nguồn để cấp điện vào PLC và các bộ phận của nó.
5. Thực hiện bước tải chương trình điều khiển từ PC về PLC.
6. Khi việc tải chương trình đã hoàn tất, chuyển sang chế độ gián tiếp, ngừng kết nối với PC (stay offline). Lúc này PLC có thể chạy chương trình mới nạp về.