C#项目,跟西门子PLC通讯
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using S7.Net;
namespace MeProgram
{
public class S7NetPlc
{
Plc plc;
/// <summary>
/// 初始化S7NetPLC
/// </summary>
/// <param name="IP"></param>
/// <param name="CPUType"></param>
public S7NetPlc(string IP, string CPUType ="S71200")
{
CreatePlc(IP, CPUType);
}
/// <summary>
/// 实例化PLC IP和CPU型号 CPU型号默认S71200
/// </summary>
/// <param name="ip"></param>
/// <param name="cpu"></param>
void CreatePlc(string ip, string cpu)
{
CpuType cputype = new CpuType();
if (Enum.TryParse(cpu.ToUpper(), out cputype))
{
plc = new Plc(cputype, ip, 0, 1);
}
else
{
Console.WriteLine("CPU型号错误");
}
}
/// <summary>
/// 连接PLC 再次调用可重新连接
/// </summary>
public async void Connet()
{
try
{
await plc.OpenAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// PLC连接状态
/// </summary>
/// <returns></returns>
public bool ConnetStatus()
{
return plc.IsConnected;
}
#region 读取PLC数据
/// <summary>
/// 读取PLC 输入点 i
/// </summary>
/// <param name="start">开始的地址</param>
/// <param name="字节数">读取字节数量</param>
/// <returns></returns>
public BitArray Get_I(int 地址I点, int 数量)
{
BitArray bitArray = new BitArray(数量);
try
{
if (plc.IsConnected)
{
bitArray = (BitArray)plc.Read(DataType.Input, 0, 地址I点, VarType.Bit, 数量);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return bitArray;
}
/// <summary>
/// 读取PLC 输出点Q
/// </summary>
/// <param name="start">开始的地址</param>
/// <param name="字节数">读取字节数量</param>
/// <returns></returns>
public BitArray Get_Q(int 地址Q点, int 数量)
{
BitArray bitArray = new BitArray(数量);
try
{
if (plc.IsConnected)
{
bitArray = (BitArray)plc.Read(DataType.Output, 0, 地址Q点, VarType.Bit, 数量);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return bitArray;
}
/// <summary>
/// 读取PLC默认寄存器地址
/// </summary>
/// <param name="地址M点"></param>
/// <param name="字节数"></param>
/// <returns></returns>
public BitArray Get_M(int 地址


4822

被折叠的 条评论
为什么被折叠?



