两台S7-1200 PLC之间的Modbus TCP통신

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

两台S7-1200 PLC之间的Modbus TCP通信

개요

在自动化和控制系统中,Modbus TCP프로토콜被广泛用于PLC之间的통신。本文将探讨如何在两台S7-1200 PLC之间实现Modbus TCP통신,重点介绍클라이언트的编程和통신过程。

实验환경设置

  • 操作系统: WIN7 SP1 专业版 64 位
  • 编程软件: STEP 7 Professional V13 SP1 Update 5
  • 系统硬件: CPU1212C 6ES7212-1AE40-0XB0 V4.1 和 CPU1215C 6ES7215-1AG40-0XB0 V4.1

Modbus TCP통신基本설정

  • 클라이언트: CPU 1212C
  • 服务器: CPU 1215C
  • IP 주소: 클라이언트 192.168.0.6, 服务器 192.168.0.4
  • 포트号: 클라이언트 0 服务端 502
  • 硬件标识符: 64
两台S7-1200 PLC之间的Modbus TCP通信插图

硬件标识符是在“设备구성(SCADA)”中,双击PROFINET 인터페이스,然后在“属性中的“硬件标识符”中보기。

S7-1200作为클라이언트的编程及통신过程

  • S7-1200 클라이언트侧需要调用 MB CLIENT 指令块。
  • 该指令块主要完成客户机和服务器的 TCP 연결、명령 보내기消息수신响应以及控制服务器断开的工作任务。

调用 MB_CLIENT

将MB_CLIENT 指令块在程序块>OB1”中程序段里调用,调用时会自动生成背景 DB,클릭确定即可

两台S7-1200 PLC之间的Modbus TCP通信插图1

MB_CLIENT 各脚定义:

  • REQ: 与服务器之间的통신请求,上升沿有效。
  • DISCONNECT: 通过该매개변수,可以控制与ModbusTCP服务器建立和终止연결。0:建立연결;1:断开연결。
  • MB MODE: 选择Modbus请求모드(읽기、쓰기或诊断)。
  • MB_데이터_ADDR: 由"MB_CLIENT“指令所访问데이터的시작주소。
  • MB 데이터 LEN:데이터길이:데이터访问的位或字的个数。
  • MB_데이터_PTR: 指向Modbus데이터레지스터的指针。
  • CONNECT:指向연결설명结构的指针。使用TCON_IP_v4데이터유형。
  • DONE: 最后一个作业成功完成,바로将출력매개변수DONE置位为"1"。
  • BUSY:作业状态位:0:无正在处理的"MB_CLIENT"作业;1:"MBCLIENT'作业正在处理。
  • ERROR:错误位: 0:无错误:1:出现错误,错误原因보기STATUS。
  • STATUS: 指令的详细状态信息。

CONNECT 引脚的指针유형

创建TCON_IP_v4结构:

  • 需要创建一个全局데이터块 DB2,并在其中定义TCON IP v4데이터结构,用于存储통신설정。
  • 双击열기 DB2,定义변수名称为“aa”,데이터유형为TCON IP v4” (可将 TCON IP V4 拷贝到对话框中) ;
  • 클릭“回车”按键,该데이터유형结构创建完毕
两台S7-1200 PLC之间的Modbus TCP通信插图2

TCON IP v4데이터结构的引脚定义설명如下:

两台S7-1200 PLC之间的Modbus TCP通信插图3

注意:

  • CONNECT引脚的填写需要用符号寻址的방식
  • TCON_IP_v4 是系统데이터유형,不是在 PLC 데이터유형中创建
  • LocalPort 一般使用默认值 0,意思是本地使用随机포트

创建 MB_데이터_PTR 데이터缓冲区

1.创建一个全局데이터块 DB3,创建方法可以参考图 2,连同上步创建的 DB2 位于 CPU 程序块中;

生成的两个 DB 块名称:

两台S7-1200 PLC之间的Modbus TCP通信插图4

2.建立一个 Word 数组的데이터유형,以便통신中存放데이터;MB_데이터_PTR 데이터缓冲区结构:

两台S7-1200 PLC之间的Modbus TCP通信插图5

注意

  • 指定的데이터缓冲区可为 DB 块或M存储区주소中;
  • DB 块可为优化的데이터块,也可为표준的데이터块结构;
  • 若为优化的데이터块结构,必须是基本데이터유형数组;
  • 若为표준的데이터块结构,以指针的방식填写该引脚;
  • MB_데이터_PTR 指定的데이터缓冲区必须足够大,至少达到MB_데이터_LEN 个位 (访问입력位、출력位时) 或字 (访问유지 레지스터、입력字时) ;
  • 本文以표준的데이터块 (默认) 为例进行编程。

修改DB块属性为표준的块结构:

两台S7-1200 PLC之间的Modbus TCP通信插图6

클라이언트侧完成指令块编程

调用 MB_CLIENT 指令块,使用기능 코드 03 从服务器中읽기 2个유지 레지스터的值,MB_MODE =0,MB_데이터_ADDR =40001,MB_데이터_LEN =2

两台S7-1200 PLC之间的Modbus TCP通信插图7

注意:

  • 对于本例来说,伙伴是另一个 S7-1200,实际上也可换做任意支持 Modbus TCP 服务器的设备,只需在매개변수引脚设置合适值,并在 CONNECT 设置正确통신매개변수即可。
  • 如果 S7-1200作为 Modbus TCP 클라이언트需要同时연결多个 Modbus TCP 服务器,那么需要使用多个 MB_CLIENT;
  • 如果一个 Modbus TCP 연결里有多个통신作业,且每个作业调用一次 MB_CLIENT ,那么每次调用必须使用相同的背景데이터块,CONNECT 也使用相同的매개변수

下载与测试

完成编程后,将整个项目下载到S7-1200 PLC。在服务器侧准备就绪后,通过触发MB CLIENT指令块的REQ引脚的上升沿来启动통신。읽기到的데이터将被存放在MB데이터 PTR引脚指定的DB块변수中。

结论

通过以上步骤,两台S7-1200 PLC之间的Modbus TCP통신可以被成功实现。클라이언트的编程涉及到详细的指令块설정和데이터结构的定义,这对于实现高效且可靠的통신至关重要。这种통신方法在산업 자동화中的적용非常广泛,为设备间的데이터交换提供了一个稳定的平台。

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注