private OperateResult CheckPlcReadResponse(byte[] ack)
        {
            if (ack.Length == 0)
            {
                return(new OperateResult(StringResources.Language.MelsecFxReceiveZore));
            }
            if (ack[0] == 0x15)
            {
                return(new OperateResult(StringResources.Language.MelsecFxAckNagative + " Actual: " + SoftBasic.ByteToHexString(ack, ' ')));
            }
            if (ack[0] != 0x02)
            {
                return(new OperateResult(StringResources.Language.MelsecFxAckWrong + ack[0] + " Actual: " + SoftBasic.ByteToHexString(ack, ' ')));
            }

            if (!MelsecHelper.CheckCRC(ack))
            {
                return(new OperateResult(StringResources.Language.MelsecFxCrcCheckFailed));
            }

            return(OperateResult.CreateSuccessResult( ));
        }