using System;
namespace CL.HCPLC
{
/// <summary>
/// 汇川PLC
/// </summary>
public class HCPLCHelp
{
/// <summary>
/// PLC 链接状态
/// </summary>
public bool m_bConnected = false;
///工位ID
public int nId = 0;
/// <summary>
/// 读取PLC
/// </summary>
/// <param name="nStartAddr">起初地址</param>
/// <param name="nCount">读取数量</param>
/// <param name="nNetId">链接ID</param>
/// <param name="nREGI">元器件地址</param>
/// <param name="nPLCNo">PLC 型号</param>
/// <param name="nDataType">读取PLC 数据类型</param>
/// <returns></returns>
public string Read(int nStartAddr, int nCount, int nNetId, REGI nREGI, PLCNo nPLCNo, DataType nDataType)
{
//缓冲区。读取整型字元件则一个元件占两个byte,位元件则占一个byte。例如读取D元件500个,则缓冲区大小为1000以上
byte[] pBuf = new byte[16000];
//int nStartAddr = Convert.ToInt32(txtStartAddr2.Text);
//int nCount = Convert.ToInt32(txtCount2.Text);
bool bIsWord = false;//是否字元件
SoftElemType ElemType = SoftElemType.REGI_H5U_Y;
if (nREGI == REGI.Y)
{
switch (nPLCNo)
{
case PLCNo.REGI_H3U:
ElemType = SoftElemType.REGI_H3U_Y;
break;
case PLCNo.REGI_H5U:
ElemType = SoftElemType.REGI_H5U_Y;
break;
}
}
else if (nREGI == REGI.X)
{
switch (nPLCNo)
{
case PLCNo.REGI_H3U:
ElemType = SoftElemType.REGI_H3U_X;
break;
case PLCNo.REGI_H5U:
ElemType = SoftElemType.REGI_H5U_X;
break;
}
}
else if (nREGI == REGI.S)
{
switch (nPLCNo)
{
case PLCNo.REGI_H3U:
ElemType = SoftElemType.REGI_H3U_S;
break;
case PLCNo.REGI_H5U:
ElemType = SoftElemType.REGI_H5U_S;
break;
}
}
else if (nREGI == REGI.M)
{
switch (nPLCNo)
{
case PLCNo.REGI_H3U:
ElemType = SoftElemType.REGI_H3U_M;
break;
case PLCNo.REGI_H5U:
ElemType = SoftElemType.REGI_H5U_M;
break;
}
}
else if (nREGI == REGI.B)
{
ElemType = SoftElemType.REGI_H5U_B;
}
else if (nREGI == REGI.D)
{
bIsWord = true;
switch (nPLCNo)
{
case PLCNo.REGI_H3U:
ElemType = SoftElemType.REGI_H3U_DW;