基于S7协议的PC与828D实时通信设计与实现
刘春生;吴庭贵;张人丰;王柱;王天雷
【摘 要】在分析西门子数控系统828D的S7-200/S7-300网络通信协议原理基础上,设计了一种基于S7协议的通信方法,可对828D的PLC变量、NC变量、R变量和刀具信息进行访问,以及检测其断开状态,实现了低成本方式获取系统的数据,有助于车间柔性制造系统(FMS)的建立.
【期刊名称】《机电工程技术》
【年(卷),期】2019(048)005
【总页数】4页(P80-83)
【关键词】828D数控系统;PLC;S7协议;报文分析
【作 者】刘春生;吴庭贵;张人丰;王柱;王天雷
【作者单位】广东科杰机械自动化有限公司,广东江门 529030;广东科杰机械自动化有限公司,
广东江门 529030;五邑大学智能制造学部,广东江门 529020;五邑大学智能制造学部,广东江门 529020;五邑大学智能制造学部,广东江门 529020
【正文语种】中 文
【中图分类】TG659
0 引言
信息化是时代发展的大趋势,“互联网+制造”融合推进了“工业4.0”的发展,其战略核心环节是建立数字化车间,实现生产过程的自动化、智能化、信息化。在工业数字化生产管理的发展要求中,实现数控系统的远程数据采集、数控车间的联网管理是推进数字化车间发展的一个重要基础[1-3]。实时将生产加工与机床运行状态信息上传至服务器,以及对机床发出执行指令并监控其执行状态是实现智能制造不可或缺的重要的组成部分。
西门子SINUMERIK 828D数控系统,广泛用于加工,制造企业。西门子数控系统提供多个访问机床数据的解决方案[4],如提供WinCC(Windows Control Center),可实现生产过程监控;通过SFTP协议可以操作机床内部文件(在一定权限内,可通过网络X130口或者X127口
进行文件上传、下载、删除、属性修改等);通过西门子的OPCUA协议读写828D的机床内部变量数据及状态,从而有效对机床的加工数据进行统计。但需要授权开通web server服务,增加额外的成本;如通过828D里PLC的S7通信协议,则不需开通OPCUA的授权,可读到西门子系统的NC变量与驱动变量,节省成本,有很好的柔性,适合于中小规模监控系统[5]。
1 西门子828D PLC及S7通信协议
1.1 西门子828D PLC
SINUMERIK 828D集成基于SIMATIC S7-200的PLC。其PLC采用循环扫描的方式,在每个扫描周期前,把所有输入的状态发送到输入映像寄存器,然后开始执行用户程序,其所有的用户子程序都是以0B1顺序调用。当扫描周期结束后把结果输出到输出映像寄存器以控制数控系统的实际输出,并以此循环往复执行。828D的PLC接口信号负责组织PLC和NC、PLC和HMI之间的信息交互。
PC可以通过828D的X127口或X130口访问PLC模块。但由于:①X127口具有自动分配IP功
能,其PLC模块的地址是固定为192.168.215.1,导致无法满足多机床组网功能;②X127口在控制面板外面,防护性差且网络布线不美观;③X130口是用户网络连接端口,其在面板背面且可手动分配IP地址,因此建议使用X130口进行车间组网,X127口只用作联机调试使用[6-7]。
为了能使PC通过X130口访问机床数据,须对机床作以下设置:
若使X130口接收S7报文,须修改防火墙设置,使防火墙允许通过tcp 102端口访问。828D防火墙设置如图1。X130口没有开启DHCP服务,须手动设置机床IP,且分配的IP与PC要处于同一网段。机床IP设置如图2。
图1 828D系统防火墙设置
图2 828DX130口IP设置
在828D上,首次在S7-200 PLC中使用DB块。不同DB块分别对应IO,NCK,HMI等。使用时可根据编写程序需要建立最多64个用户自定义数据块,其编号为DB9000-DB9063。可指定每个DB块是否掉电保持。DB块的结构不能修改,只能修改数据的初始值和实际值。网络
通信项目用到DB块有:DB2600,DB570X,DB120X。对于使用“Selected NCvariables”功能,需用到系统定义的特殊数据块(DB9900-DB9905)。
1.2 S7网络通信协议
S7通信协议是用于西门PLCS7-300/400体系的专有协议,可通过该协议进行通信和数据交换。
每个S7数据是以一个或几个COTP数据包进行传输。对每个S7数据包称作PDU(Protocol Data Unit,协议数据单元)。S7协议以函数取向或命令取向,它每次传输包括一个命令或者一个相应命令的响应。如果一个命令或响应超过一个协议数据单元大小,它会分成几个协议数据单元进行传输。S7数据包是以标定符0x32作为协议开始。每个命令包含:①包头;②参数组;③参数数据;④数据块。S7协议通信报文示意如图3所示。
图3 S7协议报文示意图
S7协议传输的数据包格式使用“大端”模式,地址由小向大增加,而数据从高位往低位放。而一般的PC使用的是“小端”模式存储数据[8]。
如PLC传输一双字数据DWORD 0x12345678,其数据结构如下:
PC存储响应的PLC数据结构如下:
这意味着,传输至PLC数据前必须做一次倒转,再发送至PLC。接收PLC响应的数据后做一次倒转,才能存储之PC内存。
西门子PLC有几个角:①客户端(Client);②服务端(Server);③同伴(Partner)。其中客户端只发出命令进行查询;服务端只对命令进行回馈;同伴角可以同时发出或响应命令。本文为实现PC与PLC进行网络通信,认定828D PLC模块为服务端,负责响应基于S7协议的报文消息,PC为模拟PLC客户端角,发出S7报文读写机床系统状态。
1.3 828D PLC与PC连接
828DPLC与PC连接连接的步骤如下:
(1)通过TCP102端口与PLC建立TCP连接;
(2)使用TSAP(Transport Service Access Point传输服务访问点),指出PLC的CPU位置,
用两个字节表示:第一个字节代表通信类型(1代表PG,2代表OP),第二字节代表CPU位置(机架号rack使用字节第5~7位表示,槽号slot使用第0~4位表示)。
编写的S7Comm通信库的连接函数如下:
int CS7Comm::Connect(const char*ip, int rack, int slot)
ip:代表X130设置的ip地址
rack:机架号
slot:槽号
对于一般828D系统组态,暂可以认为rack为0,slot为2。
1.4 828D S7协议指令
828DS7协议指令大概可分为:①数据读/写;②系统信息;③PLC控制(停止、热启动等);④日期和时间;⑤DB块读取。通过操作DB块的数据,可对机床的一些数据进行读/写。
2 NC变量的读写
PLC与NC数据交互是以一定的格式或步骤执行,通过机床的PLC对系统NC数据进行访问方法如下:
2.1 机床实际位置和余程的读取
通过PLC可读取机床的实际位置和余程,PLC请求NCK的机床位置格式如表1所示。
表1 PLC请求NCK的机床位置格式DB2600 BYTE 0001 PLC→NCK 7 -6 -5 -4 -3 -2 1轴余程实际位置0 -
对应DB5700.DBD0~DB5707.DBD0是轴1~8的实际机床位置,DB5700.DBD4~DB5707.DBD4就是轴1~8的余程。
假设读取X轴机床坐标位置,过程如下。
(1)通过网络使DB2600.DBX1.1置位。节选代码如下:
WriteArea(S7AreaDB,2600,1,1,S7WLBit,&sts);
其中:WriteArea为编写通信库修改PLC内存数据函数;第一个参数AreaDB为指定修改DB块,第二个参数为块号2600,第三个参数为byte 1,第四个参数为bit1,WLBit代表只修改1位,sts为要修改的值(此时sts应该为1,即置位)。
(2)读取机床位置。节选代码如下:tcp ip协议 opc ua
char chrPos[4];
int res=ReadArea(AreaDB, 5700, 0, 1, WLDWord,chrPos);
if(res!=0)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。