这是本文档旧的修订版!
远程编程技术意指在远离设备的情况下,通过某种手段对远程的PLC或其他设备进行编程监控,然后根据监控数据对程序进行修改控制。FreeIOE的远程编程分为基于网络的远程编程和基于串口的远程编程。本文是对基于网络的远程编程功能进行介绍和说明的文章。
基于网络的远程编程是将远程的设备和安装了编程软件的电脑连接到一个虚拟交换机或者虚拟路由器中。让安装了编程软件的电脑如同本地连接设备一样。而且在设备端无需做任何配置,也无需保证设备是否能联网,只要按照在现场的FreeIOE网关能和现场设备通讯同时可以连接互联网即可。而在电脑端,也只需要安装搭建虚拟网络或虚拟串口的软件同时可以连接互联网即可。
通过基于网络的远程编程,你可以体验到如下功能:
1. 如同在本地局域网连接现场设备一样的体验(注:由于上网网速的影响,可能交互速度稍慢)
2. 和现场设备的连接完全是按需连接,需要时开启,不需要时关闭。
3. 整个过程全程加密压缩,既省流量,又安全可靠。
4. 除了设备的远程编程,其他需求(如连接远程电脑,访问远程服务等)亦可满足。
现场的网关和编程软件所在电脑因为大多数情况下都位于内网环境中,并无互联网上的IP地址,因此是双方是无法直接连接的,因此我们在互联网上搭建了一系列的远程编程服务节点将现场的网关和编程软件电脑连接到一起。
由于现场的网关和编程软件电脑都能访问到远程编程服务节点,因此双方带着特殊标识信息连接到响应速度最快的远程编程服务节点时,服务节点会为双方建立一个加密压缩的专用通道,让网关中的虚拟网络软件和编程软件电脑中的虚拟网络软件能通讯构建一个专用的虚拟交换机或虚拟路由器。
整个架构示意图如下:
1. 现场的设备无需进行任何配置,现场的FreeIOE网关通过网络连接到现场设备,同时通过4G网络或其他方式接入Internet。FreeIOE网关联网后,会登录到对应的用户账号下。
2. 用户在编程软件所在的电脑上安装FreeIOE的远程编程软件freeioe_Rprogramming。
1. 现场连接目标设备的FreeIOE网关联网后,用户登录冬笋云平台,将此网关添加到账户下。
2. 进入网关的配置界面,点击扩展功能右边的配置图标。在弹出的面板中打开远程网络编程开关。等待几秒,就会看见扩展功能下面出现了“远程编程-网络”的配置页面。
3.进入“远程编程-网络”的配置页面,会发现服务状态为异常,这是因为本地的远程编程软件freeioe_Rprogramming未安装或者未启动。
4. 下载FreeIOE的远程编程软件后,运行安装文件,按照提示将freeioe_Rprogramming安装到编程软件所在电脑。
安装界面1:
安装界面2:如是Windows 10,需要安装.Net 3.5,可能需要重启操作系统;如是Windows 7,没有这一步。
安装界面3,安装虚拟串口驱动1:
安装界面4,安装虚拟网络驱动:
安装界面5,安装虚拟串口驱动2:
安装界面6,安装介绍,启动服务控制面板:
安装界面7,服务控制面板:
5. 切换到浏览器“远程编程-网络”的配置页面,页面中的服务状态已经显示正常了。
6. 页面已经默认设置了连接的参数,根据实际的情况检查一下,页面中的参数如下表:
参数 | |
---|---|
服务节点 | 冬笋云提供的远程编程服务节点,默认选择响应最快的节点 |
网关状态 | 本地后台服务关联的网关的在线状态 |
网络模式 | 桥接模式(虚拟交换机)/路由模式(虚拟路由器) |
传输协议 | TCP连接/KCP(增强版UDP连接) |
虚拟网卡IP | 为本地虚拟网卡设置静态IP地址,页面会根据网关LAN 1口的IP随机生成一个同网段的IP,可修改 这里需要注意:本地虚拟网卡的IP地址不能和网关LAN 1口所在网络中的其他设备IP地址冲突 |
子网掩码 | 本地虚拟网卡的子网掩码,一般使用默认值即可 |
网关IP | 网关LAN 1口的IP地址,这里仅仅是显示 |
ping目标IP | 指定一个远程网络中的IP地址,用于检测本地电脑是否能通过虚拟网络连接到远程的网络。默认是网关LAN 1口的IP地址,可修改为远程设备实际的IP地址 |
7. 如确认各参赛都正确,点击启动按钮便可启动虚拟网络服务了。启动虚拟网络服务会产生2条反馈消息,第1条是本地虚拟网络服务启动时候成功的反馈,如启动成功,则会发消息给目标网关,让网关作为虚拟网络服务的客户端连接过来,如目标网关启动成功,则会返回带有“Done”的反馈消息。如启动成功,则会看到类似如下图的页面。其中,本地连接状态表明本地的虚拟网络服务工作正常,云端隧道状态表明云节点的隧道工作正常,网关隧道状态表明远程网关的虚拟网络服务运行正常。最下方还显示ping远程目标IP的反馈和延迟。
8. 接下来,可以试一试和实际的现场设备是否联通,使用设备的编程软件是否能连接设备并操作。这里举例使用西门子的S7-200-Smart编程软件STEP 7-MicroWIN SMART和远程PLC通讯来测试是否通畅。在STEP 7-MicroWIN SMART中通信接口选择TAP-Windows Adapter V9的网卡,然后点击“查找CPU”按钮,几秒后,就找到远程的PLC了,PLC目前的地址是192.168.2.1,和本地虚拟网卡的IP地址不在一个网段,如点击连接,S7-200-Smart编程软件或给本地的虚拟网卡增加一个192.168.2.xxx的IP地址。接下来,就是正常的PLC编程操作了。
1. 远程编程功能支持Linux系统吗?
FreeIOE目前的远程编程功能暂不支持Windows之外的操作系统,而且Windows系统也只支持Windows 7及以后的Windows系统。
2. 打开远程编程页面服务状态提示异常?
这是由于本地操作系统中未安装FreeIOE的远程编程软件或者安装了软件但服务未启动。在Windows的服务管理器中检查freeioe_programming_service服务是否安装并启动。
3. 远程编程是选择的远程编程服务节点是什么原理?
目前的远程编程服务节点是在互联网的各个区域部署了代理节点,每个节点提供的带宽峰值是100M,客户端在选择远程编程服务节点时采用的是最快响应原则,最快响应的服务节点作为首选。
4. 启动虚拟网络服务后,本地连接状态为什么总是显示异常?
可能是本地的虚拟网卡运行环境遭到破坏,遇到这种情况时,可卸载原来的软件并重新安装。本地虚拟网络服务主要有6个服务构成:远程编程管理服务,远程编程自动升级服务,虚拟交换机服务,虚拟路由器服务,虚拟串口服务,虚拟隧道服务。默认情况下,后台只是启动了远程编程管理服。
5. 虚拟网卡IP和Ping目标IP是否可以修改?
当然可以修改,页面打开时仅仅是为了方便提供了一个预设值,用户需要根据实际情况进行修改。预设值无法保证虚拟网卡IP地址不和其他设备的IP冲突,也无法保证设置的Ping目标IP地址是您希望的IP。
6. 虚拟网络启动成功了,但还是无法和现场设备的IP地址ping通?
这种故障导致的原因较多,需要从这个几个方便检查一下:1)本地操作系统中存在多少个网卡,其它网卡的IP和虚拟网卡的IP是不是在同一网段了,如是,必须让虚拟网卡的IP和其他网卡的IP不要是同一网段;2)现场的网关是什么型号,如是多个网口的,保证每个网口设置的IP地址不是相同网段;3)保证现场设备连接到了网关的LAN 1网口;4)保证在现场通过电脑ping设备IP有回应。
7. 现场设备连接到了网关的LAN 2口,还可以使用远程编程吗?
FreeIOE的远程编程-网络支持虚拟交换机模式和虚拟路由器模式,其中虚拟交换机模式默认只支持LAN 1网口,可修改,但较麻烦;虚拟路由器模式支持LAN 1网口,但虚拟路由器模式必须要现场设备在设备中设置默认网关并指向FreeIOE网关的LAN 1网口的IP。
8. 虚拟网络服务有时会启动不成功,或者启动成功了,到云端隧道和网关隧道都显示异常?
远程的网关和本地电脑之间的连接是通过互联网建立的,而且还通过中转服务器连接,因此存在由于网络丢包等故障导致的无法正常建立连接,在运行状态中如果看见云端隧道和网关隧道的状态处于异常且很长时间都不变为正常,那么就需要停止本地的虚拟网络服务,然后重新启动。
9. 传输协议TCP和KCP有什么区别?
TCP就是标准的TCP/IP协议,而KCP是一个快速可靠协议(在UDP/IP协议上实现),能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。KCP本身不会改变物理链路带宽的限制,但在丢包率较高的网络环境中有较好的效果。