项目中遇到如下情况:

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. Dockerfile自动化制作镜像

    1.创建Dockerfile文件:vim Dockerfile 2.Dockerfile的编写内容如下: 3.开始制作镜像 制作命令: docker build -t 镜像名:版本号 4.查看已经做好 ...

  2. 安全测试工具(1)- Burp Suite Pro的安装教程

    啥是Burp Suite 用于攻击web 应用程序的集成平台 程序员必备技能,不仅可以拿来做渗透测试.漏洞挖掘还能帮助程序员调试程序 Bug 它包含了许多Burp工具,这些不同的burp工具通过协同工 ...

  3. Abp VNext权限定义

    在Shop.Application.Contracts项目中Permissions目录下ShopPermissions定义权限名 namespace Shop.Permissions { public ...

  4. abp element 显示分页

    App.vue添加组件 <template> <div id="app"> <dataTable></dataTable> < ...

  5. AntDesign VUE:上传组件图片/视频宽高、文件大小、image/video/pdf文件类型等限制(Promise、Boolean)

    文件大小限制 - Promise checkFileSize(file, rules) { return new Promise((resolve, reject) => { file.size ...

  6. redis存取数据String

    一.连接不同数据库和存取String类型值 1.连接数据库 2.set和get多个 3.取值并赋值 取值返回的是赋值改变之前的值: 4.递增和递减 5.字符串尾部加值 6.商品编号自增应用

  7. Dubbo No provider问题排查思路

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 不想看字的同学可直接划到底部查看思维导图 问题分析 使用过Dubbo的朋友很多都碰到过如下报错 ...

  8. 搭建GIT仓库

  9. 数据结构逆向分析-Map

    数据结构逆向分析-Map map是一个典型的二叉树结构,准确的来说是一个平衡二叉树或者红黑树,特点是数据存储是有序的存储. 参考侯杰老师的stl源码剖析,map里面采用的是RB-TREE也就是红黑树 ...

  10. 在PHP中如何为匿名函数指定this?

    在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了. 关于闭包匿名函数,在JS中有个很典型的问题就是要 ...