Tải bản đầy đủ (.docx) (60 trang)

Giao tiếp modbus TCPIP của s7 1200 s7 1500 với các thiết bị khác

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.62 MB, 60 trang )

Thực Tập 9/7

Đề tài 1: Giao tiếp Modbus TCP/IP của S7 1200/ S7 1500 với các thiết bị khác
I.

Giới thiệu
1. Giới thiệu chung:
Trong nền công nghiệp hiện nay,việc ứng dụng mạng truyền thông công
nghiệp trong việc quản lý vận hành và giám sát ngày càng được phổ biến
trong các nhà máy, xí nghiệp và các dây chuyền sản xuất,….để đáp ứng
nhu cầu đó thì càng ngày càng có nhiều thiết bị chấp hành hay thiết bị
điều khiển như PLC,biến tần,….được tích hợp sẵn các giao thức mạng
như: Profibus, can, modbus,zigbee,simatic net,…….
2. Mobus là gì?
Modbus là chuẩn truyền thông trong công nghiệp, rất hiệu quả và phổ
biến, vì chúng đơn giản trong truyền nhận. Tốt của chuẩn Modbus là sự
linh hoạt, và dễ thực hiện. Không những các thiết bị thông minh như các
microcontroller, PLC... có thể truyền thông với Modbus, mà còn các cảm
biến thông minh trang bị.
Modbus interface gửi dữ liệu của chúng đến các host system. Modbus,
cũng có các mở rộng cho các chuẩn truyền thông không dây và các mạng
TCP/IP. Với đậc điểm trên, nên ngày nay các nhà máy xí nghiệp rất
chuộn mạng Modbus này.
3. Cấu trúc thông điệp Modbus


Trên RS232 gởi các thông điệp tương tự như được dùng trên Modbus/TCP qua
ethernet. Gọi là Modbus interface. Protocol có thể dùng không quan tâm kiểu
kết nối. Vì điều này, Modbus cho khả năng dễ dàng nâng cấp cấu trúc phần cứng
của mạng công nghiệp, không cần thay đổi lớn trong phần mềm. Một thiết bị cũng
có thể truyền thông với vài Modbus node một lúc, dù chúng được nối với các kiểu


giao diện khác nhau, không cần dùng protocol khác cho mỗi kết nối. Trên các giao
diện đơn giảng giống RS485 hay RS232, các thông điệp Modbus được gửi theo
dạng đơn giản trên mạng. Các hệ thống mạng linh hoạt hơn như TCP/IP qua
ethernet, các thông điệp
Modbus như nhúng trong các gói với định dạng cần thiết cho giao diện vật lý.
Trong trường hợp đó Modbus và các kiểu kết nối khác có thể cùng tồn tại ở cùng
giao diện vật lý ở cùng lúc. Mặc dù cấu trúc thông điệp Modbus chính là peer-topeer (ngang hàng), Modbus có thể kết nối thành cả mạng point-to-point và
multidrop. Gởi đi bằng các thông điệp. Bốn thành phần cơ bản có mặt trong mỗi
thông điệp. Cuối các thành phần này là giống nhau cho tất cả thông điệp, để dễ
dàng xác định nội dung của Modbus message. Một hộp thoại luôn được bắt đầu bởi
một master trong mạng Modbus. Modbus master gửi một message phụ thuộc vào
nội dung của message—slave tác động và đáp ứng với nó. Có thể có nhiều master
trong một Modbus network. Địa chỉ trong message header được dùng để định
nghĩa device mà sẽ đáp ứng với message. Tất cả các node trong Modbus network
bỏ qua message nếu address field không thỏa mãn address riêng của chúng.
II.

Phân loại

1. Các dạng modbus phổ biến nhất được dử dụng ngày nay là:
- Modbus/ASCII


- Modbus/RTU
- Modbus/TCP
Tất cả thông điệp được gửi dưới cùng một format. Sự khác nhau duy nhất giữa 3
loại MODBUS là cách thức thông điệp được mã hóa.
2. So sánh Modbus (ASCII/RTU/TCP)
a) Modbus ASCII


MODBUS ASCII, mọi thông điệp được mã hóa bằng hexadeci-mal, sử dụng
đặc tính ASCII 4 bit. Đối với mỗi một byte thông tin, cần có 2 byte truyền
thông, gấp đôi so với MODBUS RTU hay MODBUS/TCP.
Tuy nhiên, MODBUS ASC II chậm nhất trong số 3 loại protocol, nhưng lại
thích hợp khi modem điện thoại hay kết nối sử dụng sóng radio do ASC II sử
dụng các tính năng phân định thông điệp. Do tính năng phân định này, mọi rắc
rối trong phương tiện truyền dẫn sẽ không làm thiết bị nhận dịch sai thông tin.
Điều này quan trọng khi đề cập đến các modem chậm, điện thoại di động, kết
nối ồn hay các phương tiện truyền thông khó tính khác.
b) Modbus RTU


Đối với MODBUS RTU, dữ liệu được mã hóa theo hệ nhị phân, và chỉ cần một
byte truyền thông cho một byte dữ liệu.
Đây là thiết bị lí tưởng đối với RS 232 hay mạng RS485 đa điểm. Tốc độ phổ
biến nhất là 9600 đến 19200 baud.
MODBUS RTU là protocol công nghiệp được sử dụng rộng rãi nhất.
c) Modbus TCP

MODBUS/TCP đơn giản là MODBUS qua Ethernet. Thay vì sử dụng thiết bị
này cho việc kết nối với các thiết bị tớ, do đó các địa chỉ IP được sử dụng. Với
MODBUS/TCP, dữ liệu MODBUS được tóm lược đơn giản trong một gói
TCP/IP. Do đó, bất cứ mạng Ethernet hỗ trợ MODBUS/ IP sẽ ngay lập tức hỗ
trợ MODBUS/TCP.
MODBUS TCP/IP:
1. General MODBUS frame (Khung truyền Modbus):

• Valid function codes : 1 – 127
• 256 byte max packet size
• Big-Endian encoding ( byte có trọng số cao sẽ được truyền đi trước)

• Error check is CRC/LRC ( phương thức kiểm tra lỗi CRC/LRC)
2. MODBUS transaction (error free) :


• Modbus is a Master/Slave Serial Protocol ( Giao thức truyền nối tiếp)
• Only Masters can initiate conversatioin ( Chỉ có Master gởi lệnh yêu cầu)
3. MODBUS transaction (exception response)

• Erorr Function = 0x80 + Function Code ( Mã lỗi)
• Erorr Codes defined in specification


Modbus Notes
Addressing ( Địa chỉ)
• Valid Slave IDs 1 – 247 ( Địa chỉ Slave hợp lệ)
• Slave ID must be unique per bus (Địa chỉ Slave không được trùng trên 1 bus)
• Masters do not have to have an address ( Master không nhất thiết phải có địa chỉ)


• Slaves will error when improperly addressed ( Slave sẽ bị lỗi nếu địa chỉ không
đúng)
Communication ( Truyền thông)
• One request on the line at a time ( chỉ có 1 yều cầu trên 1 đường truyền tại 1 thời
điểm)
• Masters must wait for responses ( Master phải đợi phản hồi)
4. Modbus TCP
 Modbus protocol wrapped in TCP (Giao thức Modbus được gói trong
TCP)
 Checksum dropped
 Introduces Gateway device to Modbus (Giới thiệu thiết bị Gateway tới

Modbus)
 Port 502 is reserved for Modbus TCP (Cổng 502 dành cho Modbus TCP)
a. Modbus TCP Architecture ( Kiến trúc Modbus TCP)

b. Modbus TCP packet


• MBAP: Modbus Application Protocol Header
• PDU remains the same from the MODBUS Spec
• Transaction Identifier: 2 bytes set by the Client to uniquely identify each
request.
• Protocol ID is always 0x0000
• Length: 2 bytes identifying the number of bytes in the message to follow
• Big-Endian encoding
III.

Giao tiếp MODBUS TCP/IP trong TIA Portal:

● Mã hàm Modbus 08 và 11 cung cấp thông tin chẩn đoán truyền thông của thiết bị
Slave.
● Mã hàm Modbus 0 là mã broadcasts truyền cho tất cả các Slave.
Modbus TCP instructions in your program
● MB_CLIENT: Thực hiện kết nối TCP máy khách-máy chủ, gửi thông điệp lệnh,
nhận phản hồi và kiểm soát việc ngắt kết nối từ máy chủ.
● MB_SERVER: Kết nối với một khách hàng Modbus TCP theo yêu cầu, nhận
được thông báo Modbus, và gửi phản hồi.
- Cấu hình thiết bị:


- Cấu hình Systerm and clock memory:



1. MB_CLIENT


Table 12- 50 Data types for the parameters
Tham số và kiểu

Kiểu dữ
liệu

Mô tả


REQ

In

Bool

DISCONNECT

In

Bool

CONNECT_ID

In


Uint

IP_OCTET_1

In

USint

IP_OCTET_2

In

USint

IP_OCTET_3

In

USint

IP_OCTET_4

In

USint

IP_PORT

In


Uint

MB_MODE

In

USint

FALSE = Không có yêu cầu truyền
thông Modbus
TRUE = Yêu cầu truyền thông với
một máy chủ Modbus TCP
-Thông số DISCONNECT cho phép
chương trình của bạn kiểm soát kết
nối và ngắt kết nối với một thiết bị
máy chủ Modbus.
-Nếu DISCONNECT = 0 và kết nối
không tồn tại, thì MB_CLIENT thử
tạo kết nối đến địa chỉ IP và số cổng
được giao.
-Nếu DISCONNECT = 1 và một kết
nối tồn tại, thì một thao tác ngắt kết
nối được thực hiện. Bất cứ khi nào đầu
vào này được kích hoạt, không có hoạt
động khác sẽ được thử.
Thông số CONNECT_ID phải xác
định duy nhất mỗi kết nối trong PLC.
Mỗi ví dụ duy nhất của MB_CLIENT
hoặc MB_SERVER chỉ dẫn phải chứa
một tham số CONNECT_ID duy nhất.

Địa chỉ IP của máy chủ Modbus TCP:
Octet 1
Phần 8-bit của địa chỉ IPv4 32-bit của
Modbus TCPserver mà client sẽ kết
nối và giao tiếp bằng cách sử dụng
giao thức Modbus TCP.
Địa chỉ IP của máy chủ Modbus TCP:
Octet 2
Địa chỉ IP của máy chủ Modbus TCP:
Octet 3
Địa chỉ IP của máy chủ Modbus TCP:
Octet 4
Giá trị mặc định = 502: Số cổng IP
của máy chủ mà khách hàng sẽ thử kết
nối và cuối cùng giao tiếp bằng cách
sử dụng giao thức TCP / IP.
Lựa chọn chế độ: Gán kiểu yêu cầu


MB_DATA_ADDR In

UDint

MB_DATA_LEN

In

Uint

MB_DATA_PTR


In_Out

Variant

DONE

Out

Bool

BUSY

Out

Bool

ERROR

Out

Bool

STATUS

Out

Word

(đọc, viết hoặc chẩn đoán). Xem bảng

chức năng Modbus dưới đây để biết
chi tiết.
Modbus starting Địa chỉ: Chỉ định địa
chỉ bắt đầu của dữ liệu được
Truy cập bởi MB_CLIENT. Xem bảng
chức năng Modbus bên dưới để có
hiệu lực địa chỉ.
Chiều dài Dữ liệu Modbus: Chỉ định
số bit hoặc word cần truy cập trong
yêu cầu này. Xem bảng chức năng
Modbus bên dưới về độ dài hợp lệ
Con trỏ tới thanh ghi dữ liệu Modbus:
Bộ thanh ghi sẽ lưu dữ liệu vào hoặc
đến từ một Modbus Server. Con trỏ
phải gán một standard globa
DB hoặc địa chỉ bộ nhớ M.
Bit DONE là TRUE cho một lần quét,
sau khi yêu cầu cuối cùng đã hoàn tất
Không có lỗi
0 - Không có hoạt động MB_CLIENT
nào đang trong tiến trình
1 - đang hoạt động MB_CLIENT
Bit ERROR là TRUE cho một lần
quét, sau khi thực thi MB_CLIENT đã
bị chấm dứt với lỗi. Giá trị mã lỗi tại
tham số STATUS chỉ hợp lệ trong chu
trình đơn mà ERROR = TRUE.
Mã điều kiện thực hiện

