-
Thành viên cấp 2
Truyền thông Modbus RTU dùng lệnh RS (RS2) giữa FX3U với PM710
Chào các anh chị trong diễn đàn.
Hiện em đang mắc phải 1 số vấn đề khi thực hiện truyền thông giữa PLC FX3U với đồng hồ PM710. Bài toán của em là:
Đọc các giá trị của PM về PLC. Em dùng lệnh RS2 khởi tạo trên kênh 1 (ch1). Tuy nhiên vẫn chưa thành công. Em có 1 số vấn đề sau mong các anh chị có kinh nghiệm chỉ giúp em :
+) Khung truyền:
+) Tính mã CRC: Phần tính mã CRC thì em sử dụng hàm CRC mà FX hỗ trợ. Làm vậy có đúng không.
Có thể do khung truyền của em gửi sai -> việc tính mã CRC sai -> không truyền được.
Mong các anh chị giúp đỡ.
-
-
Thành viên cấp 3
khuyên bạn vào site của Mitsu ấy đăng ký một cái tài khoản rồi tải cái tài liệu hướng dẫn phần modbus với em FX3u này về là khác làm được.
-
-
Thành viên cấp 3
hj.
- Nếu bạn dùng module ko hỗ trợ modbus.
Theo mình biết thì PM710 dùng Rs485 theo chuẩn 2-wire.Còn FX-3U bạn dùng chuẩn nào? viết truyền quan chanel bao nhiêu?
Lệnh RS2 viết theo dạng no-protocol, nên muốn truyền qua modbus RTU thì bạn nên quy định frame truyền theo chuẩn moddbus, thời gian truyền, thời gian nhận, và time out khá quan trọng nên bạn nên chú ý kỹ. Còn phần CRC bạn ko cần cho vào chương trình đâu, vì SR2 tự động check sum rồi.
Tóm lại bạn cần phân biệt giữa 2 phương pháp Non-protocol của PLC và modbus của PM710.
Bạn vào google search " data communication edition manual" có giải thích rõ chuẩn non-protocol nhé.
- Nếu bạn dùng module có hỗ trợ modbus thì trên PLC dùng trực tiếp lệnh luôn, khá tiện lợi đó.
Mitsubishi automation .
PLC A,FX,Q and servo MR-J2,3.
Email: Hidden Content
Mobile : 0168 798 0344
-
The Following 2 Users Say Thank You to phongnhatdo For This Useful Post:
-
Thành viên cấp 2
Gửi bởi
phongnhatdo
hj.
- Nếu bạn dùng module ko hỗ trợ modbus.
Theo mình biết thì PM710 dùng Rs485 theo chuẩn 2-wire.Còn FX-3U bạn dùng chuẩn nào? viết truyền quan chanel bao nhiêu?
Lệnh RS2 viết theo dạng no-protocol, nên muốn truyền qua modbus RTU thì bạn nên quy định frame truyền theo chuẩn moddbus, thời gian truyền, thời gian nhận, và time out khá quan trọng nên bạn nên chú ý kỹ. Còn phần CRC bạn ko cần cho vào chương trình đâu, vì SR2 tự động check sum rồi.
Tóm lại bạn cần phân biệt giữa 2 phương pháp Non-protocol của PLC và modbus của PM710.
Bạn vào google search " data communication edition manual" có giải thích rõ chuẩn non-protocol nhé.
- Nếu bạn dùng module có hỗ trợ modbus thì trên PLC dùng trực tiếp lệnh luôn, khá tiện lợi đó.
Cảm ơn anh đã quan tâm.
Em dùng modunl FX3U - 485ADP - MB. Thực hiện truyền trên kênh 1.
Toàn bộ hệ thống em dùng 2 modunl FX3U - 485ADP - MB.
Ở kênh 1 em dùng đọc 11 con PM710 sử dụng lệnh RS2 (do FX chỉ cho phép tối đa 16 trạm slave nên em phải dùng thêm 1 modunl truyền thông nữa để sử dụng lệnh RS2 này).
Còn ở kênh 2 thì em dùng để đk 11 con Rơ le Sepam sử dụng lệnh ADPRW. Với lệnh ADPRW thì em đã ok. Nhưng khi làm với lệnh RS2 thì em chưa làm được. Tài liệu modbus của FX3U em đã đọc. Tuy nhiên khả năng còn hạn chế nên vẫn chưa hiểu rõ.
Anh có thể hướng dẫn chi tiết được không ạ. Còn đây là bài em làm https://www.mediafire.com/?85s6mklf5kflt01 .
Mong anh giúp đỡ.
-
-
Thành viên cấp 3
Bạn config PLC như vậy là OK rồi. FX3U chỉ cho phép một master Modbus/ 1 pLC, module còn lại dùng chuẩn non-protocol.
Như mình đã nói con PM710 hỗ trợ modbus, nếu bạn muốn truyền thông được thì FX3U phải truyền theo frame modbus. Theo đúng như cái tên Non-protocol, nó truyền theo dạng tự do. nếu bạn muốn đưa về khung modbus thì cần phải tính toán bao nhiêu slave, rồi tính toán nhịp truyền và nhịp nhận dữ liệu từ các slave để tránh xung đột dữ liệu. Trước tiên bạn cứ test thử vs một con trước đã.
Mitsubishi automation .
PLC A,FX,Q and servo MR-J2,3.
Email: Hidden Content
Mobile : 0168 798 0344
-
The Following 2 Users Say Thank You to phongnhatdo For This Useful Post:
-
Thành viên cấp 2
Gửi bởi
phongnhatdo
Bạn config PLC như vậy là OK rồi. FX3U chỉ cho phép một master Modbus/ 1 pLC, module còn lại dùng chuẩn non-protocol.
Như mình đã nói con PM710 hỗ trợ modbus, nếu bạn muốn truyền thông được thì FX3U phải truyền theo frame modbus. Theo đúng như cái tên Non-protocol, nó truyền theo dạng tự do. nếu bạn muốn đưa về khung modbus thì cần phải tính toán bao nhiêu slave, rồi tính toán nhịp truyền và nhịp nhận dữ liệu từ các slave để tránh xung đột dữ liệu. Trước tiên bạn cứ test thử vs một con trước đã.
Vâng. Có lẽ vấn đề là ở khung truyền của mình . Anh đã xem bài em gửi hôm trước chưa ạ. Theo như em tìm hiểu thì khung truyền của nó dạng như sau :Untitled.jpg
Áp dụng vào ví dụ cụ thể: Địa chỉ slave là 2, cần đọc giá trị của 1 thanh ghi có địa chỉ là 4123.
Hôm trước a có nói là hàm RS2 nó tự động tính và thêm mã kiểm tra CRC vào trong khung truyền.
Do vậy khung truyền thực hiện trong lệnh RS2 sẽ là: 0203101B01
Tương ứng với lệnh RS2 viết trên kênh 1 sẽ là : RS2 D1000 K6 D1500 K6 K1
Còn về phần nhịp truyền và nhận dữ liệu để tránh xung đột thì em sử dụng cờ M8402 (gửi yêu cầu) và M8403 (hoàn tất nhận dữ liệu). Sau khi M8403 = 1 thì mới tiếp tục đọc trạm tiếp theo.
Em hiểu như vậy có đúng không anh. Mong anh hướng dẫn.
Lần sửa cuối bởi duc.thao, ngày 02-21-2014 lúc 04:46 PM.
Lý do: Bổ sung
-
Bài viết của "duc.thao" đã được cám ơn bởi các thành viên:
-
Thành viên cấp 3
đúng rồi. Bạn phải sử dụng hai bit đặc biệt yêu cầu gửi và nhận.
chú ý là cờ gửi sẽ tự reset sau khi gửi xong.
Nhưng trước tiên bạn phải định dạng cổng truyền thông cho thanh ghi D8120. dữ liệu bạn nhớ đưa về mã hex, và format khung dữ liệu xuất ra phải đúng thứ tự và trùng khớp với chuẩn của PM710.
Mitsubishi automation .
PLC A,FX,Q and servo MR-J2,3.
Email: Hidden Content
Mobile : 0168 798 0344
-
The Following 2 Users Say Thank You to phongnhatdo For This Useful Post:
-
Thành viên cấp 2
Gửi bởi
phongnhatdo
đúng rồi. Bạn phải sử dụng hai bit đặc biệt yêu cầu gửi và nhận.
chú ý là cờ gửi sẽ tự reset sau khi gửi xong.
Nhưng trước tiên bạn phải định dạng cổng truyền thông cho thanh ghi D8120. dữ liệu bạn nhớ đưa về mã hex, và format khung dữ liệu xuất ra phải đúng thứ tự và trùng khớp với chuẩn của PM710.
Phần thiết lập định dạng cổng truyền thông thì em đã làm được và khớp với các tham số cài đặt trong PM. Vấn đề ở đây là em vẫn chưa rõ cái khung dữ liệu truyền/nhận giữa PLC và PM. Anh có thể lấy 1 ví dụ cho em dễ hiểu được không ạ.
-
Bài viết của "duc.thao" đã được cám ơn bởi các thành viên:
-
Thành viên cấp 2
chào anh phongnhatdo . Em làm được với 1 trạm rồi. nhưng khi thực hiện đọc tất cả các trạm thì xảy ra lỗi. Em đoán là do nhịp truyền nhận của mình chưa đúng. Em có 13 trạm vậy tính toán chu kì truyền nhận như nào cho hợp lí a nhỉ. Mong anh giúp đỡ.
-
Bài viết của "duc.thao" đã được cám ơn bởi các thành viên:
-
Thành viên cấp 3
Bạn dùng một Timer định thì cho chu kỳ quét của tất cả các trạm.
giả sử 1 lần gửi/nhận 1 trạm chiếm 500ms thì muốn truyền trạm tiếp theo thì sau 500ms bạn gọi lệnh truyền trạm 2, cứ như thế cho đến hết số tạm và lặp lại.
bạn làm thử được ko nhé.
Mitsubishi automation .
PLC A,FX,Q and servo MR-J2,3.
Email: Hidden Content
Mobile : 0168 798 0344
-
The Following 2 Users Say Thank You to phongnhatdo For This Useful Post:
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:07 PM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu