Thảo luận Chế tạo mini PLC từ vdk ARM

mta_cdt

Super Moderator
Thành viên BQT
#1
Như anh em thấy PLC được ứng dụng hầu hết trên các máy trong công nghiệp, chính vì thế nó yêu cầu cao về độ ổn định. Ngôn ngữ viết thì ko quá phức tạp.
Vậy bà con cô bác gần xa có thể cùng trao đổi xem thiết kế plc từ ARM cần những gì để
- Độ ổn định cao.
- Lập trình nhanh gọn.
- Có thể mở rộng được.
- Giao tiếp tốt với các dòng biến tần, HMI...
Mục đích của mình là muốn tạo ra PLC để sv có thể học với giá thành không quá cao và có thể dùng được luôn vào những máy công nghiệp không quá phức tạp.
 
#2
Chủ đề này hay đấy !
Theo mình hiểu thì :
1 - Việc dùng chip gì chưa quan trọng, quan trọng nhất là theo tiêu chuẩn nào?
VD : PLC theo tiêu chuẩn IEC-61131 (đọc qua thì thấy nhiều cái khá là khó)
* Hoặc theo "kiểu Việt nam", khả năng làm được đến đâu thì tạm chấp nhận theo "chuẩn" đó.
2 - Thứ đến mới là cấu trúc tổng quan cả hệ thống (mỗi hãng đều có cấu trúc riêng khác nhau, như modul, giao tiếp nội bộ, tốc độ ..v.v để có thể đạt được cái "chuẩn" nêu trên).
3 - Tiếp theo mới là lựa chọn các phương tiện phù hợp để đáp ứng được cấu trúc đó.
4 - Phần mềm giao tiếp, lập trình v.v. rồi sau cùng mới đến Chip gì?
5 - Thiết kế, thử nghiệm v.v. sửa .. thử nghiệm ... sửa .. (bao lâu tùy thích :) )

Vì thế, ở điều kiện VN và mục tiêu cho SV thì:
Nên đặt ra các yêu cầu cụ thể trước (có giới hạn), sau đó mới là thiết kế cấu trúc, mô hình phần mềm (mục này gần như một hệ điều hành - hoặc ít nhất là một trình biên dịch), phần mềm PC (cho người dùng), giao tiếp cũng nên giới hạn một số loại INV tiêu biểu v.v.

VD ban đầu, có thể nên thử xây dựng một cái mini như LOGO của Siemens này !
http://w3.siemens.com/mcms/programmable-logic-controller/en/logic-module-logo/pages/default.aspx

Hình minh họa:

Simatic-LOGO-12-24RC-6ED1052-1MD00-0BA6-PLC-Programmable-Logic-Module-Controller-100-New-In-Box.jpg


Có gì chưa đúng, mọi người cho ý kiến tiếp nhé !
 

HỒ_ĐIỆP

Học sinh phổ thông
#4
vấn đề này mình quan tâm từ lâu nhưng vẫn vấp nhiều về vấn đề lập trình hay cụ thể là lập trình C cho vi điều khiển, nếu 1 hệ thống đơn giản thì lập trình cũng đơn giản và có thể thực hiện dễ dàng , nhưng nếu 1 hệ thống phức tạp ( nhiều cảm biến , cơ cấu chấp hành cũng như quá trình dài có nhiều nhánh và có nhiều chỗ yêu cầu đồng bộ ) thì lập trình rất khó khăn.

nay tớ xin đưa ra 1 hướng để thảo luận đó là ,chúng ta nên tạo ra kiểu dữ liệu thế nào cho phù hợp với việc lập trình cho vi điều khiển chạy các quá trình sản xuất phức tạp ?
 

mta_cdt

Super Moderator
Thành viên BQT
#5
vấn đề này mình quan tâm từ lâu nhưng vẫn vấp nhiều về vấn đề lập trình hay cụ thể là lập trình C cho vi điều khiển, nếu 1 hệ thống đơn giản thì lập trình cũng đơn giản và có thể thực hiện dễ dàng , nhưng nếu 1 hệ thống phức tạp ( nhiều cảm biến , cơ cấu chấp hành cũng như quá trình dài có nhiều nhánh và có nhiều chỗ yêu cầu đồng bộ ) thì lập trình rất khó khăn.

nay tớ xin đưa ra 1 hướng để thảo luận đó là ,chúng ta nên tạo ra kiểu dữ liệu thế nào cho phù hợp với việc lập trình cho vi điều khiển chạy các quá trình sản xuất phức tạp ?
Hiểu nó thì không phải là quá khó, cái quan trọng nhất là ổn định bác ạ. Em đã thử dùng vdk điều khiển contactor bình thường thì ko sao nhưng khi contactor tiếp xúc không tốt bị nhiễu và treo luôn trong khi PLC vẫn ok.
 
