一种云端服务器与PLC PPI通信的网关
技术领域
本发明属于计算机通信技术领域,具体来说涉及一种云端服务器与PLC PPI通信的网关。
背景技术
随着自动化、计算机、通信、网络技术的发展以及互联网运用的普及,计算机控制与自动化系统由单机控制、现场总线、工业以太网络逐步迈进到互联网云端控制系统。作为底层现场控制的核心——PLC系统因其简单易用、可靠性高在目前的控制领域还是不可替代,特别是小型 PLC系统,在电力、化工、环保、铁路、燃气、自来水、医疗等行业作为远程数据采集、控制单元运用较多。比较流行、成熟的应用模式是服务器通过GPRS无线网络转RS485/422/232接口与PLC远程通信,其中GPRS-RS485/422/232网关对数据的传输都采用是比较简单、直接的透明传输方式。西门子S7-200 PLC提供RS485接口,支持点对点接口(PPI)协议,采用接收命令—响应—接收确认—返回数据的同步应答方式,响应第三方设备访问其I、Q、V、M数据区,为云端服务器的数据操作提供了极大地方便。采用透明传输方式的GPRS-RS485网关,适用范围广,但其只是起到了数据传递的作用,如果要实现PPI通信,PPI协议命令的生成、解析以及同步应答的任务都必须由云端服务器来完成。这实质上,造成云端服务器与S7-200 PLC的通信完全是串行通信了,云端服务器的通信速度受限于PLC PPI通信的能力。当远程监控对象点比较多、多用户同时对多个对象点访问时,云端服务器与远程PLC通信的任务会很重,这将严重影响系统数据采集的实时性和命令执行的时效性。
发明内容
本发明为了解决现有技术中存在的上述缺陷和不足,提供了一种云端服务器与PLC PPI通信的网关及方法。所述网关通过3G/4G无线通信网络主动与云端服务器建立通信连接,采用同步方式与PLC PPI通信,完成读、写PLC数据的任务,采用异步方式与云端服务器TCP/IP通信,侦听接收指令、返回操作结果,减轻无线网络流量,提高通信的效率,使云端服务器可简单、直接、高效地访问PLC数据区。
本发明的技术方案是:
一种云端服务器与PLC PPI通信的网关,所述网关包括微处理器、3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块、电源模块,微处理器分别和3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块连接,电源模块分别为微处理器、3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块供电,其特征在于,所述微处理器在上电启动后,首先向3G/4G无线模块发送一系列AT指令,使网关登录到3G/4G无线网络,并获取一个动态的IP 地址,若获知接入互联网之后,向云端服务器发送一帧带有IP 地址、网关ID的请求确认连接的数据,云端服务器在接收到所述数据帧后,提取出网关的IP 地址、网关ID登记到注册表中,并返回一条确认数据帧通知网关通信连接已建立,TCP/IP连接建立之后,所述网关定时向所述云端服务端发送心跳包,如果通信连接中断,则所述网关重新与所述云端服务器建立连接,恢复通信;在云端服务器与网关建立通信连接的情况下,网关接收云端服务器发送来的读PLC数据操作指令或写数据到PLC操作指令,并针对PLC执行相应的操作。
优选地,云端服务器与网关之间,采用异步方式执行完成一次操作指令。
进一步,3G/4G无线模块侦听接收操作指令IP数据包,拆解为操作指令格式为字节数组,并触发微处理器中断,微处理器产生中断,读取操作指令字节数组,存入存储区新指令队列中。
更进一步,所述微处理器从存储区新指令队列取出一条新指令,首先判断指令是否有效,若有效再判断是读命令还是写命令,然后分别根据PPI协议读、写命令的格式,生成读PLC操作命令字节数组有或写 PLC操作命令字节数组。
优选地,所述微处理器采用同步通信方式,通过RS485接口模块与PL C通信。
进一步,微处理器发送所述读或写PLC的操作命令字节数组到PLC,接收PLC的应答信号,再发送确认命令信号,然后接收PLC返回的数据字节数组,解析PLC返回的数据字节数组,最后生成包括界符、读出数据、结束标志在内的字节数组或者是完成标志的字符串返回给云端服务器;微处理器在读、写PLC的过程中,若发生故障,则生成 “操作失败!”的数据字符串返回给云端服务器;若读、写操作完成,则微处理器将返回给云端服务器的数据传送给3G/4G无线模块,若3G/4G无线信号较弱则等待发送。
更进一步,3G/4G无线模块将其串口接收字节数组封装成IP数据包,发送到3G/4G无线网络中。
本发明的有益效果:
本发明提供的网关起到了云端服务器远程访问底层PLC服务器的桥梁作用,借助于3G/4G无线网络公共无线网络的便捷解决了底层设备远程通信受地理环境条件限制的问题,主动向云端服务器申请通信连接,并始终保持与云端服务器通信的畅通,实现了对PPI协议简明的转换封装,使云端服务器可简单、直接、高效地访问PLC中的I、Q、V、M数据区;采用同步方式与PLC PPI通信,完成读、写PLC数据的任务,采用异步方式与云端服务器TCP/IP通信,侦听接收指令、返回操作结果,既保证了通信的稳定可靠又提高了通信的效率、降低了无线网络的流量,特别是在远程监控对象点较多、多用户同时对多个对象点访问的情况下,可大大地减轻云端服务器与远程S7-200 PLC通信的任务,提高了云端服务器远程访问S7-200 PLC的便捷性。
附图说明
图1为本发明云端服务器与PLC PPI通信的网关的结构框图。
图2为本发明云端服务器与PLC数据交换的方式及过程。
图3为本发明云端服务器操作命令数据格式与PPI协议数据格式的对照图。
图4为本发明网关微处理器的主程序流程图。
图5为本发明网关的中断接收指令程序流程图。
图6为本发明网关使用环境示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图对本发明的技术方案进行更详细地说明。显然,所示附图只是为了更好地说明本发明的技术方案,并不是本发明的最佳配置,所说明的实施例也只是本发明的一部分实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种云端服务器与PLC PPI通信的网关及数据交换方法,其中所述网关包括了微处理器、3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块、电源模块。所述微处理器分别和3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块、时钟电路、复位电路连接;所述电源模块分别为微处理器、3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块供电。所述云端服务器指部署在互联网云端的应用服务软件系统。优选地,所述的PLC指S7-200系列PLC。
所述3G/4G无线模块内嵌TCP/IP协议栈,用于将微处理器通过运营商的无线网关接入到互联网,接收云端服务器发送来的数据包和发送数据包到云端服务器。
所述RS485接口模块通过串行总线与PLC的PORT0、PORT1连接,用于将微处理器传送过来的数据发送到PLC的串口中或接收PLC串口的信号形成数据后传送给微处理器。
所述Wifi模块用于设定云端服务器固定IP地址、网关的ID号、RS485串口的地址、PLC的地址、串行通讯的波特率等参数。
所述存储模块用于存储云端服务器固定的IP地址、网关的ID、网关的地址、PLC的地址、串行通讯的波特率等参数。
所述状态显示模块用于电源的状态、系统的运行、自检、出错等信息。
云端服务器与PLC PPI通信的方法:
所述微处理器在上电启动后,首先向3G/4G无线模块发送一系列AT指令,使网关登录到3G/4G无线网络,并获取一个动态的IP 地址,若获知接入互联网之后,向云端服务器发送一帧带有IP 地址、网关ID的请求确认连接的数据。所述云端服务器在接收到所述数据帧后,提取出网关的IP 地址、网关ID登记到注册表中,并返回一条确认数据帧通知网关通信连接已建立。TCP/IP连接建立之后,所述网关定时向所述云端服务端发送心跳包。如果通信连接中断,所述网关重新与所述云端服务器建立连接,恢复通信。
优选地,所述云端服务器与网关建立通信连接后,采用事件触发方式,通过Socket数据连接通道向所述网关发送读PLC数据操作指令或写数据到PLC操作指令,读操作指令包括界符、网关ID、读命令、数据格式、数据个数、存储类型、地址偏移量、结束标志,写操作指令包括界符、网关ID、写命令、数据格式、数据个数、存储类型、地址偏移量、待写入数值、结束标志。所述操作指令格式为字节数组,经过TCP/IP模块封装成IP数据包,通过云端主机网卡发送到互联网中。
优选地,云端服务器与网关之间,采用异步方式执行完成一次操作指令。
操作指令IP数据包经过无线运营商网关转发到3G/4G无线骨干网中,3G/4G无线模块侦听接收IP数据包,拆解为操作指令格式为字节数组,并触发微处理器中断。所述微处理器产生中断,读取操作指令字节数组,存入存储区新指令队列中。
所述微处理器从存储区新指令队列取出一条新指令,首先判断指令是否有效,若有效再判断是读命令还是写命令,然后分别根据PPI协议读、写命令的格式,生成读PLC操作命令字节数组有或写 PLC操作命令字节数组。
优选地,所述微处理器采用同步通信方式,通过RS485接口模块与S7-200 PL C的PORT0或PORT1通信。所述微处理器发送所述读或写PLC的操作命令字节数组到PLC,接收PLC的应答信号,再发送确认命令信号,然后接收PLC返回的数据字节数组,解析PLC返回的数据字节数组,最后生成数包括界符、读出数据、结束标志在内的字节数组或者是完成标志的字符串返回给云端服务器。所述微处理器在读、写PLC的过程中,若发生故障,则生成 “操作失败!”的数据字符串返回给云端服务器。在读、写操作完成后,微处理器将返回给云端服务器的数据传送给3G/4G无线模块,若3G/4G无线信号较弱则等待发送。
3G/4G无线模块将其串口接收字节数组封装成IP数据包,发送到3G/4G无线网络中。
云端服务器接收Socket数据链接通道中的数据,处理、存储,同时提供给用户界面。
下面结合附图和实施例对本发明进一步说明。
图1为本发明的云端服务器与PLC PPI通信网关的逻辑结构图。参照图1,所述网关包括了微处理器、3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块、电源模块。所述微处理器分别和3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块、时钟电路、复位电路连接;所述电源模块分别为微处理器、3G/4G无线模块、RS485接口模块、Wifi模块、存储模块、状态显示模块供电。所述云端服务器指部署在互联网云端的应用服务软件系统。优选地,所述PLC指S7-200系列PLC。
所述微处理器模指嵌入式系统,内置Linux/Android操作系统、Apache(tomcat)Web容器。微处理器通过UART1与RS485接口模块相连,通过UART2 与3G/4G无线模块相连,通过USB接口 与Wifi模块相连。
所述3G/4G无线模块内嵌TCP/IP协议栈,用于接收云端服务器通过3G/4G无线网络发送来的IP数据包进行拆解并传递给微处理器;或者,将微处理器传递来的数据生成IP数据包通过3G/4G无线网络发送给云端服务器。
所述RS485接口模块通过串行总线与PLC的PORT0或PORT1连接,用于将微处理器传递过来的数据包形成信号发送到PLC的串口中或接收PLC串口的信号生成数据包后传递给微处理器。
优选地,所述Wifi模块用于设定云端服务器固定IP地址、网关的ID、网关的地址、PLC的地址、串行通讯的波特率等参数。所述Wifi模块在通电后,开热点与手机通讯,推送所述参数设定的Web页面,修改所述参数。所述的存储模块用于存储云端服务器固定的IP地址、网关的ID、网关的地址、PLC的地址、串行通讯的波特率等参数。所述的状态显示模块用于电源的状态、系统的运行、自检、出错等信息。
具体地,云端服务器与PLC PPI通信的方法包括:
所述微处理器在上电启动后,首先向3G/4G无线模块发送一系列AT指令,初始化、激活3G/4G无线模块,使3G/4G无线模块请求登录到3G/4G无线网络并获取到一个动态的IP地址,若获知3G/4G无线模块接入互联网之后,向云端服务器发送一帧带有网关的IP 地址、网关ID信息的请求确认TCP/IP连接的数据。所述云端服务器在接收到所述数据帧后,打开一个ServiceClient()线程来服务网关,并返回一条确认数据帧,通知网关连接已建立。当一个连接被建立后,每个网关就被赋予一个属于所述网关的套接字,同时,一个Client类的对象被建立,所述对象包含了网关的IP 地址、网关ID信息,所述信息被保存在一个数组列表中。所述网关与所述云端服务器的TCP/IP连接建立之后,所述网关定时向云端服务端发送心跳包,所述云端服务器定时检查网关的心跳,长时间未心跳则关闭网关的链接通道;如果连接中断,所述网关重新与所述云端服务器建立连接,恢复通信。
图2示出了云端服务器与PLC数据交换的方式及过程。如图2所示,所述云端服务器与网关建立通信连接后,采用事件触发方式,通过ServiceClient()线程向所述网关发送读PLC数据操作指令或写数据到PLC操作指令,读操作指令包括界符、网关ID、读命令、数据格式、数据个数、存储类型、地址偏移量、结束标志,写操作指令包括界符、网关ID、写命令、数据格式、数据个数、存储类型、地址偏移量、待写入数值、结束标志。所述操作指令格式为字节数组,经过TCP/IP模块封装成IP数据包,通过云端主机网卡发送到互联网中。
优选地,云端服务器与网关之间,采用异步方式执行完成一次操作指令。操作指令IP数据包经过无线运营商网关转发到3G/4G无线骨干网中,3G/4G无线模块侦听接收IP数据包,拆解为操作指令格式为字节数组,并触发微处理器中断。所述微处理器产生中断,如图5所示,期间读取操作指令字节数组,存入存储区新指令队列中。
图3为本发明云端服务器操作命令数据格式与PPI协议数据格式的对照图。如图3所示,所述微处理器从存储区新指令队列取出一条新指令,首先判断网关ID号与网关ID设定值是否相符,不符合返回“指令无效!”;如果ID符合,则判断是读命令还是写命令,然后分别根据PPI协议读、写命令的格式,生成包括界符(68H)、报文数据长度、重复数据长度、界符(68H)、PLC地址、网关地址、功能码、目的服务存取点、源服务存取点、数据单元、校验码、结束分界符(16H)在内的操作命令字节数组。读PLC操作命令字节数组有33个字节,写PLC操作命令字节数组有38(写位、字节数据)个或40个字节(写字、双字数据)。
如图2所示,微处理器采用同步通信方式,通过RS485接口模块与S7-200 PLC的PORT0或PORT1通信。本发明以读M0.0为实施例,读功能码为6CH,数据格式码为01H,数据个数码为01H 00H,存储类型码为00H 83H,地址偏移量码为00H 00H 00H, 如图3所示,云端服务器读M0.0的操作命令字节数组为68H XXH XXH XXH 6CH 01H 01H 00H 00H 83H 00H 00H00H 16H(其中XXH、XXH、XXH为网关ID的16进制值,高位在前),假设PLC地址为02H、网关地址为01H,网关读M0.0的操作命令字节数组为68H 1BH 1BH 68H 02H 01H 6CH 32H 01H 00H00H 00H 00H 00H 0EH 00H 00H 04H 01H 12H 0AH 10H 01H 00H 01H 00H 00H 83H 00H00H 00H 66H 16H。所述微处理器发送所述网关读M0.0的操作命令字节数组到PLC,接收PLC的应答信号(E5H),再发送确认命令信号(10H 02H 01H 5CH 5FH 16H),然后接收PLC返回的数据字节数组如:68H 16H 16H 68H 01H 02H 08H 32H 03H 00H 00H 00H 00H 00H 02H00H 05H 00H 00H 04H 01H FFH 03H 00H 01H 00H 4FH 16H(假设M0.0的当前值为0),解析所述PLC返回的数据字节数组,优选地,如图3所示,最后生成返回给云端服务器的数据字节数组68H 00H 16H。本发明以写VD100=50H为实施例,写功能码为7CH,数据格式码为06H,数据个数码为01H 00H,存储类型码为01H 84H,地址偏移量码为00H 03H 20H, 如图3所示,云端服务器写VD100=50H的操作命令字节数组为68H XXH XXH XXH 7CH 06H 01H 00H 01H84H 00H 03H 20H 00H 00H 00H 50H 16H(其中XXH、XXH、XXH为网关ID的16进制值,高位在前),假设PLC地址为02H、网关地址为01H,网关写VD100=50H的操作命令数组为68H 23H 23H68H 02H 01H 6CH 32H 01H 00H 00H 00H 00H 00H 0EH 00H 08H 05H 01H 12H 0AH 10H06H 00H 01H 00H 01H 84H 00H 03H 20H 00H 04H 00H 20H 00H 00H 00H 50H 0DH 16H。所述微处理器发送所述网关写VD100=50H的操作命令字节数组到PLC,接收PLC的应答信号(E5H),再发送确认命令信号(10H 02H 01H 5CH 5FH 16H),然后接收PLC返回的数据字节数组,解析所述PLC返回的数据字节数组如:68H 12H 12H 68H 00H 02H 08H 32H 03H 00H00H 00H 00H 00H 02H 00H 01H 00H 00H 05H 01H FF 47 16,优选地,如图3所示,最后生成返回给云端服务器的数据字符串“OK!”。所述微处理器在读、写PLC的过程中,若发生故障,则生成返回给云端服务器的数据字符串“操作失败!”。在读、写操作完成后,微处理器将返回给云端服务器的数据传送给3G/4G无线模块,若3G/4G无线信号较弱则等待发送。
3G/4G无线模块将其串口接收字节数组封装成IP数据包,发送到3G/4G无线网络中。云端服务器通过ServiceClient()线程接收Socket数据链接通道中的数据,处理、存储,同时提供给用户界面。
图4为本发明网关微处理器的主程序及中断接收指令程序流程图。如图4所示,所述微处理器在上电系统自检初始化之后,先配置无线模块,然后申请无线通道连接,链接成功后,再登录云端服务器建立TCP/IP连接,等候接收指令。微处理器由3G/4G无线模块产生中断来接收云端服务器的指令,循环判断新指令队列中有无新指令,解读指令为读PLC中的数据还是写数据到PLC中,然后执行相应的操作命令,完成操作命令之后,返回操作结果给云端服务器,若心跳时间到,发送心跳包给云端服务器,最后循环判断新指令队列。
基于上述实施例,若微处理器通过程序获知3G/4G无线模块、SIM卡死机以及系统出现错误,则对网关进行断电复位,重新启动模块。
图6示出了本发明网关的使用环境。本发明提供的网关实现了对PPI协议简明的转换封装,使云端服务器可简单、直接、高效地访问PLC中的I、Q、V、M数据区,采用同步方式与PLC PPI通信,采用异步方式与云端服务器TCP/IP通信,既保证了通信的稳定可靠又提高了通信的效率、降低了无线网络的流量,特别是在远程监控对象点较多、多用户同时对多个对象点访问的情况下,可大大地减轻云端服务器与远程S7-200 PLC通信的任务,提高了云端服务器远程访问S7-200 PLC的便捷性。
上面结合附图对本发明的实施方式作了详细的说明,但是本发明不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。