1.1 REQ parameter:

FALSE = Không có yêu cầu truyền thông Modbus
TRUE = Yêu cầu liên lạc với một máy chủ Modbus TCP
Nếu không có trường hợp của MB_CLIENT đang hoạt động và tham số
DISCONNECT = 0, khi REQ = 1 một yêu cầu Modbus mới sẽ bắt đầu. Nếu kết nối
chưa được thiết lập thì kết nối mới sẽ được thực hiện.


Nếu cùng một thể hiện của MB_CLIENT được thực hiện lại với DISCONNECT =
0 và REQ = 1, trước khi hoàn thành yêu cầu hiện tại, thì không có truyền dẫn
Modbus nào tiếp theo. Tuy nhiên, ngay khi yêu cầu hiện tại được hoàn thành, một
yêu cầu mới có thể được xử lý nếu MB_CLIENT được thực hiện với REQ = 1.
Khi yêu cầu truyền thông hiện tại của MB_CLIENT hoàn tất, bit DONE là TRUE
cho một chu kỳ. Bit DONE có thể được sử dụng làm cổng thời gian để sắp xếp
nhiều yêu cầu MB_CLIENT.
1.2 MB_MODE and MB_DATA_ADDR parameters select the Modbus
communication function:
MB_DATA_ADDR gán địa chỉ Modbus khởi động của dữ liệu được truy cập.
Lệnh MB_CLIENT sử dụng một đầu vào MB_MODE chứ không phải là một đầu
vào mã chức năng.
Sự kết hợp các giá trị MB_MODE và MB_DATA_ADDR xác định mã chức năng
được sử dụng trong thông báo Modbus thực tế. Bảng dưới đây cho thấy sự tương
ứng giữa tham số MB_MODE, Modbus, và phạm vi địa chỉ Modbus.


Note:
MB_DATA_PTR gán một bộ đệm để lưu trữ dữ liệu đọc / ghi vào / từ một máy chủ
Modbus TCP
Bộ đệm dữ liệu có thể nằm trong một địa chỉ bộ nhớ DB hoặc M.



Đối với bộ đệm trong bộ nhớ M, sử dụng định dạng Bất kỳ Con trỏ chuẩn nào. Đây
là định dạng: P # "Bit Address" "Data Type" "Length"
ví dụ là P # M1000.0 WORD 500
1.3 MB_DATA_PTR assigns a communication buffer:
● MB_CLIENT chức năng truyền thông:
- Đọc và ghi dữ liệu 1-bit từ địa chỉ máy chủ Modbus (00001 đến 09999)
- Đọc dữ liệu 1-bit từ địa chỉ máy chủ Modbus (10001 đến 19999)
- Đọc dữ liệu từ 16 bit từ địa chỉ máy chủ Modbus (30001 đến 39999) và (40001
đến 49999)
- Viết dữ liệu từ 16 bit đến địa chỉ máy chủ Modbus (40001 đến 49999)
● Dữ liệu từ Word hoặc Bit được chuyển đến / từ bộ đệm bộ nhớ DB hoặc M được
chỉ định bởi MB_DATA_PTR.
● Nếu một DB được chỉ định là bộ đệm bởi MB_DATA_PTR, thì bạn phải gán các
kiểu dữ liệu cho tất cả các phần tử dữ liệu DB.
- Kiểu dữ liệu Bool 1-bit đại diện cho một địa chỉ bit Modbus
- Các kiểu dữ liệu từ đơn 16 bit như WORD, UInt, và Int đại diện cho một địa chỉ
từ Modbus
- Các kiểu dữ liệu từ kép 32 bit như DWORD, DInt, và Real đại diện cho hai địa
chỉ từ Modbus.
● Các thành phần DB phức tạp có thể được chỉ định bởi MB_DATA_PTR, chẳng
hạn như
- Các mảng chuẩn
- Các cấu trúc được đặt tên mà mỗi phần tử là duy nhất.
- Được đặt tên cấu trúc phức tạp, trong đó mỗi phần tử có một tên duy nhất và kiểu
dữ liệu 16 hoặc 32 bit.
● Không yêu cầu các khu vực dữ liệu MB_DATA_PTR nằm trong cùng một khối
dữ liệu toàn cục (hoặc khu vực bộ nhớ M). Bạn có thể chỉ định một khối dữ liệu để
đọc Modbus, một khối dữ liệu khác cho viết Modbus, hoặc một khối dữ liệu cho
mỗi trạm MB_CLIENT.



Multiple client connections:
Các kết nối Client cá nhân phải tuân theo các quy tắc sau:
● Mỗi kết nối MB_CLIENT phải sử dụng một DB riêng biệt
● Mỗi kết nối MB_CLIENT phải chỉ định địa chỉ IP Server duy nhất
● Mỗi kết nối MB_CLIENT phải chỉ định ID kết nối duy nhất
● Số cổng IP duy nhất có thể hoặc không bắt buộc phải phụ thuộc vào cấu hình
Server.


2. MB_SERVER:


Table 12- 56 Các kiểu dữ liệu cho các tham số:
Tham số và kiểu
DISCONNECT

In

CONNECT_ID

In

IP_PORT

In

Kiểu dữ liệu Mô tả
Bool
MB_SERVER cố gắn

"thụ động" với một th
Điều này có nghĩa là
chờ yêu cầu kết nối T
IP yêu cầu nào.
Nếu DISCONNECT
tồn tại, thì một kết nố
được bắt đầu.
Nếu DISCONNECT
tại, thì một thao tác n
đầu. Điều này cho ph
bạn kiểm soát khi kết
Bất cứ khi nào đầu và
không có hoạt động k
Uint
CONNECT_ID xác đ
nối trong PLC. Mỗi t
của lệnh MB_CLIEN
phải chứa một tham s
nhất.
Uint
Giá trị mặc định = 50
định cổng IP sẽ được
cầu kết nối từ một M
Các số cổng TCP này
kết nối thụ động MB
80, 102, 123, 5001, 3


MB_HOLD_RE
G


In_Ou
t

Variant

NDR

Out

Bool

DR

Out

Bool

ERROR

Out

Bool

STATUS

Out

Word


34964.
Con trỏ tới đăng ký MB_SERVER
Modbus: Đăng ký lưu giữ phải là một DB
toàn cục chuẩn hoặc địa chỉ bộ nhớ M. Khu
vực bộ nhớ này được sử dụng để giữ các
giá trị mà một Modbus Client được phép
truy cập sử dụng các chức năng đăng ký
Modbus 3 (read), 6 (Write) và 16 (Write).
Dữ liệu mới sẵn sàng: 0 = Không có dữ
liệu mới, 1 = Chỉ ra rằng dữ liệu mới đã
được viết bởi một Modbus Client.
Dữ liệu Đọc: 0 = Không đọc dữ liệu, 1 =
Cho biết dữ liệu đã được đọc bởi một
Modbus Client.
Bit ERROR là TRUE cho một lần quét, sau
khi thực thi MB_SERVER đã bị chấm dứt
với lỗi. Giá trị mã lỗi tại tham số STATUS
chỉ hợp lệ trong chu trình đơn mà ERROR
= TRUE.
Mã điều kiện thực hiện.