#6
Hiểu nó thì không phải là quá khó, cái quan trọng nhất là ổn định bác ạ. Em đã thử dùng vdk điều khiển contactor bình thường thì ko sao nhưng khi contactor tiếp xúc không tốt bị nhiễu và treo luôn trong khi PLC vẫn ok.
Vấn đề nhiễu là vấn đề muôn thưở rồi :)
Nguồn gây nhiễu rất nhiều, phải xác định được do đâu (hoặc tốt nhất là bảo vệ "tất tần tật").
Đôi khi, do cả chương trình nữa, cái này rất khó xác định chính xác 100%, chỉ có thể thử nghiệm thực tế (các hãng SX cũng vậy thôi, từ thiết kế đến sản phẩm thương mại phải qua rất rất nhiều khâu).

Mình thống kê sơ sơ có các nguyên nhân có thể gây nhiễu như hình sau (các đường màu đỏ):

nhiễu.PNG
 
#7
vấn đề này mình quan tâm từ lâu nhưng vẫn vấp nhiều về vấn đề lập trình hay cụ thể là lập trình C cho vi điều khiển, nếu 1 hệ thống đơn giản thì lập trình cũng đơn giản và có thể thực hiện dễ dàng , nhưng nếu 1 hệ thống phức tạp ( nhiều cảm biến , cơ cấu chấp hành cũng như quá trình dài có nhiều nhánh và có nhiều chỗ yêu cầu đồng bộ ) thì lập trình rất khó khăn.

nay tớ xin đưa ra 1 hướng để thảo luận đó là ,chúng ta nên tạo ra kiểu dữ liệu thế nào cho phù hợp với việc lập trình cho vi điều khiển chạy các quá trình sản xuất phức tạp ?
Mình thấy như VD trên, tác giả cũng dùng dữ liệu bit (cho I/O), dữ liệu 8bit (cho timer/counter).
Nói chung là Kiểu dữ liệu thì cũng như nhau thôi.

Giả sử là mạch phức tạp, người ta thường làm cho nó đơn giản hóa đi (ẩn đi những phần phức tạp)
VD như dùng macro trong cách làm của bài trên:

macro and.PNG


Chương trình sẽ gần giống kiểu STL

program STL.PNG


Hoặc Ladder (cho những ai đã quen kiểu đó)

program LD.PNG


hoặc logic

program Logic.PNG
 

HỒ_ĐIỆP

Học sinh phổ thông
#8
Hiểu nó thì không phải là quá khó, cái quan trọng nhất là ổn định bác ạ. Em đã thử dùng vdk điều khiển contactor bình thường thì ko sao nhưng khi contactor tiếp xúc không tốt bị nhiễu và treo luôn trong khi PLC vẫn ok.
à về vấn đề kiểu dữ liệu đó là như thế này.

khi viết 1 chương trình , lâu lâu ta viết mà nó chạy không đúng ý mình , thế nên ta sửa nó . vấn đề ở chỗ ta viết code như thế nào cho dễ sửa , dễ thay đổi , dễ kiểm soát đó mới là cái mình hướng tới , và để làm được điều đó thì cần 1 kiểu cấu trúc dữ liệu phù hợp .

hồi mấy năm trước có code 1 quá trình gồm 4 pitton , 6 cảm biến , 1 tay gắp , bằng hitech c trên con 16f887. code xong thấy chạy đúng , thế mà khi thay đổi 1 khâu trong quá trình thì gần như viết lại code.
 

sos82

Học sinh trung cấp
#9
à về vấn đề kiểu dữ liệu đó là như thế này.

khi viết 1 chương trình , lâu lâu ta viết mà nó chạy không đúng ý mình , thế nên ta sửa nó . vấn đề ở chỗ ta viết code như thế nào cho dễ sửa , dễ thay đổi , dễ kiểm soát đó mới là cái mình hướng tới , và để làm được điều đó thì cần 1 kiểu cấu trúc dữ liệu phù hợp .

hồi mấy năm trước có code 1 quá trình gồm 4 pitton , 6 cảm biến , 1 tay gắp , bằng hitech c trên con 16f887. code xong thấy chạy đúng , thế mà khi thay đổi 1 khâu trong quá trình thì gần như viết lại code.
Cái việc dễ sửa, sửa nhiều hay ít nó còn do cách viết code, thiết kế các module. Mình thấy là viết theo kiểu hướng đối tượng là hay nhất. Phát triển các class cha, xây dựng các class kế thừa làm cho việc tùy biến đơn giản. Vì vậy thay đổi thiết kế chương trình được sửa đổi nhanh chóng. Về cơ bản nếu mà chọn PLC hay vi điều khiển thì mình vẫn chọn vi điều khiển.
 

Quảng cáo Google