Hướng dẫn cấu hình Modbus TCP Master trên Router Teltonika
Trong bài viết này, mình sẽ hướng dẫn các bạn cấu hình 1 Router của Teltonika hoạt động như 1 Modbus TCP Master để Request dữ liệu từ các thiết bị Slave.
Mô hình kết nối
Mình đang có 1 mô hình đơn giản bao gồm 2 Router Teltonika. Trong đó thì thiết bị Teltonika RUT955 có địa chỉ IP 192.168.1.1 sẽ được cấu hình làm Modbus TCP Master, còn RUT950 có địa chỉ IP 192.168.1.2 sẽ được cấu hình làm Modbus TCP Slave.
Cấu hình Modbus TCP trên Router Teltonika
Cấu hình Modbus TCP slave
RUT950 sẽ đóng vai trò làm thiết bị Slave, trước tiên mình sẽ đổi IP của thiết bị về 192.168.1.2 theo đúng mô hình. Để đổi IP, trên giao diện web của Router, các bạn truy cập vào menu Network > LAN, trong tab General Setup các bạn đổi IP cho router.
Sau đó truy cập vào menu Services > Modbus, và cấu hình Modbus TCP.
- Tích chọn Enable để bật Modbus TCP
- Port: Nhập port mà các bạn sử dụng để giao tiếp thông qua mạng ethernet.
- Device ID: nhập device ID của thiết bị.
- Allow Remote Access: Bật tính năng này nếu các bạn muốn access vào Router này từ WAN bằng địa chỉ IP public. Như trong mô hình thì IP truy cập qua WAN sẽ là 100.0.0.100.
Cấu hình Modbus TCP Master
Trên thiết bị master, trước tiên các bạn cũng cần đổi địa chỉ IP cho router, các bạn cấu hình tương tự như Slave.
Sau đó các bạn vào menu Services > Modbus, trong tab Modbus TCP Master, mục New slave device, nhập các thông số của thiết bị Slave vào và nhấn Add.
Lưu ý: Các thông số bao gồm Slave ID, IP Address và Port cần đúng theo thông số được cấu hình trên Slave.
Sau khi nhập đủ thông tin và nhấn Add, router sẽ chuyển hướng đến 1 trang để thiết lập các thông số nâng cao.
- Tích chọn Enable để bật giao tiếp với Slave.
- Các thông tin Name, Slave ID, IP Address, Port là các thông số mà các bạn đã nhập ở bước trước.
- Period: thời gian mà các request được gửi đến Slave.
- Timeout: thời gian chờ tối đa tính từ khi Master gửi request cho đến khi Slave response.
Sau đó nhấn Save để lưu lại là xong.
Kiểm tra kết nối
Để kiểm tra kết nối, các bạn có thể tạo thử các request từ Master xuống Slave. Trên các router Teltonika, các bạn có thể tạo tối đa 64 yêu cầu cho mỗi Slave.
Sau khi add thành công Slave, trong mục Modbus TCP Slave devices sẽ có các thiết bị mà các bạn vừa add, chọn Edit 1 Slave cụ thể, sẽ có mục Request configuration. các bạn nhấn Add để tạo mới Request xuống Slave.
Trong màn hình tiếp theo, nhập các thông số liên quan đến request. Có rất nhiều các thông số Modbus mà các bạn có thể request, và khác nhau giữa các loại Router, các bạn có thể tham khảo trong bảng này: Router Teltonika Get and Set Parameters.
- Name: Tên của request, mình đang ví dụ về việc request thời gian khởi động của Slave nên mình sẽ đặt là System Uptime.
- Data type: dữ liệu đã đọc sẽ được lưu trữ thế nào.
- Function: Một mã chức năng chỉ định loại thanh ghi được giải quyết bởi một yêu cầu Modbus. Các mã đại diện cho các chức năng sau:
- 1 - read Coil Status
- 2 - read Input Status
- 3 - read Holding Registers
- 4 - read Input Registers
- 5 - force Single Coil
- 6 - preset Single Register
- 15 - force Multiple Coils
- 16 - force Multiple Registers
- First Register: Thanh ghi Modbus đầu tiên mà từ đó dữ liệu sẽ được đọc.
- Number of Registers: Số thanh ghi Modbus sẽ được đọc trong quá trình yêu cầu.
- Enabled: tích chọn để bật Requests này.
Sau khi tạo xong request, các bạn cần nhấn Save để lưu lại trước, tuy nhiên thì router sẽ chuyển hướng về màn hình trước. Các bạn cần Edit lại Slave và nhấn Test để thực hiện gửi request xuống Slave. Có thể trong các bản firmware sau thì hãng sẽ thay đổi lại quy trình này.
Sau khi nhấn Test thì Slave sẽ Response lại, tuy nhiên dữ liệu trả về sẽ là ở dạng decimal, các bạn cần quy đổi hoặc có các ứng dụng monitor khác. Ở đây mình chỉ test Slave phản hồi lại là OK.
Cấu hình Alarm
Alarm là một cách thiết lập các hành động tự động khi một số giá trị Modbus đáp ứng các điều kiện do người dùng chỉ định. Để cấu hình Alarm, trong Modbus TCP slave devices, nhấn chọn Alarms. Trong màn hình hiển thị ra, chọn Add để thêm Alarm mới.
Sau đó các bạn định nghĩa các loại trigger và action cụ thể dựa theo nhu cầu của mình trong mục Alarm settings.
Đầu tiên các bạn cần chọn Function Code. Ví dụ như ở phần Test, mình có tạo 1 Request về System Uptime với Function là 3, và Number of Registers là 2. Do vậy trong Alarm, mình sẽ chọn Function Code là Read Holding Registers (3), nghĩa là đọc các giá trị được giữ trong thanh ghi, với Register là 2. Điều này đồng nghĩa với việc Router sẽ đọc các thông tin về System Uptime của Slave 192.168.1.2 và so sánh với điều kiện bên dưới.
Sau đó mình đưa ra điều kiện là lớn hơn 0 (điều này luôn đúng với system uptime của Slave), nghĩa là các Action bên dưới sẽ luôn được thực hiện.
Tiếp theo là Action. Có rất nhiều các action mà các bạn có thể lựa chọn để định nghĩa. Như SMS thì sẽ gửi 1 tin nhắn cụ thể về 1 số điện thoại, Modbus Request sẽ gửi ra 1 Request tới 1 Slave cụ thể mà các bạn cấu hình bên dưới, Trigger output sẽ đưa ra 1 hành động cụ thể bên dưới. Mình sẽ chọn Trigger output.
Trong mục I/O Action mình sẽ chọn là Invert, nghĩa là đảo ngược. Như vậy cứ sau 60s, do trong phần request System Uptime xuống Slave 192.168.1.2 mình đang cấu hình period time là 60s, nên trigger cũng sẽ được thực hiện 60s 1 lần. Khi đó đầu ra rơ le sẽ bị đảo ngược.
Trong thực tế thì các bạn có thể tự định nghĩa các Alarm dựa trên nhu cầu sử dụng thực tế.
Nhân bản Slave
Trong trường hợp các bạn đã add xong 1 Slave, và cấu hình đầy đủ các Alarm cho slave đó rồi, mà trong mạng của bạn có nhiều Slave khác tương ứng, thì các bạn có thể sử dụng tính năng Clone để copy các thông số từ Slave ban đầu cho nhanh. Sau khi Clone xong thì các bạn chỉ cần sửa các thông tin Name, Device ID, IP address và port của Slave mới và tích chọn Enable là xong. Các cấu hình khác như Alarm vẫn sẽ được copy nguyên từ Slave ban đầu.
Bình luận bài viết!