MB_SERVER cho phép các mã chức năng Modbus (1, 2, 4, 5, và 15) đến đọc hoặc
ghi các từ và bit trực tiếp trong quá trình xử lý hình ảnh và hình ảnh đầu ra của
CPU S7-1200. Đối với mã chức năng truyền dữ liệu (3, 6 và 16), tham số
MB_HOLD_REG phải được định nghĩa là một kiểu dữ liệu lớn hơn một byte.
Bảng dưới đây cho thấy việc lập bản đồ các địa chỉ Modbus cho hình ảnh quá trình
trong CPU.

Các mã chức năng hàm gửi tin đến Modbus mã chức năng mã (3, 6 và 16) đọc
hoặc viết các từ trong một thanh ghi Modbus đang nắm giữ, có thể là một dải địa



chỉ bộ nhớ M hoặc một khối dữ liệu. Kiểu đăng ký đang nắm giữ được chỉ định bởi
tham số MB_HOLD_REG.
NOTE:
Gán tham số MB_HOLD_REG:
Modbus Holding Register có thể có trong một DB toàn cục tiêu chuẩn hoặc địa chỉ
bộ nhớ M.
Đối với đăng ký giữ Modbus trong bộ nhớ M, hãy sử dụng định dạng Bất kỳ Con
trỏ chuẩn nào. Đây là định dạng: P # "Bit Address" "Data Type" "Length".
Một ví dụ cụ thể là P # M1000.0 WORD 500

Multiple server connections:
Kết nối máy chủ cá nhân phải tuân theo các quy tắc sau:
● Mỗi kết nối MB_SERVER phải sử dụng một DB riêng biệt.
● Mỗi kết nối MB_SERVER phải được thiết lập với số cổng IP duy nhất. Chỉ có 1
kết nối cho mỗi cổng được hỗ trợ.
● Mỗi kết nối MB_SERVER phải sử dụng một ID kết nối duy nhất.
● MB_SERVER phải được gọi riêng cho mỗi kết nối (với DB tương ứng của nó).
ID kết nối phải là duy nhất cho mỗi kết nối cá nhân. Điều này có nghĩa là một ID
kết nối duy nhất, duy nhất chỉ được sử dụng với mỗi cá thể cá thể DB. Tóm lại, DB
thể hiện và ID kết nối được ghép nối với nhau và phải là duy nhất cho mọi kết nối.


1.1 HR_Start_Offset:
Địa chỉ đăng ký giữ Modbus bắt đầu ở 40001. Các địa chỉ này tương ứng với địa
chỉ bộ nhớ PLC khởi đầu của thanh ghi giữ. Tuy nhiên, bạn có thể cấu hình biến
"HR_Start_Offset" để bắt đầu địa chỉ đăng ký giữ Modbus ở giá trị khác thay vì
40001.
Ví dụ, nếu đăng ký giữ được cấu hình để bắt đầu ở MW100 và dài 100 từ. Khoản

bù của 20 chỉ định địa chỉ đăng ký giữ lại 40021 thay vì 40001. Bất kỳ địa chỉ nào
dưới 40021 và cao hơn 40119 sẽ dẫn đến lỗi địa chỉ.


1.2 System data type TCON_IP_V4 for connections to IPv4 stations:
Kiểu kết nối này chỉ được hỗ trợ cho việc gửi các kết nối UDP tới các đối tác
truyền thông với một địa chỉ IP cố định.
Để nhận, ActiveEstablished = 0 phải được đặt.


1.3 MB_SERVER example: Multiple TCP connections:
Bạn có thể có nhiều kết nối máy chủ Modbus TCP. Để thực hiện việc này,
MB_SERVER phải được thực hiện độc lập cho mỗi kết nối. Mỗi kết nối phải sử
dụng một DB, ID kết nối và cổng IP độc lập. S7-1200 cho phép chỉ có một kết nối
cho mỗi cổng IP.
Để có hiệu suất tốt nhất, MB_SERVER nên được thực hiện mỗi chu kỳ cho mỗi
kết nối.
Network 1: Kết nối #1 với IP_PORT, ID kết nối và DB độc lập:


Network 2: Kết nối #2 với IP PORT, ID kết nối và DB độc lập:

MB_CLIENT example 1: Multiple requests with common TCP connection:


×