Tần số nội của PLC cũng rất hạn chế, có thể có 5ms ON và 5ms OFF ( đối với tần số này thì bạn cần coi kĩ vì mấy đời PLC cũ sẽ ko có loại tần số này), loại thường có là 10ms ON và 10ms OFF và cứ thế cao hơn nữa. Mình đã từng gặp rắc rối khi tạo 1 xung nội 5ms ON và 5ms OFF cho con Mitsu họ A, vì đơn giản là nó ko có xung này.
HSC là nhận tín hiệu input từ bên ngoài, làm sao bạn lấy xung kích từ bên trong để cho HSC đếm? Nhưng giờ mình giả sử là nó có thể đếm được cái xung lock nội của PLC đi.
Giả sử ngay khi có xung cạnh lên của F1 nhưng mà F0 đang bận ON hay OFF thì sao ? Như vậy là độ rộng xung cần đo ko chính xác rồi.
Ý của bạn phải là như vậy ko: Khi có xung cạnh lên của F1 thì cho 1 thằng đếm cái xung lock của PLC, khi có xung cạnh xuống thì tắt counter ko cho nó đếm nữa. rồi tính độ rộng xung bằng cách nhân số lần đó cho cái giá trị xung lock của PLC. Ko bít mình hiểu như vậy đúng giải thuật của bạn chưa?
Cơ bản đúng là vậy đó các bạn, còn lại là tùy cơ ứng biến theo thực tế Thiết bị đang có trong tay để làm.
Nếu các bạn đang nghiên cứu 1 PLC cụ thể thì nên bám sát Instruction Manual 110%.
Sau khi nắm vững hết thì mới ứng biến theo thực tế được.
Theo KN mình thấy thì nên lấy Mục tiêu Ứng dụng sát thực tế (cuộc sống) để học tập và làm bài tập mô phỏng,
tránh mô phỏng "chay" trên máy tính và PLC nhiều quá, sẽ gây ngộ nhận về tính năng thiết bị.
Trong thực tế (điều khiển valve) hiếm khi có tốc độ quá nhanh cỡ vài ms, bình thường cũng vài trăm ms trở lên , tùy theo Ứng dụng,
do đó sai số sẽ có và chấp nhận được, thông thường phải chấp nhận sai số cho phép hợp lý để giá thành không quá cao.
Ở tốc độ cao , tần số cao thì sẽ giống như Topic về Servo motor, hẹn các bạn thảo luận ớ đó.
Chúc các bạn nhiều thành công & Chúc mừng năm Mới !
Rất cám ơn NGUYENPHONG và FORTHEBESTERLIFE đã thảo luận góp ý.
Qủa thật trong hiểu biết của mình về PLC thì việc đếm P.W.M từ VXL là không thể với những lý do mà 2 bạn đã nêu trên và thêm một lý do nữa là biên độ xung từ VXL là không đủ để kích PLC .
Do vậy phương án của mình bây giờ là dùng một động cơ DC có Encoder làm trung gian để đưa xung về HSC của PLC , nhưng phương án sẽ làm cho việc chuyển đổi sẽ không chính xác bởi xung từ encorder đưa ra phụ thuộc vào độ chính xác của động cơ DC.
Mong các bạn cho ý kiến .
Sang năm mới chúc các bạn thật vui , nhiều sức khỏe và thành công .
Có 1 cách nữa và dễ hơn như thế này, vi xử lý ko xuất PWM ra mà xuất PTO ra trong 1 khoảng thời gian nhất định. Và trong PLC thì bạn dùng HSC để tính khoảng xung đó, như vậy sẽ dễ làm hơn. Ví dụ trong 10ms, nếu nhận được 1 xung thì chạy 10%, nếu 10ms tiếp theo nhận 5 xung thì chạy 50%. Ý tưởng là như thế, bạn cứ dựa theo đó mà phát triển
Mình đã đưa cho bạn phương án ở trên rồi đó. Bạn chỉ cần làm 1 mạch cách ly để đưa xung lên 24V thui là ok rồi.
Theo mình nghĩ giải thuật đó là ổn, bạn cứ theo hướng đó mà làm. Có gì feedback lại nhé
Chào Nguyenphng ,
Phần P.W.M mình sẽ theo phương án của bạn tư vấn .
Phần viết chương trình , bạn xem giúp có đúng về ý tưởng và cú pháp không .
Về ý tưởng (dùng FX1-24MT):
- DHSCS so sánh giá trị xung đếm được của C235 qua X0 từ PWM và K đặt trước , khi C235 = K thì Relay M kích hoạt.
- M : kích hoạt Y để điều khiển tải .
- DHSCR : reset ngõ ra M trước nó để đảm bảo chỉ có 1 M được kích hoạt trong mọi thời điểm.
Do mình mới tiếp xúc PLC nên còn rất gà , mong bạn giúp đỡ.
Hi bạn, hiện mình đã bỏ nghiệp lập trình PLC rồi nên toàn bộ program về PLC mình đã bỏ hết nhưng ý tưởng thì mình có ^=^.
Mình chưa bít van tỷ lệ điều khiển theo dạng nào, dạng dòng hay dạng xung, cái này bạn coi kĩ lại giùm mình nhé.
Phần giải thuật của xung thì như sau: trên VXL bạn cần phải có 2 tín hiệu: thứ 1 là chân xác nhận gởi xung PTO, và chân còn lại là chân PTO. Khi chân xác nhận xung kích hoạt, bạn đưa nó vào ngắt ngoài. Khi xảy ra ngắt ngoài thì kích HSC đếm đồng thời kích timer đếm lùi thời gian, đúng thời gian đó thì ko cho HSC đếm nữa, lấy cái HSC ra so sánh thì sẽ biết được trong khoảng thời gian đó, VXL xuất PTO bao nhiêu xung. Vậy thui. Bạn dùng C235 là ok rồi đó, còn lại là cấu hình ngắt ngoài mà thui.
các sư huynh cho em hỏi , làm cách nào để đặt vị trí gốc tọa độ 0,0 ( khi mở máy là máy tự nhớ vị trí gốc này là 0,0 ) , nhờ các sư huynh chỉ cách viết plc dùm nha
Đánh dấu