-
Thành viên Mới
Đếm vòng thời gian ?
-Trong s7 300, Mình tạo một Timer, sau khi đếm đủ theo yêu cầu chỉ định, Timer tự reset và đếm lại từ đầu, liên tục như vậy, tự động, không ngừng. Mình định dùng một Counter để đếm số lần lặp lại này (nghĩa là sau mỗi lần Timer reset thì Counter đếm lên 1) nhưng không được. Trên mô phỏng, Timer tính thời gian và reset bình thường nhưng Counter không đếm được vì hình như quá nhanh, cũng đã dùng lệnh phát hiện xung cạnh lên nhưng cũng không được. Có bạn nào gợi ý giúp mình với.
-
-
Thành viên cấp 4
Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
Gm:
Hidden Content
-
Bài viết của "Mechatronic_Hieu" đã được cám ơn bởi các thành viên:
-
Thành viên Mới
Thấy chuyên mục vắng vẻ, không nghĩ là mình được trả lời nhanh như vậy, câu lệnh rất gọn, cảm ơn bạn nhiều. Có mấy cái ở đây mình vẫn chưa hiểu, nếu được, mong bạn giải đáp giúp.
1. Tại sao mình chuyển thứ tự các Network (1 suống vị trí 2, 2 lên 1) thì không đếm được nữa, có vẻ như không theo logich suy nghĩ bình thường (hình như s7 300 cách suy nghĩ nó cứ ngược ngược sao ấy), sao không là hết vòng thời gian xong mới nhảy xuống đếm ?
2. L#1 nghĩa là gì ? là cú pháp gán 1 cho phép cộng hay là gán 1 vào vùng nhớ Local data lock ? Tại sao trong lệnh integer gán thẳng được còn double integer thì không ?
Thanks.
-
-
Thành viên cấp 4
Gửi bởi
ksboma
Thấy chuyên mục vắng vẻ, không nghĩ là mình được trả lời nhanh như vậy, câu lệnh rất gọn, cảm ơn bạn nhiều. Có mấy cái ở đây mình vẫn chưa hiểu, nếu được, mong bạn giải đáp giúp.
1. Tại sao mình chuyển thứ tự các Network (1 suống vị trí 2, 2 lên 1) thì không đếm được nữa, có vẻ như không theo logich suy nghĩ bình thường (hình như s7 300 cách suy nghĩ nó cứ ngược ngược sao ấy), sao không là hết vòng thời gian xong mới nhảy xuống đếm ?
2. L#1 nghĩa là gì ? là cú pháp gán 1 cho phép cộng hay là gán 1 vào vùng nhớ Local data lock ? Tại sao trong lệnh integer gán thẳng được còn double integer thì không ?
Thanks.
Nếu bạn muốn chuyển thứ tự thì bạn thay mấy cái T1 bằng 1 biến khác (ví dụ M0.2) rồi cho out M0.2 phía sau Q của T1. Cái này mình có chỉ bạn bên forum plcprovn.com rồi nhưng bạn không chịu làm theo thôi. Còn tại sao như thế thì bạn ngâm cứu thử xem, khi nào bạn giải thích được thì bạn đã biết thêm rất nhiều thứ hơn mình giải thích
L#1 là cách bạn đưa 1 số Double interger vào biểu thức thôi, Step 7 bắt buộc vậy phải theo. L là Long interger
Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
Gm:
Hidden Content
-
Bài viết của "Mechatronic_Hieu" đã được cám ơn bởi các thành viên:
-
Thành viên Mới
-Mình giải thích vầy coi được không nhé. Nếu đặt Timer lên trước lệnh ADD thì sau khi được kích delay 5s, T1 on lên 1 thì nó đồng thời cũng reset nó về 0 để tiếp tục delay 5 giây. Vì vậy kết quả đưa suống ADD là 0.
-Nhưng lại nảy sinh một câu hỏi, khi timer ở cuối nó cũng được reset về 0 nhưng kết quả 1 vẫn được truyền lên ADD ở trên, vì sao ? Có phải khi T1 on là kết thúc câu lệnh cuối cùng, kết quả ở thời điểm này (và các kết quả ở các network khác nếu có) được nghi nhận lại và đem lên sử dụng cho vòng scan kế tiếp ? Theo sách thì chương trình quét từng dòng lệnh, từ trái sang phải, từ trên suống dưới nhưng mà nhiêu đó quả thực không giải thích được là bao.
-
-
Thành viên cấp 4
Gửi bởi
ksboma
-Mình giải thích vầy coi được không nhé. Nếu đặt Timer lên trước lệnh ADD thì sau khi được kích delay 5s, T1 on lên 1 thì nó đồng thời cũng reset nó về 0 để tiếp tục delay 5 giây. Vì vậy kết quả đưa suống ADD là 0.
Cái này đúng
-Nhưng lại nảy sinh một câu hỏi, khi timer ở cuối nó cũng được reset về 0 nhưng kết quả 1 vẫn được truyền lên ADD ở trên, vì sao ?
Bạn ngâm cứu kỹ lại bản chất và cách hoạt động của Timer tí nữa sẽ ra
Có phải khi T1 on là kết thúc câu lệnh cuối cùng, kết quả ở thời điểm này (và các kết quả ở các network khác nếu có) được nghi nhận lại và đem lên sử dụng cho vòng scan kế tiếp ?
Cái này không chính xác
Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
Gm:
Hidden Content
-
Bài viết của "Mechatronic_Hieu" đã được cám ơn bởi các thành viên:
-
Thành viên Mới
Gửi bởi
Mechatronic_Hieu
Bạn ngâm cứu kỹ lại bản chất và cách hoạt động của Timer tí nữa sẽ ra
- Mình đã đọc nhiều tài liệu về cách thức hoạt động rồi mà vấn chưa tìm ra chỗ nào giải thích được, Timer đã được reset ngay trong dòng lệnh của nó rồi thì có đưa kết quả lên trên hay suống dưới thì trạng thái cũng là 0. Chỉ thấy như vầy, trong S7-200, lệnh ADD để sau time được và Timer của nó thì thời gian trễ là đếm lên (0->t), trong khi s7-300 là đếm suống (t->0), không biết có liên quan gì không ? Hay phải nghiên cứu ở thanh trạng thái hoặc đọc nội dung thanh ghi ACCU khi Timer hoạt động ?
-
-
Gửi bởi
ksboma
- Mình đã đọc nhiều tài liệu về cách thức hoạt động rồi mà vấn chưa tìm ra chỗ nào giải thích được, Timer đã được reset ngay trong dòng lệnh của nó rồi thì có đưa kết quả lên trên hay suống dưới thì trạng thái cũng là 0. Chỉ thấy như vầy, trong S7-200, lệnh ADD để sau time được và Timer của nó thì thời gian trễ là đếm lên (0->t), trong khi s7-300 là đếm suống (t->0), không biết có liên quan gì không ? Hay phải nghiên cứu ở thanh trạng thái hoặc đọc nội dung thanh ghi ACCU khi Timer hoạt động ?
Bạn gửi đoạn code đó lên thì mọi người sẽ góp ý cho bạn chính xác được !
-
-
Thành viên Mới
Gửi bởi
hungblack
Bạn gửi đoạn code đó lên thì mọi người sẽ góp ý cho bạn chính xác được !
nằm ở #2 nhưng không hiểu sao lại mất đi đâu rồi
-
Quyền viết bài
- Bạn Không thể gửi Chủ đề mới
- Bạn Không thể Gửi trả lời
- Bạn Không thể Gửi file đính kèm
- Bạn Không thể Sửa bài viết của mình
-
Nội quy - Quy định
Back to Top
Múi giờ GMT +7. Bây giờ là 08:31 PM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu