You are on page 1of 16

Truyền thông Modbus với PLC Siemens S7-1200

KM-N2-FLK là đồng hồ đo các thông số điện năng như KW,KVA, Cosphi, Điện Áp, Dòng
diện… Loại đồng hồ này hỗ trợ kết nối RS485 chuẩn Modbus RTU để các thiết bị khác có
thể đọc các thông số về điện năng. Việc PLC đọc dữ liệu từ thiết bị khác qua Modbus RS485
không mới, tuy nhiên rất tốn thời gian. Sau đây xin hướng dẫn chi tiết
Cấu hình các thông số cho module CM 1241 (RS422/485)

Các bạn làm lần lượt các bước như hình ảnh ở trên, vào Device Configuration -> Click vào
hình ảnh của module -> Click vào mục General.
Tại Tag General các bạn bắt đầu config bạn chú ý tới những mục sau:

 – Đầu tiên trong thư mục RS422/RS485 interface các bạn vào
mục PortConfiguration tại đây ta chú ý tới các thông số được khoanh như trong
hình.

+ Trong phần Operating mode chọn Half duplex (RS485) two-wire operation là chế độ
truyền thông RS485 2 dây
+ Cac thông số như Baud rate, Parity, Data bits, Stop bits mình cấu hình phải đúng như
trên thiết bị Slave.
+ Thông số Wait time là thời gian chờ thiết lập lại, nghĩa là nếu kết nối không thành công thì
trong khoảng thời gian này module sẽ cố gắng kết lối lại, quá khoảng thời gian trên mà vẫn
không kết nối được thì module sẽ khởi động lại.
Tiếp theo là phần Hardware identifier, thông số này mình ko thiết lập nhưng mình phải nhớ
để sau này dung.

Sau đó ta Compile để hoàn thành quá trình cấu hình cho module và bắt đầu đi vào viết
chương trình.
Đầu tiên ta tạo 1 Function đặt tên là Modbus_RTU
Sau khi tạo được Function ta mở nó ra. Tại đây ta sẽ viết chương trình chính phục vụ cho
mục đích truyền thông.
Với truyền thông Modbus RTU với S7-1200 thì trong Step7 đã hỗ trợ sẵn cho ta 3 hàm
chính dùng để truyền thông đó là:
MB_COMM_LOAD: Dùng để cấu hình cho cổng kế nối vì vậy nó sẽ được
khởi động đầu tiên và chỉ chạy 1 lần trong cả quá trình truyền thông. Cái này
bắt buộc phải có.
MB_MASTER: Đây là hàm dùng để điều khiển quá trình truyền nhận trên
thiết bị Master.
MB_SLAVE: Đây là hàm điều khiển quá trình truyền nhận trên thiết bị Slave
Ví dụ như trong trường hợp này ta sử dụng S7-1200 để đọc dữ liệu từ đồng hồ đo năng
lượng KM-N2 vì vậy S7-1200 sẽ đóng vai trò làm Master và đồng hồ sẽ đóng vai trò là Slave
nên ta cần sử dụng 2 hàm MB_COMM_LOAD và MB_MASTER.
Để sử dụng các function này ta vào Instructions/Communication/Communication
Processor/Modbus giữ chuột kéo ra như các hình bên dưới.
MB_COMM_LOAD:
MB_MASTER:

Sau khi gọi các function cần thiết ra ta bắt đầu thiết lập, cài đặt các thông số đầu vào , đầu ra
cho chúng.
Thiết lập các thông số cho MB_COMM_LOAD function.
Chúng ta cài đặt các thông số cho hàm MB_COMM_LOAD với các thông số như trên trong
đó:
REQ: Đóng vai trò như là 1 bit enable, nghĩa là khi nó bằng 1 thì hàm sẽ được thực hiện.
Mặt khác như đã nói ở trên hàm này chỉ cần thực hiện 1 lần để khởi tạo các thông số truyền
thông. Do đó bit REQ chỉ có giá trị bằng 1 trong vòng lặp đầu tiên. Ở đây ta gán bit M0.0
cho REQ nhưng dùng tiếp điểm thường đóng. Do vậy khi bắt đầu chương trình hàm
MB_COMM_LOAD sẽ được thực hiện luôn, ngay bên dưới hàm này sẽ là 1 network với
nhiệm vụ set bit M0.0 lên 1 để đảm bảo từ vòng lặp sau hàm MB_COMM_LOAD sẽ không
được thực hiện.
PORT: Giá trị của PORT chính là giá trị của thông số Hardware indentifier trong quá trình
thiết lập module lúc đầu. Cụ thể ta có thể tham khảo hình bên dưới.
BAUD hay PARITY cũng tương tự các giá trị đã cài đặt cho module.
MB_DB: Chính là địa chỉ của hàm MB_MASTER_DB mà ta vừa tạo. Như ở đây nó có giá trị
là DB3.
Thiết lập các thông số cho MB_MASTER_DB function..

Ta thiết lập các thông số như hình trên. Trong đó:


REQ: Là bit enable, khi nó được bật lên thì quá trình truyền thông được thực hiện. Như
trong ví dụ này ta chỉ đọc 1 thanh ghi của đồng hồ đo năng lượng lên ta nối nó với bit M0.1
bằng tiếp điểm thường đóng, do đó nó luôn luôn được bật và trong khi ta không cần tác
động gì vào bit M0.1
MB_ADDR: Là địa chỉ của Slave, ở đây là đồng hồ thời đo năng lượng KM-N2.
MODE: Bit này sẽ được set tùy theo mục đích sử dụng của ta là đọc hay ghi. Cụ thể tham
khảo trong tài liệu của S7-1200, như trong trường hợp này ta cần đọc thanh ghi chứa dữ liệu
điện áp V1 của đồng hồ nên ta chọn mode là 0.
Xem hình ảnh bên dưới.

DATA_ADDR: Là địa chỉ tương đối của thanh ghi chứa giá trị cần đọc. Gọi là địa chỉ tương
đối vì DATA_ADDR= A+B+C
Trong đó:
A: Là giá trị đầu tiên trong dải địa chỉ của chế độ mà ta chọn. Như hình trên ta thấy cùng là
mode 0, 1 hoặc 2 thì có nhiều chế độ khác nhau, để phân biệt chúng với nhau thì ta để ý tới
ô cuối cùng nó sẽ có các dải địa chỉ khác nhau.
VD như khi ta chọn mode 0 và nhập vào địa chỉ nằm trong khoảng từ 1 tới 999 thì PLC nó
sẽ hiểu là ta chọn chế độ đọc giá trị out put của bit. Như ở đây ta cần đọc giá trị của 1 thanh
ghi nên ta phải nhập địa chỉ nằm trong khoảng từ 40001 tới 49999 hoặc 400001 tới
465535. Khi đó giá trị A của ta sẽ là 40001 hoặc 400001.
Ở đây ta chọn A=40001
B: Là giá trị của địa chỉ thực của thanh ghi cần đọc, như hình dưới ta thấy địa chỉ chứa
thanh ghi của điện áp V1 là 0.
C: Là giá trị offset bằng 1.
Từ đó ta tính được giá trị : DATA_ADDR = 40001+0+1=40002
DATA_LEN: Độ dài của dữ liệu cần đọc, ở đây ta cần đọc 1 thanh ghi thì chọn
DATA_LEN=1
DATA_PTR: Con trỏ chỉ tới địa chỉ lưu dữ liệu. Ở đây ta cần tạo thêm 1 Data Block để lư dữ
liệu đọc về. Như trên hình ta đã tạo 1 Data Block với tên là Data_Modbus trong đó chứa
biến Voltage1. Nó có địa chỉ là DB1

Sau khi hoàn thành các bước trên ta vào chương trình chính gọi Function Data_Modbus ra,
nạp chương trình xuống PLC sẽ thấy được kết quả như bên dưới
Entry type: FAQ Entry ID: 109736665, Entry date: 04/23/2019
)7 (
Rate
How do you connect the RS485/RS422 interfaces of SIMATIC and SIPLUS
modules for serial communication?
 Entry

 Associated product(s)
Serial communication is possible via the RS485 and RS422 interfaces with the modules below, . The terminal
assignments are given in the diagrams.
Fig. 1 (RS485) and Fig. 2 (RS422)
 ET 200SP CM PtP
Fig. 3 (RS485) and Fig. 4 (RS422)
 S7-1500 CM PtP RS485/RS422 BA/HF
 CP 340 / CP 341
 CP 440 / CP 441-1 / CP 441-2
Fig. 5 (RS485) and Fig. 6 (RS422)
 ET 200S 1SI
Fig. 7 and Fig. 8 (each RS485)
 CM 1241
 CB 1241
Note
If you use an RS485 connection cable or an RS422 connection cable that is longer than 50m, you should add a terminating resistor of
approx. 330Ω.
Exceptions here are the modules CM 1241 and CB 1241 with other terminating resistors.
They only terminate the two ends of the RS485 network. The devices between the two terminal devices are not terminated.
ET 200SP CM PtP
Fig. 1 shows the terminal assignment for RS485 communication.
Fig. 1
Fig. 2 shows the terminal assignment for RS422 communication.

Fig. 2
The following overview shows you accessories for ET 200SP CM PtP.

Base Unit Article number Connecting cable cross-section

Base Unit Type A0, BU15-P16+A0+2B 6ES7193-6BP00-0BA0  min: 0.14 mm², AWG 26
(recommended)
Base Unit Type A0, BU15-P16+A0+2D 6ES7193-6BP00-0DA0
 max: 2.5 mm², AWG 14
Base Unit Type A0, BU15-P16+A10+2B 6ES7193-6BP20-0BA0

Base Unit Type A0, BU15-P16+A10+2D 6ES7193-6BP20-0DA0

Table 1

S7-1500 CM PtP RS485/RS422 BA/HF, CP340, CP 341, CP 440, CP 441-1, CP 441-2


Fig. 3 shows the terminal assignment for RS485 communication.

Fig. 3

Fig. 4 shows the terminal assignment for RS422 communication.


Fig. 4

>The following overview shows you accessories for S7-1500 CM PtP RS485/RS422 BA/HF, CP 340, CP 341, CP 440, CP 441-1 and CP
441-2.

Plug-in connecting cable Article number

S7 plug-in connecting cable RS422/485, 5 m 6ES7902-3AB00-0AA0


Cable for point-to-point connections RS422-RS422, each 15-pin Sub-D male connector

S7 plug-in connecting cable RS422/485, 10 m 6ES7902-3AC00-0AA0


Cable for point-to-point connections RS422-RS422, each 15-pin Sub-D male connector

S7 plug-in connecting cable RS422/485, 50 m 6ES7902-3AG00-0AA0


Cable for point-to-point connections RS422-RS422, each 15-pin Sub-D male connector

Table 2

ET 200S 1SI
Fig. 5 shows the terminal assignment for RS485 communication.
Fig. 5

The following lengths are possible for the ET 200S 1SI module as communication module when using the cable type LIYCY 3 x 2& x
0.14:

 max. 1200 m for 19200 baud


 max. 500 m for 38400 baud
 max. 250 m for 76800 baud
 max. 200 m for 115200 baud

Fig. 6 shows the terminal assignment for RS422 communication.


Fig. 6

The following lengths are possible for the ET 200S 1SI module as communication module when using the cable type LIYCY 3 x 2& x
0.14:

 max. 1200 m for 19200 baud


 max 500 m for 38400 baud
 max. 250 m for 76800 baud
CM 1241
Fig. 7 shows the terminal assignment for RS485 communication.

You can connect the CM 1241 via a 9-pin PROFIBUS connector and a PROFIBUS bus cable from Siemens.

For this Siemens provides an RS485 bus connector that you can use to connect multiple devices to an RS485 network. This connector
has a switch to selectively terminate the network with a terminating resistor. Further information about this is available in section 13.2 of
the S7-1200 manual at the link given below.

Note the following features for connectors of your own design:


Fig. 7

CB 1241
Fig. 8 shows the terminal assignment for RS485 communication.

You can connect the CB 1241 via a PROFIBUS connector and a PROFIBUS bus cable from Siemens.

The CB 1241 provides internal resistors for the network termination, but does not have its own 9-pin female Sub-D connector.

To terminate the connection you connect TRA with TA and TRB with TB to include the internal resistors in the circuit.
Fig. 8

You might also like