使用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数据的采集相关推荐

  1. opc服务器组态文件已写保护_远程组态软件不仅方便了PLC无线远程监控,也大大降低了工程成本...

    远程组态软件不仅方便了PLC无线远程监控,也大大降低了工程成本 组态软件远程监控 1.本地上位SCADA系统采集分布各地现场PLC等设备运行的数据,并可以下发控制指令: 2.提供稳定的OPC接口服务, ...

  2. python可以用于plc吗_基于Python的丰炜系列PLC与PC串行通信的实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的丰炜系列 PLC 与 PC 串行通 信的实现 作者:韩志三 来源:<硅谷> 2013 年第 22 期 摘 ...

  3. python能编plc吗_基于Python的丰炜系列PLC与PC串行通信的实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的丰炜系列 PLC 与 PC 串行通 信的实现 作者:韩志三 来源:<硅谷> 2013 年第 22 期 摘 ...

  4. imp 只导表前10条数据_做电商设计,你必须懂的10条数据指标

    数据指标是什么?--是一个切入数据的角度.有了数据指标的存在,才能知道需要采集什么数据.需要持续监测什么数据.用什么角度来和历史表现做对比. 数据指标的类型各种各样,有些指标是被广泛使用的,如 DAU ...

  5. mysql分组取出每组地一条数据_基于mysql实现group by取各分组最新一条数据

    基于mysql实现group by取各分组最新一条数据 前言: group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢? 本文提供两种实现方式. 一.准 ...

  6. python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

  7. python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  8. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?

    第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...

  9. python 高维数据_用Sci-kit learn和XGBoost进行多类分类:Brainwave数据案例研究

    在机器学习中,高维数据的分类问题非常具有挑战性.有时候,非常简单的问题会因为这个"维度诅咒"问题变得非常复杂.在本文中,我们将了解不同分类器的准确性和性能是如何变化的. 理解数据 ...

最新文章

  1. python 正则表达式贪婪模式与非贪婪模式
  2. Python的零基础超详细讲解(第十二天)-Python函数及使用
  3. 亿级搜索系统的基石,如何保障实时数据质量?
  4. 剑网三虽然是游戏,但场面堪比电影大片,发布会会带来什么惊喜?
  5. LeetCode 931. 下降路径最小和(动态规划)
  6. display none的元素重新展示如何撑开页面_寻根问底之——元素隐藏你知多少?
  7. 移动互联网和Android给你带来的机会[轉]
  8. “A class named TcxRect already exists”错误
  9. VC中使用GetModuleFileName获取应用程序路径
  10. 5G 是否有过度承诺之嫌?
  11. easyui datagrid的getSelections只获取一行问题
  12. wordpress提高访问速度
  13. python查找在圆周率100万个数字中是否有你的生日
  14. 前端页面预览word_html页面在线预览word
  15. 机器人系统反馈控制结构设计(现代控制理论5)
  16. 什么样的域名是一级域名?和二级域名有什么关系?
  17. 【VUE】如何关闭代码规范extra semicolon
  18. 126 删除邮件 服务器,网易126邮箱中的邮件莫名奇妙被删除
  19. rtf转换成html,转换Rtf到HTML
  20. 多线程模拟龟兔赛跑游戏

热门文章

  1. Android Studio开发实用网站收集
  2. 三、系统分层和分割策略
  3. Mybatis与Spring整合示例
  4. initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记
  5. leetcode-longestPalindrome-java
  6. [.NET] : 设定Windows Service启动类型
  7. 写了一段VBA代码后, Excel每次保存时都弹出警告:”此文档中包含宏、Activex控件、XML扩展包信息“(office 2007)
  8. outlook 让附件在正文中显示 (REF rich リッチ)
  9. Linux 的 复制命令 【 cp 】 (copy)及其 (常用参数 -fp)
  10. 【Python-3.5】win7安装Pygame