整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何远程读取西门子PLC数据?

如何远程读取西门子PLC数据?

着工业的发展,PLC联网进行远程监控、远程运维的需求越来越多,通常是通过PLC的通信口外接一个联网模块来实现。很多企业自动化产品与非标自动化产品安装现场地处偏僻,没有网络怎么办?随着本地通信控制的局限性,远程控制联网通信,采用有线和无线的方式慢慢的进入主流。以太网口通信和无线网络通信慢慢的在PLC远程控制取代了原有的本地串口或总线方式控制。
如何选择联网模块进行plc远程监控呢?
假如:一台或多台设备分布在不同的地区或国外,如果要对其PLC、HMI等自控产品进行远程控制、调试和维护?设备厂商或系统服务商如何操作?如何实现减少人力出差成本,就能有效对远在千里之外的现场进步管控?如何能够实现PLC异地程序上下载?
这个问题困扰了很多工控人,对于不想出差的他们来说, 如果有一种快速经济的方式实现程序远程下载到异地的PLC里, 不但节省人力物力, 还可以让工作变得轻松。下面介绍一种经济实惠的PLC远程模块-华辰智通HiNET 工业智能网关,实现工业物联网保障。 只需三个步骤就可以实现PLC程序异地下载。

一、西门子PLC远程编程及程序上下载系统结构

HiNet工业智能网关支持所有主流PLC,以西门子200 SMART为例。200 SMART PLC为设备控制核心,HiNet智能网关为数据远程采集终端,通过4G、5G、wifi及以太网等通信方式通过VPN over P2P的专用安全通道直接将PLC的程序及运行参数采集至PC、LED显示屏等监控终端。

依靠监控终端的step7、WINCC等编程或上位机软件实现对远程PLC的远程编程、在线监控、在线仿真、数据远程采集、设备远程控制等功能。


二、硬件需求 1、PC 编程器 2、网线或4G网卡或无线路由器 3、HiNet工业智能网关 三、软件需求 1、Hinode设备管理客户端 2、编程软件
四、设备连接说明
1、与串口PLC连接方式
如果是串口PLC,如三菱FX的RS422口、台达ES2 PLC的RS232等可通过专用配置电缆,一端接入PLC的编程口,另一端接入HiNet网关的COM口;
2、与网口PLC连接方式
如果是网口PLC,则可通过普通网线,一端接入PLC的网络口,另一端接入HiNet网关的LAN口;
3、与电脑连接对HiNet进行配置
如果需要对网关进行配置时,则可通过普通网线,一端接入电脑,一端接入HiNet网关的LAN口。 五、如何采集西门子PLC的数据的流程:
第一步:工业智能网关正常联网,网关和PLC硬件连接网关连接WIFI上网,西门子200 smart plc连接网关LAN口通信


华辰智通工业智能网关
第二步:进工业网关后台,配置网关


1、安装驱动包(南向驱动)
点击“软件中心-驱动包管理”,点击【刷新列表】-【可用软件包】,根据PLC安装相应的驱动包,西门子200 smart plc选择 siemens_s7_tcp_rw_driver最新版,点击【安装】。
注意:or为只读,rw表示可读可写,需要远程控制变量则选择rw的驱动包





2、安装传输包(北向驱动)
点击“软件中心-传输包管理”,点击【可用软件包】,选择思普云传输包super_json_tcp_cloud最新版,点击【安装】。




3、设置采集通道
点击“工控数据-通道管理”,勾选通道开关,设备驱动选择西门子驱动包super_json_tcp_cloud,数据中心选择思普云(手动输入无效)。如需远程控制变量写入,则勾选控制开关,设置远程控制密码。设置完成点击【保存&应用】。
注意:远程控制密码必须为8位数






4、修改网关LAN口IP
点击【通讯设置】-【LAN设置 】,修改IPV4地址,网关IP需要与PLC IP在同网段,点击【保存应用】。电脑需添加与网关同网段IP,返回网关后台—【重启网关】。




第三步:配置思普云
浏览器输入iot.idosp.net打开思普云登录界面,输入思普云账号密码点击【登录。】


