第6章S7-1200的通信与故障诊断6.1网络通信基础6.1.1计算机通信的国际标准1.开放系统互连模型开放系统互连模型详细描述了通信功能的7个层次,某些现场总线只使用第1、2、7层。物理层的下面是物理媒体,例如双绞线和光纤等。物理层定义了传输媒体端口的机械、电气功能和规程的特性。数据链路层的数据以帧为单位传送,每一帧包含数据和同步信息、地址信息和流量控制信息等。通过校验、确认和要求重发等方法实现差错控制。应用层为用户的应用服务提供信息交换,为应用接口提供操作标准。2.IEEE802通信标准(1)CSMA/CD(带冲突检测的载波侦听多路访问)的基础是以太网。每个站都是平等的,采用竞争方式发送信息到传输线上,为了防止冲突,“先听后讲”和“边听边讲”。其控制策略是竞争发送、广播式传送、载体监听、冲突检测、冲突后退和再试发送。以太网越来越多地在底层网络使用。(2)令牌总线令牌绕逻辑环周而复始地传送。要发送报文的站等到令牌传给自己,判断为空令牌时才能发送报文。令牌沿环网循环一周后返回发送站时,如果报文已被接收站复制,发送站将令牌置为“空”,送上环网继续传送,以供其他站使用。(3)主从通信方式主从通信网络有一个主站和若干个从站。主站向某个从站发送请求帧,该从站接收到后才能向主站返回响应帧。主站按事先设置好的轮询表的排列顺序对从站进行周期性的查询。3.现场总线及其国际标准IEC对现场总线的定义是“安装在制造和过程区域的现场装置与控制室内的自动控制装置之间的数字式、串行、多点通信的数据总线”。IEC61158第4版采纳了经过市场考验的20种现场总线。其中约一半是实时以太网。西门子公司支持类型3(PROFIBUS)和类型10(PROFINET)。IEC62026是供低压开关设备与控制设备使用的控制器电气接口标准。西门子公司支持执行器传感器接口(AS-i)。6.1.2SIMATIC通信网络西门子的工业自动化通信网络SIMATICNET的顶层为工业以太网,可以集成到互联网。PROFIBUS用于少量和中等数量数据的高速传送。AS-i是底层的低成本网络。通用总线系统KNX用于楼宇自动控制。IWLAN是工业无线局域网。各个网络之间用链接器或有路由器功能的PLC连接。MPI(多点接口)是SIMATIC产品使用的内部通信协议,可以建立传送少量数据的低成本网络。PPI(点对点接口)是用于S7-200和S7-200SMART的通信协议。点对点(PtP)通信用于特殊协议的串行通信。2.PROFINETPROFINET是基于工业以太网的开放的现场总线标准。使用PROFINETIO,现场设备可以直接连接到以太网。通过代理服务器,PROFINET可以透明地集成现有的PROFIBUS设备。PROFINET的实时(RT)通信功能典型的更新循环时间为1~10ms。同步实时(IRT)功能用于高性能的同步运动控制,响应时间为0.25~1ms。IRT通信需要特殊的交换机的支持。PROFINET同时用一条工业以太网电缆实现IT集成化领域、实时自动化领域和同步实时通信。PROFINET支持故障安全通信的标准行规PROFIsafe和驱动器配置行规PROFIdrive。3.PROFIBUSPROFIBUS是开放式的现场总线,传输速率最高12Mbit/s,最多可以接127个从站。PROFIBUS提供了下列3种通信服务:1)PROFIBUS-DP(分布式外部设备)用于PLC与分布式I/O(例如ET200)的通信。主站之间的通信为令牌方式,主站与从站之间为主从方式。2)PROFIBUS-PA(过程自动化)用于过程自动化的现场传感器和执行器的低速数据传输,可以用于防爆区域的设备与PLC的通信。使用屏蔽双绞线电缆,由总线提供电源。3)PROFIBUS-FMS(现场总线报文规范)已被以太网代替,很少使用。此外还有用于运动控制的总线驱动技术PROFIdrive和故障安全通信技术PROFIsafe。6.2基于以太网的开放式用户通信S7-1200/1500的CPU集成的PROFINET接口是10M/100Mbit/s的RJ45以太网口,可以使用标准的或交叉的以太网电缆。支持TCP、ISO-on-TCP、UDP和S7通信。6.2.1S7-1200之间的ISO-on-TCP和TCP协议通信1.开放式用户通信基于CPU集成的PN接口的开放式用户通信用函数块建立和断开通信连接,发送和接收数据。TSEND_C和TRCV_C同时具有建立、断开连接和发送、接收数据的功能。2.组态CPU的硬件生成项目“1200_1200ISO_C”,两台PLC为CPU1215C,PN接口的IP地址为192.168.0.1和192.168.0.2,子网掩码为默认的255.255.255.0。启用MB0做它们的时钟存储器字节。3.组态CPU之间的通信连接打开网络视图,用“拖拽”的方法连接PLC_1和PLC_2的以太网接口,出现绿色的以太网线和名称为“PN/IE_1”的连接。4.验证通信是否实现的典型程序结构双方生成保存发送和接收数据的数据块DB1(SendData)和DB2(RcvData),去掉“优化的块访问”属性。在数据块中生成有100个整数元素的数组。在OB100中用指令FILL_BLK将双方DB1中要发送的100个整数初始化为16#1111和16#2222,将保存接收数据的DB2的100个整数清零。在OB1中用周期为0.5s的时钟存储器位M0.3的上升沿,将要发送的第一个字DB1.DBW0加1。5.调用TSEND_C和TRCV_C在OB1中调用TSEND_C指令发送数据,调用TRCV_C指令接收数据,自动生成它们的背景数据块。6.组态连接参数选中指令TSEND_C,然后选中下面的巡视窗口的“属性组态连接参数”,伙伴的“端点”设为PLC_2,连接类型为ISO-on-TCP。选中“本地”的“连接数据”下拉式列表中的“新建”,自动生成连接描述数据块“PLC_1_Send_DB”(DB5)。用同样的方法生成PLC_2的接描述数据块“PLC_2_Send_DB”(DB5)。用单选框设置PLC_1主动建立连接。采用默认的传输服务访问点TSAP。双方组态“连接参数”的对话框的结构相同。7.TSEND_C和TRCV_C的参数TSEND_C的参数的意义如下:在请求信号REQ的上升沿,根据DB5中的连接描述,发送数据。发送成功后,DONE在一个扫描周期内为1。CONT为1时建立和保持连接。为0时断开连接。LEN为默认值0时,发送DATA定义的所有的数据。COM_RST为1时,断开现有的通信连接,新的连接被建立。BUSY为1时任务尚未完成。ERROR为1时出错,STATUS中是错误的详细信息。指令TRCV_C的EN_R为1时准备好接收数据,CONT和EN_R均为1时连续接收数据。RCVD_LEN是实际接收的数据的字节数。8.硬件通信实验的典型方法通过交换机或路由器连接计算机和两块CPU的以太网接口,下载程序后令两块CPU为RUN模式。用监控表监视两块CPU的DB2中接收到的部分数据。将两块CPU的TSEND_C和TRCV_C的参数CONT(M10.1和M11.1)均置位为1,建立起通信连接。双方的DB2.DBW0应动态变化。通信正常时令M10.1或M11.1为0,建立的连接被断开,CPU将停止发送或接收数据。接收方的DB2.DBW0停止变化。9.仿真实验选中PLC_1,单击工具栏上的“开始仿真”按钮,出现S7-1200的仿真软件,下载程序后仿真PLC进入RUN模式。用同样的方法将PLC_2的程序下载到另一台仿真PLC。调试程序的方法与硬件PLC相同。使用TCP协议的通信将项目另存为名为“1200_1200TCP_C”的项目。将“连接类型”改为TCP,“伙伴端口”为默认的2000,用户程序和组态数据不变。两个项目的实验方法和实验结果相同。6.2.2S7-1200之间的UDP协议通信1.组态连接参数项目“1200_1200UDP”的硬件结构与上一节的相同。通信双方在OB1中用指令TCON建立连接,用指令TDISCON断开连接。选中TCON,然后选中巡视窗口的“属性组态连接参数”,设置通信伙伴为“未指定”,连接类型为UDP。不能设置“主动建立连接”单选框。选中“连接数据”下拉式列表中的“新建”,自动生成连接描述数据块“PLC_1_Connection_DB”(DB4)。本地端口号采用默认的2000。双方组态“连接参数”的对话框的结构相同。2.生成定义UDP连接参数的数据块在“添加新块”对话框生成类型为TADDR_Param的全局数据块DB7,将它的名称修改为“接口参数”。UDP连接需要用DB7来设置远程通信伙伴的IP地址和端口号,双方的本地端口号应相同。在程序运行过程中修改DB7中通信伙伴的IP地址和端口号,可以和不同的伙伴通信。3.编写发送与接收数据的程序在OB1中调用TUSEND和TURCV指令。在M0.3的上升沿,每0.5sTUSEND发送一次DB1中的数据。TURCV的接收使能输入EN_R为TRUE,准备好接收数据,接收的数据用DB2保存。LEN为默认值0时,发送或接收用参数DATA定义的所有的数据。RCVD_LEN是实际接收的数据字节数。参数ADDR的实参为DB7。其他参数的意义与TSEND_C和TRCV_C的同名参数相同。4.通信实验UDP通信不能仿真。用以太网电缆连接计算机和两块CPU的以太网接口,将用户程序和组态信息分别下载到两块CPU,令它们处于运行模式。用双方的监控表分别监控两块CPU的TCON和TDISCON的REQ输入M10.0和M10.4,以及DB2中接收到的DBW0、DBW2和DBW198。用DB7设置远程通信伙伴的IP地址和端口号,运行时用监控表令双方的TDISCON的REQ为0,在TCON的REQ(M10.0)的上升沿,建立起通信连接,开始传输数据。可以用TDISCON的请求信号M10.4的上升沿断开连接,停止数据传输。6.2.3S7-1200与S7-300/400之间的开放式用户通信1.S7-1200与S7-300/400的以太网通信概述S7-1200与S7-300/400集成的PN接口之间的开放式用户通信可以使用ISO-on-TCP、TCP和UDP协议。可以用STEP7V5.5对S7-300/400编程。本节主要介绍S7-300/400基于博途的开放式用户通信。2.S7-300/400的组态与编程项目“300_1200TCP”的PLC_1为CPU314-2PN/DP,CPU_2为CPU1215C。它们的IP地址分别为192.168.0.1和192.168.0.2。启用双方的MB0为时钟存储器字节。为PLC_1生成DB1和DB2,在数据块中分别生成有100个整数元素的数组。不启用“优化的块访问”属性。在OB100中预置DB1中要发送的数据区,将DB2中保存接收到的数据的数据区清0。在循环周期为0.5s的OB33中,用ADD指令将要发送的第一个字DB1.DBW0加1。在OB1中调用指令TCON建立连接,调用TDISCON断开连接。DB3是组态连接时自动生成的连接描述数据块。选中TCON,然后选中下面的巡视窗口的“属性组态连接参数”。设置通信伙伴的“端点”为“未指定”,IP地址为192.168.0.2。连接类型为TCP,由S7-300主动建立连接,本地端口号采用默认的2000。在OB1中调用TSEND,每0.5s发送一次DB1中的100个整数;调用TRCV接收数据,将接收到的100个整数保存到DB2。LEN是发送或接收的最大字节数,RCVD_LEN是实际接收到的字节数。3.S7-1200的组态与编程在CPU1215C的OB1中,用周期为0.5s的时钟脉冲M0.3将要发送的第一个字DB1.DBW0加1。调用TCON、TDISCON、TSEND和TRCV的程序与PLC_1的基本上相同。TSEND和TRCV的参数LEN被隐藏。4.通信实验通信实验的方法和结果与项目“1200_1200UDP”的基本上