如何从一台OPC Server访问多个PLC
项目中遇到如下情况:
1. 整条生产线由多个PLC分别控制,但是所有PLC在同一个局域网内。PLC采用西门子的S7-200 Smart
2. 客户希望在操作工站的电脑(跟PLC在同一个局域网内)上提供一个上位机软件,用来读取/写入各个PLC的变量
3. 上位机软件通过OPC DA跟各个PLC进行通信
4. OPC Server采用西门子提供的PC Access Smart软件
5. 最终遇到的问题是如何在一个上位机软件上访问多个PLC?
关于PC Access Smart,参考如下链接
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/017.html
通过研究该软件随机附带的VB程序,终于发现窍门。
1. 在操作工站电脑上安装PC Access Smart之后,后台会有一个OPCDAAutomation的程序在运行,该程序即为OPC Server
2. 上位机软件首先连接该OPC Server,其中,OPC Server的名字固定为S7200SMART.OPCServer
3. 在指定Tag名称时,要按照如下格式2:192.168.2.17:0201:0201,I4.2,BOOL,R
4. OPC Server解析Tag名称时,会去连接指定的PLC,访问指定的变量地址
代码如下:
private void btnConnect_Click(object sender, EventArgs e)
{ if (txtOPCServerName.Text.Trim() == "")
{ MessageBox.Show("OPC server name cannot be empty!"); return; } try
{ _helper.GetOPCServers(txtOPCServerName.Text.Trim()); txtOPCServerName.ReadOnly = true; btnRead.Enabled = true; btnWrite.Enabled = true; }
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}
private void btnRead_Click(object sender, EventArgs e)
{ if (txtOPCTagName.Text.Trim() == "")
{ MessageBox.Show("OPC tag name cannot be empty!"); return; } txtReadWriteValue.Text = _helper.ReadValue(txtOPCTagName.Text).ToString(); }
public void GetOPCServers(string svrName)
{ IPHostEntry IPHost = Dns.GetHostEntry(Environment.MachineName); try
{ KepServer = new OPCServer(); object serverList = KepServer.GetOPCServers(IPHost.HostName.ToString()); int i = 0; foreach (string serverName in (Array)serverList)
{ serverNames.Add(serverName); } ConnectServer(svrName); } catch (Exception ex)
{ throw new Exception("Connect Error:" + ex.Message); } }
public object ReadValue(string tagName)
{ GetTagValue(tagName); Thread.Sleep(500); object ItemValues; object qualities; object timeStamps; try
{ KepItem.Read(1, out ItemValues, out qualities, out timeStamps); return ItemValues; } catch
{ return null; } }
如何从一台OPC Server访问多个PLC的更多相关文章
- 一台Ubuntu server上安装多实例MySQL
受环境所迫,在一台Ubuntu server上安装多个实例MySQL. 手动安装MySQL 环境:Ubuntu server 11.10 64bit + mysql-5.5.17-linux2.6-x ...
- 使数据可供ArcGIS Server访问
内容来自ESRI官方文档(点击访问),简单总结如下: 1 ArcGIS Server用于发布服务的数据必须存储在服务器可以访问的位置: 2 这样的位置有三种类型: 本地路径:将数据本地存储在每台 Ar ...
- 令人兴奋的TOP Server OPC Server v6.5 五大功能(上)
Software Toolbox的OPC和原生HMI设备的连接软件:TOP Server OPC Server.TOP Server OPC Server是采用业界领先的Kepware技术的工业4.0 ...
- fastdfs之同一台storage server下包含多个store path
一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...
- GPRS RTU设备OPC Server接口C# 实现
通过本OPC Server程序接口可为用户提供以OPC标准接口访问远程GPRS/3G/以太网 RTU设备实时数据的方式.从而方便实现GPRS/3G/以太网 RTU设备与组态软件或DCS系统的对接.本程 ...
- 处于同一个域中的两台Sql server 实例无法连接
处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...
- Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙
原文:Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙 原文出处:http://blog.csdn.net/dba_hu ...
- 《连载 | 物联网框架ServerSuperIO教程》- 16.OPC Server的使用步骤。附:3.3 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 16.集成OPC Server,及使用步骤。附:3.3 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- etcd学习(9)-etcd中的存储实现
etcd中的存储实现 前言 V3和V2版本的对比 MVCC treeIndex 原理 MVCC 更新 key MVCC 查询 key MVCC 删除 key 压缩 周期性压缩 版本号压缩 boltdb ...
- noip模拟44
A. Emotional Flutter 直接将所有黑块平移到 \([1-k,0]\) 的区间即可,然后找有没有没被覆盖过的整点 注意特判 \(1-k\) 以及 \(0\) 的可行性,考场这里写挂成 ...
- LCT 小记
全程 Link-Cut Tree,是解决动态树问题的有力科技 --题记 简单实现 LCT 的形态直观上是一堆 Splay 的合体,每个 Splay 以时间戳为关键字,各个 Splay 通过虚边相连,可 ...
- [考试总结]noip模拟40
最近真的是爆炸啊... 到现在还是有不少没改出来.... 所以先写一下 \(T1\) 的题解.... 送花 我们移动右端点,之后我们用线段树维护全局最大值. 之后还要记录上次的位置和上上次的位置. 之 ...
- 数据治理中Oracle SQL和存储过程的数据血缘分析
数据治理中Oracle SQL和存储过程的数据血缘分析 数据治理中的一个重要基础工作是分析组织中数据的血缘关系.有了完整的数据血缘关系,我们可以用它进行数据溯源.表和字段变更的影响分析.数据合规性 ...
- Spring Boot中使用@Async实现异步调用,加速任务的执行!
什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行 ...
- windows中对文件进行排序
右键->排序方式->更多->选择需要的项目
- eclipse安装配置
安装eclipse,并运行了第一个Hello World!
- js判断访客来源网址和关键字
加入现在有A.B两个站,A为友站,B为我站. 希望判断使用从A站连来时,就把访问者拒绝在门外,只要用简单几行的javascript,就可抓到使用的来源,以及作出一些防范的措施. <script ...
- 深入HTML5第二天
sub(subscripted下标标签)和sup(superscripted上标标签) 内联元素:inline element span(范围标签):内联元素inline element 特性:没有 ...