1、添加产品
点击产品设备-产品管理,点击【新增】,红框为必填项,
产品名称、产品类别PLC品牌、PLC系列、协议名称触发模式采集周期(ms)普通模式采集周期(ms)存储模式采集周期(ms)自定义根据PLC选择打开实时数据界面时按触摸模式采集周期采集数据,设置1000ms表示1秒采集一次。目的是为节省流量只要网关联网成功,并与PLC正常连接。实时数据就会按普通模式采集周期一直采集在普通模式的基础上加了存储功能,需要历史数据或需要设置报警参数,则必须开启存储模式采集周期


配置点表
选择产品点击【点表配置】,点击【新增】,点表根据PLC程序里的变量配置,
变量名、单位寄存器类型、地址、数据类型变比、偏移触发模式、普通模式、存储模式读写权限自定义根据变量配置对采集上来的数据进行乘法和加法计算,
例如,采集的原始数据为3,变比设置为10,偏移设置为2,那么平台上实时数据显示的最终值等于3*10+2=32设置了哪一种采集模式周期,哪一种模式就选采集,
例如,触发模式采集周期设置1000ms,则触摸模式选采集需要远程控制变量则选“读写”


2、添加设备
点击产品设备-设备管理,点击【新增】,填写设备名称、设备所属客户、设备负责人、负责人手机号,产品名称选择刚才添加的产品,点击【确定】。


3、设备绑定工业智能网关
点击【绑定网关】,选择与PLC连接的工业智能网关,如不知道网关的思普云ID,可进网关后台查看。
注意:设备IP填PLC的IP,且PLC的IP要与工业智能网关LAN口IP在同网段,此处网关LAN口IP为192.168.9.99,PLC的IP为192.168.9.12,都是9网段,则不需要修改网关LAN口IP。
如需修改可在网关后台点击“通讯设置-LAN设置”,修改IPv4地址。




4、强制同步点表
绑定网关后,网关会自动同步点表并重启网关,立即点击强制同步点表会提示“设备不在线”,待网关自动重启完再【强制同步点表】。



5、查看实时数据
点击网页右上角大数据中心图标进思普云大数据中心查看实时数据,点击“实时监控-实时数据”查看数据。



点击“历史数据”——“数据展示”,查看历史记录


点击“远程控制”,“0表示开启,1表示关闭”


其他相关文章:
西门子200smart数据网关采集数据流程:http://www.hignton.com/article/366.html
西门子300采集数据流程:http://www.hignton.com/article/373.html
工业数据网关如何采集西门子1200 PLC的数据:http://www.hignton.com/article/552.html
工业智能网关采集西门子200 smart pcl数据教程:http://www.hignton.com/article/553.html

得之前在公众号提过曾经在 T 公司做 Java 爬虫,有读者对爬虫的实现很感兴趣。在 Java 应用中读取远程 URL 内容是一个比较常见的需求,可以使用 Apache 旗下的开源项目 Httpclient 来实现。


Httpclient 基于 Java 语言,实现了 HTTP 1.0 和 HTTP 1.1 协议。实现了 GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE 等全部方法。支持使用代理建立连接。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。能够自动处理 cookie,支持用 KeepAlive 来保持持久连接。


使用 Httpclient 很简单,在如下的示例代码中,分为以下几个步骤:

  1. 创建 HttpClient 对象,这里使用了默认设置;
  2. 创建请求对象 httpGet,对应一次 get 请求;
  3. 调用 HttpClient.execute 执行一次请求,得到的返回是 response;
  4. 通过 response 可以获取返回的状态和HTML内容;
CloseableHttpClient httpclient=HttpClients.createDefault();
HttpGet httpGet=new HttpGet("http://www.baidu.com");
CloseableHttpResponse response=httpclient.execute(httpGet);
try {
    System.out.println(response.getStatusLine());
    HttpEntity entity=response.getEntity();
    System.out.println(EntityUtils.toString(entity));
} finally {
    response.close();
}


发送 get 请求,需要创建 HttpGet 请求。发送 post 请求,需要创建 HttpPost 请求。如果是带参数的请求,可以直接拼接在 URL 中,也可以使用 URIBuilder 创建对象然后通过 addParameter 或 setParameter 方法添加 。如果需要设置请求 header,可以调用 addHeader 或 setHeader 方法设置 header。


对于 post 请求,可以调用 setEntity 方法设置请求的数据。如 post.setEntity(new StringEntity(body, "utf-8"))。支持提交多种数据:

  • StringEntity:纯文本内容,比如提交 json 数据;
  • FileEntity:文件,比如文件上传;
  • ByteArrayEntity:字节流数据,比如提交序列化数据;
  • UrlEncodedFormEntity:表单数据,比如提交 form 表单;
  • InputStreamEntity:输入流数据,比如文件上传;
  • SerializableEntity:序列化数据,支持提交 Serializable 序列化对象;
  • BasicHttpEntity:通用数据,使用者自行写入流和内容长度。


