项目中遇到如下情况:

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的更多相关文章

  1. 一台Ubuntu server上安装多实例MySQL

    受环境所迫,在一台Ubuntu server上安装多个实例MySQL. 手动安装MySQL 环境:Ubuntu server 11.10 64bit + mysql-5.5.17-linux2.6-x ...

  2. 使数据可供ArcGIS Server访问

    内容来自ESRI官方文档(点击访问),简单总结如下: 1 ArcGIS Server用于发布服务的数据必须存储在服务器可以访问的位置: 2 这样的位置有三种类型: 本地路径:将数据本地存储在每台 Ar ...

  3. 令人兴奋的TOP Server OPC Server v6.5 五大功能(上)

    Software Toolbox的OPC和原生HMI设备的连接软件:TOP Server OPC Server.TOP Server OPC Server是采用业界领先的Kepware技术的工业4.0 ...

  4. fastdfs之同一台storage server下包含多个store path

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  5. GPRS RTU设备OPC Server接口C# 实现

    通过本OPC Server程序接口可为用户提供以OPC标准接口访问远程GPRS/3G/以太网 RTU设备实时数据的方式.从而方便实现GPRS/3G/以太网 RTU设备与组态软件或DCS系统的对接.本程 ...

  6. 处于同一个域中的两台Sql server 实例无法连接

    处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...

  7. 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 ...

  8. 《连载 | 物联网框架ServerSuperIO教程》- 16.OPC Server的使用步骤。附:3.3 发布与版本更新说明。

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  9. 《连载 | 物联网框架ServerSuperIO教程》- 16.集成OPC Server,及使用步骤。附:3.3 发布与版本更新说明。

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

随机推荐

  1. etcd学习(9)-etcd中的存储实现

    etcd中的存储实现 前言 V3和V2版本的对比 MVCC treeIndex 原理 MVCC 更新 key MVCC 查询 key MVCC 删除 key 压缩 周期性压缩 版本号压缩 boltdb ...

  2. noip模拟44

    A. Emotional Flutter 直接将所有黑块平移到 \([1-k,0]\) 的区间即可,然后找有没有没被覆盖过的整点 注意特判 \(1-k\) 以及 \(0\) 的可行性,考场这里写挂成 ...

  3. LCT 小记

    全程 Link-Cut Tree,是解决动态树问题的有力科技 --题记 简单实现 LCT 的形态直观上是一堆 Splay 的合体,每个 Splay 以时间戳为关键字,各个 Splay 通过虚边相连,可 ...

  4. [考试总结]noip模拟40

    最近真的是爆炸啊... 到现在还是有不少没改出来.... 所以先写一下 \(T1\) 的题解.... 送花 我们移动右端点,之后我们用线段树维护全局最大值. 之后还要记录上次的位置和上上次的位置. 之 ...

  5. 数据治理中Oracle SQL和存储过程的数据血缘分析

    数据治理中Oracle SQL和存储过程的数据血缘分析   数据治理中的一个重要基础工作是分析组织中数据的血缘关系.有了完整的数据血缘关系,我们可以用它进行数据溯源.表和字段变更的影响分析.数据合规性 ...

  6. Spring Boot中使用@Async实现异步调用,加速任务的执行!

    什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行 ...

  7. windows中对文件进行排序

    右键->排序方式->更多->选择需要的项目

  8. eclipse安装配置

    安装eclipse,并运行了第一个Hello World!

  9. js判断访客来源网址和关键字

    加入现在有A.B两个站,A为友站,B为我站. 希望判断使用从A站连来时,就把访问者拒绝在门外,只要用简单几行的javascript,就可抓到使用的来源,以及作出一些防范的措施. <script ...

  10. 深入HTML5第二天

    sub(subscripted下标标签)和sup(superscripted上标标签) 内联元素:inline element  span(范围标签):内联元素inline element 特性:没有 ...