You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

251 lines
7.8 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aborlen.Opc.PlcBase
{
public interface IDevice : IDisposable
{
/// <summary>
/// 设备连接Id 用于服务端存储实例
/// </summary>
string DeviceConnectionId { get; set; }
/// <summary>
/// 设备IP地址
/// </summary>
string DeviceIpAddress { get; set; }
/// <summary>
/// 设备端口号
/// </summary>
int DevicePort { get; set; }
/// <summary>
/// plc型号
/// </summary>
string PlcSerialType { get; set; }
/// <summary>
/// 获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈,单位是毫秒
/// </summary>
int Receive_TimeOut { get; set; }
/// <summary>
/// 获取或设置连接的超时时间,单位是毫秒
/// </summary>
int Connect_TimeOut { get; set; }
/// <summary>
/// 建立与PLC通讯的长连接
/// </summary>
bool ConnectServer();
/// <summary>
/// 断开与服务端的长连接
/// </summary>
void ClosePlcServer();
bool PlcOnlineStatus();
/// <summary>
/// 读取指定地址数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="address">数据地址</param>
/// <param name="length">数据长度</param>
/// <returns>数据结果</returns>
PlcDataParam<T> ReadData<T>(string address, ushort length );
/// <summary>
/// 读取PLC 指定地址BOOL类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<bool> DeviceReadBool(string address);
/// <summary>
/// 读取PLC byte类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<byte> DeviceReadByte(string address);
/// <summary>
/// 读取PLC 日期类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<DateTime> DeviceReadDateTime(string address);
/// <summary>
/// 读取PLC Double类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<Double> DeviceReadDouble(string address);
/// <summary>
/// 读取PLC Float类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<float> DeviceReadFloat(string address);
/// <summary>
/// 读取PLC Short类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<short> DeviceReadShort(string address);
/// <summary>
/// 读取PLC Int类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<int> DeviceReadInt(string address);
/// <summary>
/// 读取PLC Long类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <returns>数据结果</returns>
PlcDataParam<long> DeviceReadLong(string address);
/// <summary>
/// 读取PLC String类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="length">字符串长度</param>
/// <returns>数据结果</returns>
PlcDataParam<string> DeviceReadString(string address, object length);
/// <summary>
/// 读取PLC Byte[]类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="length">字符串长度</param>
/// <returns>数据结果</returns>
PlcDataParam<byte[]> DeviceReadBytes(string address, object length);
/// <summary>
/// 向PLC写入指定类型数据
/// </summary>
/// <typeparam name="S"></typeparam>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<S> WriteData<S>(string address, S value, ushort length = 0);
/// <summary>
/// 向PLC写入BOOL类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<bool> DeviceWriteBool(string address, object value);
/// <summary>
/// 向PLC写入Byte类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<byte> DeviceWriteByte(string address, object value);
/// <summary>
/// 向PLC写入DateTime类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<DateTime> DeviceWriteDateTime(string address, DateTime value);
/// <summary>
/// 向PLC写入Double类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<double> DeviceWriteDouble(string address, object value);
/// <summary>
/// 向PLC写入Float类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<float> DeviceWriteFloat(string address, object value);
/// <summary>
/// 向PLC写入Short类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<short> DeviceWriteShort(string address, object value);
/// <summary>
/// 向PLC写入Int类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<int> DeviceWriteInt(string address, object value);
/// <summary>
/// 向PLC写入Long类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<long> DeviceWriteLong(string address, object value);
/// <summary>
/// 向PLC写入String类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<string> DeviceWriteString(string address, object value, ushort length);
/// <summary>
/// 向PLC写入Byte[]类型数据
/// </summary>
/// <param name="address">数据地址</param>
/// <param name="value">写入值</param>
/// <returns>写入后的结果</returns>
PlcDataParam<byte[]> DeviceWriteBytes(string address, object value);
}
}