/// <summary>
        /// 写OMLON PLC地址数据
        /// </summary>
        /// <param name="cmdData">生成的命令</param>
        /// <param name="byPlcDot">plc 节点</param>
        /// <param name="byLocalDot">本机 节点</param>
        /// <param name="index">地址的 数据区 例如:D600</param>
        /// <param name="WriteNumber">个数</param>
        /// <param name="writeValue">需要写入的数据</param>
        /// <param name="addressType">地址 plc D区:0x82 plc H区:0xB2</param>
        /// <returns></returns>
        public static int CmdOmlonWriteData(byte[] cmdData,
                                            byte byPlcDot,
                                            byte byLocalDot,
                                            int index,
                                            int WriteNumber,
                                            byte[] writeValue,
                                            OMLONADDRESS addressType)
        {
            int commandLength = 0;

            cmdData[0] = 0x80;
            cmdData[1] = 0x00;
            cmdData[2] = 0x02;
            cmdData[3] = 0x00;       //PLC网络号

            cmdData[4] = byPlcDot;   //PLC节点号
            cmdData[5] = 0x00;       //PLC单元号

            cmdData[6] = 0x00;       //上位机网络号
            cmdData[7] = byLocalDot; //上位机节点号
            cmdData[8] = 0x00;

            cmdData[9] = 0x03;  //SID

            cmdData[10] = 0x01; //写命令
            cmdData[11] = 0x02; //写命令

            cmdData[12] = (byte)addressType;

            cmdData[13] = (byte)(index / 256); //起始地址
            cmdData[14] = (byte)(index % 256); //起始地址

            cmdData[15] = 0x00;

            cmdData[16] = (byte)(WriteNumber / 256); //写的个数
            cmdData[17] = (byte)(WriteNumber % 256); //写的个数

            for (int n = 0; n < WriteNumber * 2; n++)
            {
                cmdData[18 + n] = writeValue[n];
            }

            commandLength = 18 + 2 * WriteNumber;

            return(commandLength);
        }
        /// <summary>
        ///  生成读取命令
        /// </summary>
        /// <param name="byPlcDot">plc节点号</param>
        /// <param name="byLocalDot">本机节点号</param>
        /// <param name="index">读的地址的 数据区 例如:D600</param>
        /// <param name="WordNumber">读取的 数据的个数 15 表示 D600-D615</param>
        /// <param name="addressType">读取的地址 plc D区:0x82 plc H区:0xB2</param>
        /// <returns>生成的命令</returns>
        public static byte[] CmdOmlonReadData(byte byPlcDot,
                                              byte byLocalDot,
                                              int index,
                                              int WordNumber,
                                              OMLONADDRESS addressType)
        {
            byte[] cmdData = new byte[32];
            cmdData[0] = 0x80;
            cmdData[1] = 0x00;
            cmdData[2] = 0x02;
            cmdData[3] = 0x00;       //PLC网络号

            cmdData[4] = byPlcDot;   //PLC节点号
            cmdData[5] = 0x00;       //PLC单元号

            cmdData[6] = 0x00;       //上位机网络号
            cmdData[7] = byLocalDot; //上位机节点号
            cmdData[8] = 0x00;

            cmdData[9] = 0x03;  //SID

            cmdData[10] = 0x01; //读命令
            cmdData[11] = 0x01; //读命令

            cmdData[12] = (byte)addressType;

            cmdData[13] = (byte)(index / 256); //起始地址
            cmdData[14] = (byte)(index % 256); //起始地址

            cmdData[15] = 0x00;

            cmdData[16] = (byte)(WordNumber / 256); //读取字数
            cmdData[17] = (byte)(WordNumber % 256); //读取字数

            return(cmdData);
        }