203 lines
6.9 KiB
C#
203 lines
6.9 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Text;
|
|||
|
using System.Data;
|
|||
|
using CommonClassLib;
|
|||
|
using ICommLayer;
|
|||
|
using DBFactory;
|
|||
|
namespace SimensCP5611
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>CP5611<31><31>ʵ<EFBFBD><CAB5>Profibus<75><73><EFBFBD>߷<EFBFBD>ʽ<EFBFBD><CABD>ͨѶ<CDA8>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>豸״̬<D7B4><CCAC>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>Richard.Liu
|
|||
|
/// </summary>
|
|||
|
public class CGetDeviceState:IGetDeviceState
|
|||
|
{
|
|||
|
DBOperator dbo = new DBOperator();
|
|||
|
string _commLayerError;
|
|||
|
|
|||
|
public string CommLayerError
|
|||
|
{
|
|||
|
get { return _commLayerError; }
|
|||
|
set { _commLayerError = value; }
|
|||
|
}
|
|||
|
public CGetDeviceState()
|
|||
|
{
|
|||
|
dbo.Open();
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//~CGetDeviceState()
|
|||
|
//{
|
|||
|
// dbo.Close();
|
|||
|
//}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
///<2F><><EFBFBD><EFBFBD>أ<EFBFBD> 0-<2D><EFBFBD>
|
|||
|
/// 1-<2D>л<EFBFBD>
|
|||
|
///<2F><>1<EFBFBD><31>
|
|||
|
///<2F><><EFBFBD>´<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>/д<><D0B4>־λ
|
|||
|
///1-д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ
|
|||
|
///ȷ<>ϰ<EFBFBD>ť<EFBFBD><C5A5>
|
|||
|
///1-<2D><EFBFBD>ȷ<EFBFBD><C8B7>
|
|||
|
///2-<2D>л<EFBFBD>ȷ<EFBFBD><C8B7>
|
|||
|
/// <09><>2<EFBFBD><32>
|
|||
|
///<2F><><EFBFBD>´<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///<2F>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///<2F><><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
/// <20><><EFBFBD><EFBFBD>
|
|||
|
///1-<2D>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///2-<2D>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///3-ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
///4-<2D><>1#λ<><CEBB>
|
|||
|
///5-<2D><>2#λ<><CEBB>
|
|||
|
/// <20><>
|
|||
|
///<2F><><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
/// <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
|
|||
|
///1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///3-<2D>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///4-ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
///<2F><><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
///ȷ<>ϰ<EFBFBD>ť<EFBFBD><C5A5>
|
|||
|
///һ<><D2BB><EFBFBD>仯<EFBFBD><E4BBAF>ֵ<EFBFBD><D6B5>ÿȷ<C3BF><C8B7>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ֵ<EFBFBD>仯һ<E4BBAF>Σ<EFBFBD><CEA3>Ա<EFBFBD>־һ<D6BE><D2BB>
|
|||
|
///<2F>µ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>仯<EFBFBD><E4BBAF>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>
|
|||
|
///<2F><><EFBFBD>仯<EFBFBD><E4BBAF>
|
|||
|
///<2F><>3<EFBFBD><33> <20><><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///<2F><>4<EFBFBD><34> <20>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///<2F>յ<EFBFBD>X<EFBFBD><58><EFBFBD>꣨<EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
|
|||
|
///ǰ<><C7B0><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
/// <20><><EFBFBD><EFBFBD>5<EFBFBD><35><EFBFBD>Ժ<D4BA>ֻ<EFBFBD>ԶѶ<D4B6><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壩
|
|||
|
///<2F><>5<EFBFBD><35> <20>յ<EFBFBD>Y<EFBFBD><59><EFBFBD>꣨<EFBFBD>ظ߶ȷ<DFB6><C8B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
///<2F><>6<EFBFBD><36> ǰ5<C7B0><35><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
/// </summary>
|
|||
|
/// <param name="DeviceIndex"><3E>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
|
|||
|
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><F3A3ACB7><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>6<EFBFBD><36>4<EFBFBD><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>״̬</returns>
|
|||
|
public int [] GetDeviceState(int DeviceIndex, int TaskIndex)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
int[] _Rword = new int[6];
|
|||
|
byte[] _RRword = new byte[200];
|
|||
|
DataSet ds = dbo.ExceSQL("SELECT F_DeviceIndex,F_DeviceKindIndex, F_DBWAddress, F_DBWSendLength, F_DBWGetLength FROM T_Base_Device where F_DeviceIndex=" + DeviceIndex);
|
|||
|
DataView dv = ds.Tables[0].DefaultView;
|
|||
|
if (ds.Tables[0].DefaultView.Count > 0)
|
|||
|
{
|
|||
|
if (Convert.ToDecimal(dv[0]["F_DBWGetLength"]) > 1)
|
|||
|
{
|
|||
|
|
|||
|
_RRword = CSimensCP5611.DB_Read_CP5611(1, 2, Convert.ToInt16(dv[0]["F_DBWAddress"]), Convert.ToInt16(dv[0]["F_DBWGetLength"])*2);
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>翪<EFBFBD><E7BFAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>λ״̬bit1--bit16
|
|||
|
{
|
|||
|
int add = 0;
|
|||
|
int Bit = Convert.ToInt16(Convert.ToDecimal(dv[0]["F_DBWGetLength"]) * 16) - 1;//ת<><D7AA><EFBFBD><EFBFBD>bit0--bit15
|
|||
|
if (Bit > 7)
|
|||
|
{
|
|||
|
add = 1;
|
|||
|
Bit = Bit - 8;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
add = 0;
|
|||
|
|
|||
|
}
|
|||
|
_RRword = CSimensCP5611.DB_Read_CP5611(1, 2, Convert.ToInt16(dv[0]["F_DBWAddress"])+add, 1, Bit);
|
|||
|
_Rword[0] = _RRword[0];
|
|||
|
_Rword[1] = 3;//3-<2D><><EFBFBD><EFBFBD><E2BFAA>״̬
|
|||
|
_Rword[2] = TaskIndex;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
_Rword[3] = 0;
|
|||
|
_Rword[4] = 0;
|
|||
|
_Rword[5] = DeviceIndex;//<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return _Rword;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if (_RRword == null)
|
|||
|
{
|
|||
|
_commLayerError = "SimensCP5611.CGetDeviceState" + ":GetDeviceState---" + CSimensCP5611.ErrorsText;
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
for (int g = 0; g <= 5; g++)
|
|||
|
{
|
|||
|
_Rword[g] = _RRword[(2 * g)] * 256 + _RRword[(2 * g + 1)];
|
|||
|
}
|
|||
|
|
|||
|
//ds.Dispose();
|
|||
|
int _RXor = 0;
|
|||
|
if (_Rword != null)
|
|||
|
{
|
|||
|
if (Convert.ToInt16(dv[0]["F_DeviceKindIndex"]) == 1)//<2F>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
|||
|
{
|
|||
|
_RXor = _Rword[0];
|
|||
|
for (int i = 1; i <= 4; i++)
|
|||
|
{
|
|||
|
_RXor = _RXor ^ _Rword[i];
|
|||
|
}
|
|||
|
//_Rword[0] == 1 && PLC<4C><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ
|
|||
|
if (_Rword[2] == TaskIndex && _RXor == _Rword[5])//(<28><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>TaskIndex<65><78><EFBFBD><EFBFBD>ϢӦ<CFA2><D3A6>)
|
|||
|
{
|
|||
|
_Rword[5] = DeviceIndex;//<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (_Rword[1] == 0)
|
|||
|
{
|
|||
|
_Rword[1] = 2;//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ɿڱ<C9BF><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
return _Rword;
|
|||
|
}
|
|||
|
else
|
|||
|
return null;
|
|||
|
}
|
|||
|
else if (Convert.ToInt16(dv[0]["F_DeviceKindIndex"]) == 28)//<2F><><EFBFBD>翪<EFBFBD>زɼ<D8B2><C9BC><EFBFBD>
|
|||
|
{
|
|||
|
int[] rr = new int[_RRword.GetUpperBound(0) + 1];
|
|||
|
for (int i = _RRword.GetLowerBound(0); i <= _RRword.GetUpperBound(0); i++)
|
|||
|
{
|
|||
|
rr[i] = Convert.ToInt32(_RRword[i]);
|
|||
|
}
|
|||
|
return rr;
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
_RXor = _Rword[0];
|
|||
|
for (int i = 1; i <= 2; i++)
|
|||
|
{
|
|||
|
_RXor = _RXor ^ _Rword[i];
|
|||
|
}
|
|||
|
//_Rword[0] == 1 && PLC<4C><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ
|
|||
|
if (_Rword[2] == TaskIndex && _RXor == _Rword[3])//(<28><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>TaskIndex<65><78><EFBFBD><EFBFBD>ϢӦ<CFA2><D3A6>)
|
|||
|
{
|
|||
|
|
|||
|
_Rword[3] = 0;
|
|||
|
_Rword[4] = 0;
|
|||
|
_Rword[5] = DeviceIndex;//<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return _Rword;
|
|||
|
}
|
|||
|
else
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_commLayerError = "SimensCP5611.CGetDeviceState" + ":GetDeviceState---" +ex.Message ;
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|