西门子Prodave6.0在C#中地应用.docx

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用文案 最近在做一个数据采集项目,涉及到许多与西门子 S7 系列 PLC 的通信,由于自己的 VC 水平属于半 瓶子晃荡,所以就想利用 C# 来进行开发(个人比较喜欢 C# 的代码风格,看着很清爽),虽然 C# 这种高 级语言与底层的设备通讯效率确实不如 C++ ,但好在数据量不大,实时性要求不算太高,用 C# 还是可以 应付的。在界面开发方面,高级语言确实不如 WinCC ,Intouch 之类的组态软件 ,但在数据处理上面 ,却有 很大的灵活性。 在这里很感谢吴向阳,在中国工控网上面发现了他的文章,因为我是从 C# 转到工控方向的,以前对 PLC 一点都不懂,刚接触这一行时 ,学习起来很吃力 ,看了他的这篇文章 ,让我对 PLC 的有了更加深入的了解。 我的这个 DCProdave.cs 就是在他的基础上修改的,加了一些自己的东西。还望各位多多提意见,多多交 流! Prodave 版本 : PRODAVE6.0 - W95_S7.DLL PLC 模拟环境 : PLCSIM V5.4 开发环境 : VS.NET 2005 .从 w95_s7.dll 中导入 PLC 通讯函数的方法 [DllImport] 在使用 DllImport 之前 ,必须引入 InteropServices, 代码如下 : using System.Runtime.InteropServices; 具体使用方法可以参考我的博客中转载的一篇文章 《C#(.net) 中的 DllImport 用法 [转 ] 》写的很不错,千 万要注意 C++ 数据类型到 C# 的对应关系,选用合适的类型。比如 char* 可以用 string 来转换,指针类型 可以 ref 或者数组。 二.定义结构体类型 2.1 PLC 连接参数结构体 // 定义结构体 [连接 PLC 所需参数 ] public struct PLCConnParam { 标准文档 实用文案 4 public byte Addres; // 定义 CPU 的 MPI/DP 地址 5 //public byte SegmentId; // 保留为 0 6 public byte Rack; // 定义 CPU 的机架号 7 public byte Slot; // 定义 CPU 的槽号 8 } 2.2 PLC 存储区域类别编号 // 定义枚举类型 [PLC 的存储区域编号 ] public enum PLCBlockType { I = 1, //Input bytes Q = 2 , //Output bytes M = 3 , //Flag bytes T = 4 , //Timer words Z = 5 , //Counter words D = 6 , //Data from DB 10 } 三.常用函数详细讲解 3.1 建立 PLC 连接函数 首先从 W95_S7.DLL 中导入连接函数 ,访问权限为私有 ,C# 将会对此函数进行封装 ,供外部调用 ,稍后讲解 . /// <summary> 与 PLC 建立连接 ,该函数必须在其他所有函数调用之前被调用 /// </summary> 标准文档 实用文案 3 /// <param name="nr"> 连接数 ,在 DOS,WIN3.1 最多可以有 4 个 ,在 WIN95 以上最多可以有 16 个< /param> 4 /// <param name="device"> 与 PLC 通讯的设备名称 ,一般为 S7ONLINE </param> /// <param name="adr_table">参数列表 ,4 个值分别为 MPI/DP 地址 ,保留值 =0, 槽号 ,机架号 </para m> 6 /// <returns> 0 正常返回 ,非 0 为错误号 </returns> 7 [DllImport( "w95_s7.dll" )] 8 private extern static int load_tool( byte nr, string device, byte [,] adr_table); 说明 : 在一个 MPI/DP 网络中若有多个 PLC 时,可指定多个连接列。最后一列的所有参数须置 0 ,以标志参 数列结束。例如一个 MPI/DP 网中有两个 PLC,他们的 MPI 地址分别为 2 和 3,槽号均为 2 ,机架号均为 0, 则可按如下方式调用 :byte[,] ba={{2,0,2,0},{3,0,2,0},{0,0,0,0}}; int err=load_tool(1, "s7online",ba); 返 回值为 int 型,如果

文档评论(0)

182****5045 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档