/// <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); }