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

上传人:m**** 文档编号:432754709 上传时间:2023-04-17 格式:DOC 页数:9 大小:277.50KB
返回 下载 相关 举报
西门子Prodave6.0在C#中地应用_第1页
第1页 / 共9页
西门子Prodave6.0在C#中地应用_第2页
第2页 / 共9页
西门子Prodave6.0在C#中地应用_第3页
第3页 / 共9页
西门子Prodave6.0在C#中地应用_第4页
第4页 / 共9页
西门子Prodave6.0在C#中地应用_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《西门子Prodave6.0在C#中地应用》由会员分享,可在线阅读,更多相关《西门子Prodave6.0在C#中地应用(9页珍藏版)》请在金锄头文库上搜索。

1、word 最近在做一个数据采集项目,涉与到许多与西门子S7系列PLC的通信,由于自己的VC水平属于半瓶子晃荡,所以就想利用C#来进展开发个人比拟喜欢C#的代码风格,看着很清爽,虽然C#这种高级语言与底层的设备通讯效率确实不如C+,但好在数据量不大,实时性要求不算太高,用C#还是可以应付的。在界面开发方面,高级语言确实不如WinCC,Intouch之类的组态软件,但在数据处理上面,却有很大的灵活性。 在这里很感谢吴向阳,在中国工控网上面发现了他的文章,因为我是从C#转到工控方向的,以前对PLC一点都不懂,刚接触这一行时,学习起来很吃力,看了他的这篇文章,让我对PLC的有了更加深入的了解。我的这个

2、DCProdave.cs就是在他的根底上修改的,加了一些自己的东西。还望各位多多提意见,多多交流!Prodave版本: PRODAVE6.0 - W95_S7.DLLPLC模拟环境: PLCSIM V5.4开发环境: VS.NET 2005 一.从w95_s7.dll中导入PLC通讯函数的方法DllImport在使用DllImport之前,必须引入InteropServices, 代码如下: using System.Runtime.InteropServices;具体使用方法可以参考我的博客中的一篇文章 C#(.net)中的DllImport用法转写的很不错,千万要注意C+数据类型到C#的对

3、应关系,选用适宜的类型。比如 char*可以用string来转换,指针类型可以ref 或者数组。二.定义结构体类型2.1 PLC连接参数结构体1/定义结构体连接PLC所需参数2publicstructPLCConnParam34publicbyteAddres;/定义CPU的MPI/DP地址5/publicbyteSegmentId; /保存为06publicbyteRack;/定义CPU的机架号7publicbyteSlot;/定义CPU的槽号82.2 PLC存储区域类别编号1/定义枚举类型PLC的存储区域编号2publicenumPLCBlockType34I=1,/Inputbytes5

4、Q=2,/Outputbytes6M=3,/Flagbytes7T=4,/Timerwords8Z=5,/Counterwords9D=6,/DatafromDB10三.常用函数详细讲解3.1 建立PLC连接函数首先从W95_S7.DLL中导入连接函数,访问权限为私有,C#将会对此函数进展封装,供外部调用,稍后讲解.1/*/与PLC建立连接,该函数必须在其他所有函数调用之前被调用2/3/连接数,在DOS,WIN3.1最多可以有4个,在WIN95以上最多可以有16个4/与PLC通讯的设备名称,一般为S7ONLINE5/参数列表,4个值分别为MPI/DP地址,保存值=0,槽号,机架号6/0正常返回