调用 HttpClient 的 execute 方法发送请求,返回的是一个 HttpResponse 对象。通过该对象可以获取返回的所有数据:

  • getStatusLine:获取返回状态 StatusLine 对象,如 HTTP/1.1 200 OK;
  • getEntity:获取返回的内容,如 HTML 数据;
  • getHeaders / getAllHeaders:获取返回的 header 内容;


设置请求参数

HttpClient 支持设置 RequestConfig 来配置请求默认参数。一般使用 RequestConfig.Builder 来构建 RequestConfig。Builder 支持进行如下设置:

  • setProxy:设置代理服务器,需要传入 HttpHost 对象;
  • setLocalAddress:设置本地地址;
  • setCookieSpec:设置 cookie 处理策略;
  • setRedirectsEnabled:设置是否允许自动跳转,处理 302 等响应;
  • setMaxRedirects:设置最大跳转数量,302 跳转次数;
  • setAuthenticationEnabled:设置是否启用认证,如启用需要提供密码;
  • setConnectionRequestTimeout:设置连接请求超时时间,指从连接池获取连接的timeout;
  • setConnectTimeout:设置连接超时时间,指客户端和服务器建立连接的timeout;
  • setSocketTimeout:设置 socket 时间,指客户端从服务器读取数据的timeout;

RequestConfig 构建后,需要调用 HttpClient setDefaultRequestConfig 方法设置到客户端中。


使用代理

通过 RequestConfig.setProxy 可以设置请求的代理,在爬虫等场景非常实用。代理的对象类型是 HttpHost,一般设置代理的 ip 和端口。如果代理有密码,可以使用 CredentialsProvider 配置用户名和密码自动完成认证。

CredentialsProvider credsProvider=new BasicCredentialsProvider();
//使用密码的代理端口
credsProvider.setCredentials(new AuthScope(null,port),
//用户名和密码
new UsernamePasswordCredentials(username,password)
);
httpClientBuilder.setDefaultCredentialsProvider(credsProvider);


支持 HTTPS 协议

请求 HTTPS 需要在 HttpClient 中设置 ssl 协议。主要分为以下几个步骤:

  1. 创建 SSL 协议上下文 SSLContext,通常使用 SSLContextBuilder 构建;
  2. 创建 SSLConnectionSocketFactory,是 TLS/SSL 连接的 socket 工厂;
  3. 向连接工厂中注册 https 协议使用 SSLConnectionSocketFactory 处理;
  4. 创建连接池管理器 PoolingHttpClientConnectionManager,并注册 HTTPS;
  5. 向 HttpClient 设置连接池管理器。

如果请求报错 HTTPS 证书问题,可以设置忽略证书。设置系统变量 System.setProperty("jsse.enableSNIExtension", "false"); 即可。

// 需要通过以下代码声明对https连接支持
SSLContext sslcontext=SSLContexts.custom()
    .loadTrustMaterial(null, new TrustSelfSignedStrategy())
    .build();
// SSL 连接工厂
SSLConnectionSocketFactory sslsf=new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE);
Registry<ConnectionSocketFactory> socketFactoryRegistry=RegistryBuilder
    .<ConnectionSocketFactory> create()
    .register("http",PlainConnectionSocketFactory.getSocketFactory())
    .register("https", sslsf).build();
// 初始化连接管理器
PoolingHttpClientConnectionManager poolConnManager=new PoolingHttpClientConnectionManager(socketFactoryRegistry);
client=HttpClients.custom()
    .setConnectionManager(poolConnManager)
    .build();


推荐阅读

30 个 Spring 常用注解与差异总结

又到黄金季节,该跳槽吗?怎么跳?

分布式事务 6 个技术方案

15 个 MyBatis 技巧,赶紧收藏吧!

你的工资被倒挂了吗

function getMeta(varA, varB) {
 if (typeof varB !=='undefined') {
 alert(varA + ' width ' + varB + ' height');
 } else {
 var img=new Image();
 img.src=varA;
 img.onload=function() {
 getMeta(this.width, this.height);
 }
 }}getMeta("http://snook.ca/files/mootools_83_snookca.png");