C#与PLC通信程序Word版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[DllImport("w95_s7.dll")]
private extern static int load_tool(byte nr, string device, byte[,] adr_table);
对“打开PLC连接函数”进行简单的C#封装后代码如下:
///<summary>建立连接,同一个连接只容许调用一次
///</summary>
///<param name="connNo">连接号connNo为1-4</param>
///<param name="connParam">连接参数,PLCConnParam定义的参数结构体</param>
///<returns>返回10进制错误号,0表示没有错误</returns>
public static int Open(byte connNo, PLCConnParam[] connParam)
{
int PLCCPUCnt = connParam.Length;
if (PLCCPUCnt <= 0) //传递参数不正确
{
return -1;
}
byte[,] btr = new byte[PLCCPUCnt + 1, 4]; //多分配1个,用于存放0作为连接结束标记
//转换连接表
for (int i = 0; i < connParam.Length; i++)
{
btr[i, 0] = connParam[i].Addres;
btr[i, 1] = 0;
btr[i, 2] = connParam[i].Slot;
btr[i, 3] = connParam[i].Rack;
}
btr[connParam.Length, 0] = 0;
btr[connParam.Length, 1] = 0;
btr[connParam.Length, 2] = 0;
btr[connParam.Length, 3] = 0;
//调用初始化函数,打开连接
int errCode = load_tool(connNo, "S7ONLINE", btr);
return errCode;
}
public struct PLCConnParam
{
public byte Addres; // 定义CPU的MPI/DP地址
//public byte SegmentId; // 保留为0
public byte Rack; // 定义CPU的机架号
public byte Slot; // 定义CPU的槽号
}
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
}
[DllImport("w95_s7.dll")]
private extern static int load_tool(byte nr, string device, byte[,] adr_table);
///<summary>
///</summary>
///<param name="connNo"></param>
///<param name="connParam"></param>
///<returns></returns>
public static int Open(byte connNo, PLCConnParam[] connParam)
{
int PLCCPUCnt = connParam.Length;
if (PLCCPUCnt <= 0)
{
return -1
}
byte[,] btr = new byte[PLCCPUCnt + 1, 4]
for (int i = 0; i < connParam.Length; i++)
{
btr[i, 0] = connParam[i].Addres;
btr[i, 1] = 0;
btr[i, 2] = connParam[i].Slot;
btr[i, 3] = connParam[i].Rack;
}
btr[connParam.Length, 0] = 0;
btr[connParam.Length, 1] = 0;
btr[connParam.Length, 2] = 0;
btr[connParam.Length, 3] = 0;
int errCode = load_tool(connNo, "S7ONLINE", btr) return errCode;
}。

相关文档
最新文档