基于PROFINET协议实现工控机与S7-1200的远程通信
2019-09-25陈亮彭林任彦仰
陈亮 彭林 任彦仰
摘要:PROFINET协议是新一代基于工业以太网技术的自动化总线标准,也是目前占主流地位的工业以太网标准之一,通过PROFINET协议可以方便地实现工业现场设备间的远程通信。本文采用S7.net开源库实现了工控机与西门子S7-1200 PLC远程通信,给出了实现流程和相关例程,过程简单,且具备较强实用性。
关键词:PROFINET协议;工控机;PLC;远程通信
中图分类号:TP368.1 文献标识码:A 文章编号:1007-9416(2019)06-0024-01
0 引言
随着现代工业过程自动化控制技术及网络通信技术的发展,工业现场自动控制系统中常采用工控机作为上位机完成信息处理和决策,再通过工业网络与现场工控设备连接实现生产过程的自动化处理。工业以太网是应用于工业控制领域的以太网技术,在技术上与商用以太网(IEEE 802.3标准)兼容,产品设计时,在材质的选用、产品的强度、适用性以及实时性、可互操作性、可靠性、抗干扰性、本质安全性等方面能满足工业现场的需要[1]。工业以太网的通信速率高、资源共享能力强、可持续发展潜力大,市场占有率不断提高,是未来工业通信技术的主要发展方向。
以PROFINET协议为例,在分散式现场设备中可以直接通过使用PROFINET I/O实现系统集成,同时可与Profibus、Interbus等现场总线技术无缝集成,从而实现从I/O级直至协调管理级的基于组件的分布式自动化系统的体系结构方案。PROFINET协议可在一根电缆上提供适应3种类型通信信道:标准通道(TCP/IP,UPD/IP),实时通道RT(Real Time)和等时同步通道IRT(Isochronous Real Time),能为紧要任务提供最低限度的性能保证服务,同时也能为非紧要任务提供尽力服务[2][3]。
基于PROFINET协议实现工业现场远程通信的研究较多,如基于OPC技术手段[4][5]。采用本文采用工控机为上位机,西门子S7-1200 PLC作为下位机的方式,介绍了使用S7.net开源库实现基于PROFINET协议的远程通信,具备较强的实用性。
1 准备工作
1.1 PC端的配置
S7.net开源库支持S7-200、S7-300、S7-400、S7-1200、S7-1500等系列的西门子PLC,最新版本号为0.3.0,可通过GitHub站点获取并免费使用,需要遵循开源代码使用规范。S7.net下載链接为:https://github.com/killnine/s7netplus。
S7.net开源库使用Visual Studio 2017集成开发环境的C#语言编写为动态链接库,支持组件版本为.NET Framework 4.5.2。程序开发时需要在运行Windows操作系统的PC端安装Visual Studio 2017或以上版本的集成开发环境,同时确保.NET Framework组件版本相同或高于当前版本。程序的运行环境只需要存在具备相应的.NET Framework组件。
为了对S7-1200 PLC进行配置,需要在PC端安装西门子博途(TIA Portal)集成自动化编程软件(目前最高版本为V14)进行PLC组态配置。
1.2 PLC硬件组态配置
西门子S7-1200 PLC是一款紧凑型、模块化的PLC,可完成简单逻辑控制、高级逻辑控制、HMI和网络通信等任务。S7-1200 PLC集成了PROFINET接口,可通过RJ-45连接器直接连接本地网络,采用TIA Portal软件进行相关配置后,才能实现与第三方设备进行通信,具体步骤如下:(1)启动TIA Portal软件,建立新的项目文件,将需要使用的PLC设备添加项目文件中。(2)确认并记录设备的机架号和插槽号。(3)设置PLC的IP地址与工控机为同一网段。(4)通过“设备组态”→“常规”→“防护与安全”→“连接机制”路径,选中“允许来自远程对象的PUT/GET通信访问”选项,确保远程通信能正常工作。(5)编写PLC程序,建立需要访问的数据块文件。在数据块文件的属性选项中,取消“优化的块访问”选项,使用绝对地址进行数据操作。
2 程序实现
获取S7.net开源库的动态链接文件(S7.net.dll)后,将其添加Visual Studio 2017集成开发环境建立的工程文件中,在工程项目文件中引用库文件就可以直接使用相应功能接口函数,例程如下:using S7.net;S7.net开源库具备发起连接、断开连接、连接检查、错误处理等基本接口功能。数据的读写操作上,S7.net开源库封装了按字节、单变量、结构体、类等多种操作方式。S7.net开源库通信流程,如图1所示。
利用S7.net开源库实现PC与S7-1200PLC远程通信的部分例程和说明如下:(1)创建PLC实例。PlcPLC_S71200=newPlc(CpuType.S71200,”127.0.0.1”,0,1);创建一个S7-1200PLC实例,IP地址为127.0.0.1,机架号为0,插槽号为1。后续操作都是基于该实例进行。(2)与S7-1200建立连接,准备开始读写操作。PLC_S71200.open();(3)在连接成功之后,可进行远程读写操作。byte[]Data Bytes=ReadBytes(DataType.DataBlock,1,0,20)从数据区DB1地址偏移量为0的区域开始连续读取20字节的数据到DataBytes数组。该函数最大可支持200字节的一次性读取操作。byte[]DataBytes=“xxxxx”;Write(DataType.DataBlock,1,1,DataBytes);将DataBytes存放的信息写入到PLC的数据区DB1,地址偏移量为1。采用字节形式进行读写操作,形参的逻辑意义明显,操作正确性较高。如果程序开发人员对PLC的理解较深,可以使用单变量形式进行读写操作,可让程序更为简洁。例如:单独读取一个字节的信息,可以采用如下接口函数:byteresult=PLC_S71200.Read(“DB1.DBB0”);具有采用何种形式读写操作接口,开发人员可根据当前操作目的和习惯进行选择。(4)与S7-1200断开连接。PLC_S71200.Close();对S7-1200PLC频繁的进行读写操作时,需要保持连接状态。为了保证通信的可靠性,读写操作之前,建议检查当前连接状态,确保连接可靠。PLC_S71200.Isconnected();该方法可重新发起连接,并判断连接是否存活。
3 結语
基于PROFINET协议,采用S7.net开源库实现工控机与PLC之间的远程通信,需要对PLC进行正确的组态设置,再应用C#语言开发工具进行程序开发。整个过程简洁,易于理解,为工业现场远程通信的开发设计提供一种便捷的技术手段。
参考文献
[1] 于仲安,严慕秋.工业以太网技术的应用探讨[J].电器与能效管理技术,2006(1):43-47.
[2] 侯朝勇,庄童,胡娟,et al.PROFINET实时工业以太网通信技术分析[J].电子设计工程,2014(16):1-4.
[3] 谢素芬.工业以太网PROFINET性能优化及认证测试[J].制造业自动化,2017(9):72-74.
[4] 陈欣,王浩宇,郎朗.基于OPC技术的上位机与西门子PLC的通信[J].自动化与仪器仪表,2008(1):70-73.
[5] 黄希敏.基于C#语言的工业计算机与S7-300的OPC通讯[J].重型机械,2011(5):39-42.
Remote Communication Between IPC and S7-1200 Based on PROFINET Protocol
CHEN Liang, PENG Lin, Ren Yan-yang
(Electrical & Information Engineering Department, Sichuan Engineering Technical College, Deyang Sichuan 618000)
Abstract:PROFINET protocol is a new generation of automation bus standard based on Industrial Ethernet technology, and is also one of the mainstream standards of Industrial Ethernet. The remote communication between industrial field devices can be easily realized through PROFINET protocol. This paper shows how to realize the remote communication between IPC and S7-1200 PLC by S7.net open source library, and the process is simple and practical.
Key words:PROFINET protocol; IPC; PLC; Telecommunication