opc读取ab的plc数据_使用OPC的模式去连接PLC进行AB SLC-5_04数据的采集
使用OPC的方式去连接PLC进行AB SLC-5_04数据的采集
1、 必备软件
Rslinx classic 2.57
.net framework 2.0
VS2013
OS: win7 enterprise x64
2、 软件安装
2.1、安装RSlinx,安装时选择xp3兼容模式。
2.2、安装后启动RsLinx,对PLC进行配置。首先,建立驱动,驱动类型选择“EnterNet device”,将PLC设备的IP地址输入,如下图:
2.3、正确配置后,结果如下图,
在图中“192.168.1.254”的节点上,鼠标右键,可以看到datamonitor选项,点击这个选项,可以看到PLC中的各个数据。看到了,表示RsLinx和PLC已经连接成功,如果看不到表示连接失败。
3、 编写代码
3.1、首先建立C#工程;
3.2、导入三个DLL: OPCNetApi.com.dll, OpcNetApi.dll, OpcNetApi.Xml.dll,这三个dll在rslinx安装目录下;
3.3、编程思路:
首先,建立程序(clinet)和OPC server的连接。注意OPC Server是安装有RsLinx的机器(127.0.0.1)而不是PLC的IP地址。
其次,连接建立成功之后,建立订阅组状态,建立订阅组;将要读取的item填入到订阅组中。
然后,就可以读取需要的数据了。
最后,释放资源。
3.4、具体代码如下:
public static void GetData(ref int zhValue, ref int nsValue, ref int deviceStopTime, ref int materialStopTime, ref int qualityStopTime)
{
try
{
Opc.Da.Server lt1_server = null;
Opc.URL lt1_url = null;
Opc.ConnectData lt1_connData = null;
Opc.Da.SubscriptionState lt1_state = null;
Opc.Da.Subscription lt1_subcription = null;
string url1 = "opcda://127.0.0.1/RSLinx Remote OPC Server/{a05bb6d5-2f8a-11d1-9bb0-080009d01446}";
lt1_url = new Opc.URL(url1);
lt1_server = new Opc.Da.Server(new OpcCom.Factory(), lt1_url);
System.Net.NetworkCredential credential = null;
System.Net.WebProxy proxy = null;
lt1_connData = new Opc.ConnectData(credential, proxy);
try
{
lt1_server.Connect(lt1_connData);
}
catch (Exception ex)
{
return;
}
//创建订阅组的状态
lt1_state = new Opc.Da.SubscriptionState();
lt1_state.Name = "LowTube1";
lt1_state.ServerHandle = null;
lt1_state.ClientHandle = Guid.NewGuid().ToString();
lt1_state.Active = false;
lt1_state.UpdateRate = 1000;
lt1_state.Deadband = 0;
lt1_state.Locale = null;
//创建订阅组
lt1_subcription = (Opc.Da.Subscription)lt1_server.CreateSubscription(lt1_state);
//内饰线数据采集I:2.2
//底盘线数据采集I:3.2
//当天设备故障时间T4:161.ACC
//当天物料求助时间T4:162.ACC
//当天品质求助时间T4:163.ACC
string[] item_names_ary = new string[] { "[UNTITLED]I:2.2", "[UNTITLED]I:3.2",
"[UNTITLED]T4:161.ACC", "[UNTITLED]T4:162.ACC", "[UNTITLED]T4:163.ACC" };
Opc.Da.Item[] readItems = new Opc.Da.Item[item_names_ary.Length];
for (int ii = 0; ii < item_names_ary.Length; ii++)
{
Opc.Da.Item model_item = null;
Opc.ItemIdentifier model_id = new Opc.ItemIdentifier(null, item_names_ary[ii]);
model_item = new Opc.Da.Item(model_id);
model_item.ReqType = null;
model_item.MaxAge = 0;
model_item.MaxAgeSpecified = false;
model_item.Active = false;
model_item.ActiveSpecified = false;
model_item.SamplingRate = 0;
model_item.SamplingRateSpecified = false;
model_item.EnableBuffering = false;
model_item.EnableBufferingSpecified = false;
model_item.ClientHandle = Guid.NewGuid().ToString();
readItems[ii] = model_item;
}
Opc.Da.ItemResult[] m_r = lt1_subcription.AddItems(readItems);
Opc.Da.ItemValueResult[] results = lt1_subcription.Read(lt1_subcription.Items);
nsValue = Convert.ToInt32(results[0].Value);
zhValue = Convert.ToInt32(results[1].Value);
deviceStopTime = Convert.ToInt32(results[2].Value);
materialStopTime = Convert.ToInt32(results[3].Value);
qualityStopTime = Convert.ToInt32(results[4].Value);
lt1_server.CancelSubscription(lt1_subcription);
lt1_server.Disconnect();
lt1_server.Dispose();
}
catch (Exception ex)
{
LogMessage.WriteLog(ex);
}
}
opc读取ab的plc数据_使用OPC的模式去连接PLC进行AB SLC-5_04数据的采集相关推荐
- opc服务器组态文件已写保护_远程组态软件不仅方便了PLC无线远程监控,也大大降低了工程成本...
远程组态软件不仅方便了PLC无线远程监控,也大大降低了工程成本 组态软件远程监控 1.本地上位SCADA系统采集分布各地现场PLC等设备运行的数据,并可以下发控制指令: 2.提供稳定的OPC接口服务, ...
- python可以用于plc吗_基于Python的丰炜系列PLC与PC串行通信的实现
龙源期刊网 http://www.qikan.com.cn 基于 Python 的丰炜系列 PLC 与 PC 串行通 信的实现 作者:韩志三 来源:<硅谷> 2013 年第 22 期 摘 ...
- python能编plc吗_基于Python的丰炜系列PLC与PC串行通信的实现
龙源期刊网 http://www.qikan.com.cn 基于 Python 的丰炜系列 PLC 与 PC 串行通 信的实现 作者:韩志三 来源:<硅谷> 2013 年第 22 期 摘 ...
- imp 只导表前10条数据_做电商设计,你必须懂的10条数据指标
数据指标是什么?--是一个切入数据的角度.有了数据指标的存在,才能知道需要采集什么数据.需要持续监测什么数据.用什么角度来和历史表现做对比. 数据指标的类型各种各样,有些指标是被广泛使用的,如 DAU ...
- mysql分组取出每组地一条数据_基于mysql实现group by取各分组最新一条数据
基于mysql实现group by取各分组最新一条数据 前言: group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢? 本文提供两种实现方式. 一.准 ...
- python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)
背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...
- python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...
英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...
- python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...
- python 高维数据_用Sci-kit learn和XGBoost进行多类分类:Brainwave数据案例研究
在机器学习中,高维数据的分类问题非常具有挑战性.有时候,非常简单的问题会因为这个"维度诅咒"问题变得非常复杂.在本文中,我们将了解不同分类器的准确性和性能是如何变化的. 理解数据 ...
最新文章
- python 正则表达式贪婪模式与非贪婪模式
- Python的零基础超详细讲解(第十二天)-Python函数及使用
- 亿级搜索系统的基石,如何保障实时数据质量?
- 剑网三虽然是游戏,但场面堪比电影大片,发布会会带来什么惊喜?
- LeetCode 931. 下降路径最小和(动态规划)
- display none的元素重新展示如何撑开页面_寻根问底之——元素隐藏你知多少?
- 移动互联网和Android给你带来的机会[轉]
- “A class named TcxRect already exists”错误
- VC中使用GetModuleFileName获取应用程序路径
- 5G 是否有过度承诺之嫌?
- easyui datagrid的getSelections只获取一行问题
- wordpress提高访问速度
- python查找在圆周率100万个数字中是否有你的生日
- 前端页面预览word_html页面在线预览word
- 机器人系统反馈控制结构设计(现代控制理论5)
- 什么样的域名是一级域名?和二级域名有什么关系?
- 【VUE】如何关闭代码规范extra semicolon
- 126 删除邮件 服务器,网易126邮箱中的邮件莫名奇妙被删除
- rtf转换成html,转换Rtf到HTML
- 多线程模拟龟兔赛跑游戏
热门文章
- Android Studio开发实用网站收集
- 三、系统分层和分割策略
- Mybatis与Spring整合示例
- initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记
- leetcode-longestPalindrome-java
- [.NET] : 设定Windows Service启动类型
- 写了一段VBA代码后, Excel每次保存时都弹出警告:”此文档中包含宏、Activex控件、XML扩展包信息“(office 2007)
- outlook 让附件在正文中显示 (REF rich リッチ)
- Linux 的 复制命令 【 cp 】 (copy)及其 (常用参数 -fp)
- 【Python-3.5】win7安装Pygame