5、,非0为错误号7DllImport(w95_s7.dll)8privateexternstaticintload_tool(bytenr,stringdevice,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如此表示

6、执行成功,非零值,如此需要根据错误号查找到错误具体信息,具体参照本文第五局部:错误代码字典 当然如果PLC使用的是DP网络时,只需要将Set PG/PC Interface中接口参数分配选为PLCSIM(PROFIBUS)即可,Prodave不需要做任何修改(当然PLC地址肯定也是DP口的地址哦),具体如如下图:个人不太习惯西门子的这种函数命名,索性就按照C#的常用习惯,进展一下简单的封装,供外部调用.1/*/建立连接,同一个连接只容许调用一次2/3/连接号connNo为1-44/连接参数,PLCConnParam定义的参数结构体5/返回10进制错误号,0表示没有错误6publicstatic

7、intOpen(byteconnNo,PLCConnParamconnParam)78intPLCCPUt=connParam.Length;9if(PLCCPUt=0)/传递参数不正确1011return-1;1213byte,btr=newbytePLCCPUt+1,4;/多分配1个,用于存放0作为连接完毕标记14/转换连接表15for(inti=0;iconnParam.Length;i+)1617btri,0=connParami.Addres;18btri,1=0;19btri,2=connParami.Slot;20btri,3=connParami.Rack;2122btrcon

8、nParam.Length,0=0;23btrconnParam.Length,1=0;24btrconnParam.Length,2=0;25btrconnParam.Length,3=0;26/调用初始化函数,打开连接27interrCode=load_tool(connNo,S7ONLINE,btr);28returnerrCode;29 建立于PLC的连接,只需在数采程序启动的时候调用即可,并且只能打开一次,否如此报错. 驱动设备名称S7ONLINE,一般情况下是不会有变化的,所以这里就写死了.特别需要指出的是,这个函数的第一个参数(连接号),是指当前连接有多少个PLC连接(严格意义上

9、来讲,是CPU的个数,因为有可能2个PLC共用1个CPU,之间通过IM467组态),激活连接并交换数据的时候,和这个值有点关系. 在建立连接的时候默认激活第1个连接.3.2 断开与PLC的连接从W95_S7.DLL中导入函数,依然是私有,因为我要对所有的导入函数进展封装.1/*/断开与PLC的连接,必须退出数采软件之前调用,否如此PLC的连接一直被占用,影响下次连接2/3/0正常返回,非0为错误号4DllImport(w95_s7.dll)5privateexternstaticintunload_tool();关闭PLC的连接函数进展C#封装,没有改变任何代码,只是换了个函数名.1publi

10、cstaticintClose()23returnunload_tool();43.3 激活连接,当前连接列中某个时刻有且只有1个PLC是激活状态.建立连接的时候,默认激活第1个连接.1/*/激活与MPI网中的哪个CPU通讯,load_tool后默认激活第一个CPU连接2/3/连接号,对应于参数adr_table所传递的连接参数顺序4/0正常返回,非0为错误号,假如激活的连接在MPI网中没有,如此返回错误号5175DllImport(w95_s7.dll)6privateexternstaticintnew_ss(byteno); 其参数与load_tool中参数adr_table所传递的连接

11、参数顺序对应譬如byte, btr=2,0,2,0,3,0,2,0,0,0,0,0 , new_ss(1)如此激活第1个连接即与MPI地址为2的PLC通讯,类似的new_ss(2)如此激活与MPI地址为3的PLC通讯,在数采系统中,为了读取所有PLC的数据,采用定时循环激活每个PLC的连接,然后读取其数据.C#封装如下:1publicstaticintActiveConn(intconnNO)23returnnew_ss(byte)connNO);43.4 从DB块中读取字节数据(返回BYTE数组)1/*/从DB中读取BYTE数组(字节数可以是任意长度的)2/3/DB块号4/DBB起始编号,0

12、表示DBB0,1表示DBB1,跨度为BYTE5/读取的BYTE长度(任意长度,可以为奇数)6/返回值,BYTE型buffer7/0正常返回,非0为错误号8DllImport(w95_s7.dll)9privateexternstaticintd_field_read(intblockno,intno,intamount,bytebuffer);C#封装如下:1/*/读取DB块的BYTE数据2/3/DB块号,如:DB24/DB数据的起始字节,如DBB2如此从2开始读5/要读取的字节数,如从DBB2-DBB5,共4个字节6/BYTE型缓存区,存储读取的数据7/数据缓存区的起始位置8/返回值0:成功非0:错误代码9publicstaticintGetDBByteData(intDBBlockNO,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号