1西门子 S7300/400 系列的 PLC没有公开通讯协议,但西门子公司提供的 ProDave 软件公开了一系列库函数,使用计算机高级语言调用这些函数,可实现以 MPI的方式与 PLC通讯。当今的高级语言 VC#有着非常高效的开发手段,在把基础类库、标准模块都编好的情况下,开发监控界面的速度比 WinCC慢不了多少,但灵活性却是 WInCC无法比的。大家只要找到西门子的 ProDave 中的动态连接库:W95_S7.DLL,并把它注册到你的计算机即可(当然,你若有一套完整的 ProDave 安装程序,安装即可自动注册),然后在 C#这边编程调用,下面来讲解如何在 C#中调用动态库。由于 W95_S7.DLL是用 C语言编写的,很多函数接口不适用于 C#,因此我们可以创建一个 C#类库,把这些函数进行封装,每次开发监控界面调用此类库即可。一、 C#中调用 DLL 库的方法1、 在名称空间之前使用:using System.Runtime.InteropServices; //用于调用动态库的接口,一定要引用2、 导入每一个库函数,均要在函数声明之前使用属性字段:[DllImport("w95_s7.dll")]譬如与 PLC 建立连接的库函数 load_tool(),应使用如下的方式进行声明:[DllImport("w95_s7.dll")]private extern static int load_tool(byte nr,string device,byte[,] adr_table);二、 ProDave 中的重要库函数介绍1、 与 PLC 建立通讯连接的库函数:load_tool()该函数必须在其他所有函数调用之前被调用,在 C 中的声明为:int load_tool(int nr,char*device,char* adr_table);由于 C#在安全模式下不容许使用指针,因此我们把它转换成 C#模式:private extern static int load_tool(byte nr,string device,byte[,] adr_table);参数 nr: 指定连接号 1-4,一般设为 1device: 设备名称,西门子的示例是设为"s7online",测试时,若改成其他名称好像连不上。adr_table: 一个二维数组,指定一系列连接参数,依次为:MPI 地址、保留为 0、CPU 槽号、CPU 机架号。在一个 MPI 网络中若有多个 CPU 时,可指定一个以上的连接列。最后一列的参数的 MPI 地址应制定为 0,以标志参数列结束。e.g.一个 MPI 网中有两个 CPU,他们的 MPI 地址分别为 2 和 3,槽号均为 2,机架号均为 0,则可按如下方式调用: byte[,] bt={{2,0,2,0},{3,0,2,0},{0,0,0,0}};int err=load_tool(1, "s7online",bt);注:ProDave 中的所有库函数均返回整数数据,为 0 表示调用该函数成功...