/* * @(#)BPADynamicRecord.java * * Copyright (C) 2006-2008 www.interpss.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * @Author Stephen Hau * @Version 1.0 * @Date 02/11/2008 * * Revision History * ================ * */ package org.ieee.odm.adapter.bpa.dynamic; import org.ieee.odm.adapter.bpa.lf.BPABusRecord; import org.ieee.odm.common.ODMException; import org.ieee.odm.common.ODMLogger; import org.ieee.odm.model.base.BaseDataSetter; import org.ieee.odm.model.base.ODMModelStringUtil; import org.ieee.odm.model.dstab.DStabModelParser; import org.ieee.odm.model.dstab.DStabParserHelper; import org.ieee.odm.schema.DStabBusXmlType; import org.ieee.odm.schema.DStabGenDataXmlType; import org.ieee.odm.schema.GovBPAHydroTurbineGHXmlType; import org.ieee.odm.schema.GovHydroSteamGeneralModelXmlType; import org.ieee.odm.schema.SpeedGovBPAGSModelXmlType; import org.ieee.odm.schema.SpeedGovBPAGiGaCombinedXmlType; import org.ieee.odm.schema.SpeedGovBPARegGIModelXmlType; import org.ieee.odm.schema.SpeedGovBPAServoGAModelXmlType; import org.ieee.odm.schema.SteamTurbineBPATBModelXmlType; import org.ieee.odm.schema.SteamTurbineNRXmlType; public class BPADynamicTurbineGovernorRecord { public static void processTurbineGovernorData(String str, DStabModelParser parser) throws ODMException { final String strAry[]=getTGDataFields(str); String busId = BPABusRecord.getBusId(strAry[1]); DStabBusXmlType bus = parser.getDStabBus(busId); //DStabGenDataXmlType dynGen = (DStabGenDataXmlType)bus.getGenData().getEquivGen().getValue(); DStabGenDataXmlType dynGen = DStabParserHelper.getDefaultGen(bus.getGenData()); double ratedPower=dynGen.getMvaBase().getValue(); if(strAry[0].equals("GG")){ GovHydroSteamGeneralModelXmlType gov = DStabParserHelper.createGovHydroSteamGeneralModelXmlType(dynGen); //machine Id String tgId = ""; if(!strAry[3].equals("")){ tgId=strAry[3]; } gov.setDesc("Gov Hydro Steam General Model, MachId#" + tgId); //PMAX double Pmax=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")) Pmax/=10; gov.setPMAX(Pmax/ratedPower); //R double R=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) R/=1000; gov.setR(R); //T1 double T1=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) T1/=1000; gov.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")) T2/=1000; gov.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")) T3/=1000; gov.setT3(BaseDataSetter.createTimeConstSec(T3)); // T4 double T4=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) T4/=1000; gov.setT4(BaseDataSetter.createTimeConstSec(T4)); //T5 double T5=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) T5/=1000; gov.setT5(BaseDataSetter.createTimeConstSec(T5)); //F double F=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")) F/=1000; gov.setF(F); } else if(strAry[0].equals("GH")){ GovBPAHydroTurbineGHXmlType gov = DStabParserHelper.createGovBPAHydroTurbineGHXmlType(dynGen); //machine Id String id="1"; if(!strAry[3].equals("")){ id=strAry[3]; } gov.setDesc("GOV Hydro Turbine GH type, machId#"+id); //PMAX double Pmax=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")) Pmax/=10; gov.setPMAX(Pmax/ratedPower);//in machine based pu unit; //R double R=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) R/=1000; gov.setR(R); //TG double Tg=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) Tg/=1000; gov.setTG(BaseDataSetter.createTimeConstSec(Tg)); //TP double Tp=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")) Tp/=1000; gov.setTP(BaseDataSetter.createTimeConstSec(Tp)); //TD is corresponding to the TR in the ieee model double Td= ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")) Td/=1000; gov.setTd(BaseDataSetter.createTimeConstSec(Td)); // TW/2 double Twhalf= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) Twhalf/=1000; gov.setTwHalf(BaseDataSetter.createTimeConstSec(Twhalf)); // NOTE: Both VELCLOSE and VELOPEN is in PU based on PMAX. //VELCLOSE double Uc=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) Uc/=1000; gov.setVClose(Uc); //FVELOPEN double Uo=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")) Uo/=1000; gov.setVOpen(Uo); //Dd double Dd=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")) Dd/=1000; gov.setDd(Dd); //Epsilon double Epsilon=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")) Epsilon/=100000; gov.setEpsilon(Epsilon); } else if(strAry[0].equals("GS")){ SpeedGovBPAGSModelXmlType gov = DStabParserHelper.createSpeedGovBPAGSModelXmlType(dynGen); //machine Id String tgId="1"; if(!strAry[3].equals("")){ tgId=strAry[3]; } gov.setDesc("GOV Hydro Turbine GS type, machId#"+tgId); //PMAX double Pmax=new Double(strAry[4]).doubleValue(); if(!strAry[4].contains(".")) Pmax/=10; Pmax=Pmax/ratedPower; gov.setPmax(Pmax); //PMIN double Pmin=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) Pmin/=10; Pmin=Pmin/ratedPower; gov.setPmin(Pmin); //R double R=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) R/=1000; gov.setR(R); //T1 double T1=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")) T1/=1000; gov.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")) T2/=1000; gov.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) T3/=1000; gov.setT3(BaseDataSetter.createTimeConstSec(T3)); //VELOPEN double Vopen=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) Vopen/=10; gov.setVELOPEN(Vopen); //FVELCLOSE double Vclose=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")) Vclose/=10; gov.setVELCLOSE(Vclose); //Epsilon double Epsilon=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")) Epsilon/=100000; gov.setEpsilon(Epsilon); } else if(strAry[0].equals("GI")){ //make sure the governor and GiGa model are already there. SpeedGovBPARegGIModelXmlType regGi=null; if(dynGen.getGovernor()==null) DStabParserHelper.createGovBPAGiGaTbCombinedModelXmlType(dynGen); if(dynGen.getGovernor().getValue().getSpeedGov()==null) DStabParserHelper.createSpeedGovBPAGiGaCombinedXmlType(dynGen); regGi = DStabParserHelper.createSpeedGovBPARegGIModelXmlType(dynGen); //machine Id String tgId="1"; if(!strAry[3].equals("")){ tgId=strAry[3]; } regGi.setDesc("GOV Speed Governing GI type, machId#"+tgId); //T1 double T1=new Double(strAry[4]).doubleValue(); if(!strAry[4].contains(".")) T1/=1000; regGi.setT1(BaseDataSetter.createTimeConstSec(T1)); //Epsilon double Epsilon=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) Epsilon/=10000; regGi.setEpsilon(Epsilon); //K double K=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) K/=100; regGi.setK(K); //LoadSwich double LoadSwich=ODMModelStringUtil.getDouble(strAry[7], 2.0); regGi.setLoadSwichOff(LoadSwich==1.0?false:true); //Kp1 double Kp1=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")) Kp1/=1000; regGi.setKp1(Kp1); //Kd1 double Kd1= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) Kd1/=1000; regGi.setKd1(Kd1); //Ki1 double Ki1=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) Ki1/=1000; regGi.setKi1(Ki1); //INTGMAX1 double INTGMAX1=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")) INTGMAX1/=1000; INTGMAX1=INTGMAX1==0.0?9999.0:INTGMAX1; regGi.setINTGMAX1(INTGMAX1); //INTGMIN1 double INTGMIN1=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")) INTGMIN1/=1000; INTGMIN1=INTGMIN1==0.0?-9999.0:INTGMIN1; regGi.setINTGMIN1(INTGMIN1); //PIDMAX1 double PIDMAX1=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")) PIDMAX1/=1000; PIDMAX1=(PIDMAX1==0.0)?9999.0:PIDMAX1; regGi.setPIDMAX1(PIDMAX1); //PIDMIN1 double PIDMIN1=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")) PIDMIN1/=1000; PIDMIN1=(PIDMIN1==0.0)?-9999.0:PIDMIN1; regGi.setPIDMIN1(PIDMIN1); //LoadForwardSwitch double LoadForwardSwitch=ODMModelStringUtil.getDouble(strAry[15], 2.0); regGi.setLoadForwardSwitchOff(LoadForwardSwitch==1.0?false:true); //һ�ε�Ƶ�������� //һ�ε�Ƶ�������� } else if(strAry[0].equals("GI+")){ SpeedGovBPARegGIModelXmlType regGi = ((SpeedGovBPAGiGaCombinedXmlType)dynGen.getGovernor().getValue().getSpeedGov().getValue()).getRegulator(); //machine Id String tgId="1"; if(!strAry[3].equals("")){ tgId=strAry[3]; } regGi.setDesc("GOV Speed Governing GI/GI+ type, machId#"+tgId); //PresserSwitch double PresserSwitch=ODMModelStringUtil.getDouble(strAry[4], 2.0); regGi.setPresserSwitchOff(PresserSwitch==1.0?false:true); //Kp2 double Kp2=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) Kp2/=1000; regGi.setKp2(Kp2); //Kd2 double Kd2=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) Kd2/=1000; regGi.setKd2(Kd2); //Ki2 double Ki2=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")) Ki2/=1000; regGi.setKi2(Ki2); //INTGMAX2 double INTGMAX2=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[13].contains(".")) INTGMAX2/=1000; INTGMAX2=INTGMAX2==0.0?9999.0:INTGMAX2; regGi.setINTGMAX2(INTGMAX2); //INTGMIN2 double INTGMIN2=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) INTGMIN2/=1000; INTGMIN2=INTGMIN2==0.0?-9999.0:INTGMIN2; regGi.setINTGMIN2(INTGMIN2); //PIDMAX2 double PIDMAX2=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) PIDMAX2/=1000; PIDMAX2=(PIDMAX2==0.0)?9999.0:PIDMAX2; regGi.setPIDMAX2(PIDMAX2); //PIDMIN2 double PIDMIN2=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")) PIDMIN2/=1000; PIDMIN2=(PIDMIN2==0.0)?-9999.0:PIDMIN2; regGi.setPIDMIN2(PIDMIN2); //ConMax double ConMax=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")) ConMax/=1000; ConMax=(ConMax==0.0)?9999.0:ConMax; regGi.setConMax(ConMax); //ConMin double ConMin=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")) ConMin/=1000; ConMin=(ConMin==0.0)?-9999.0:ConMin; regGi.setConMin(ConMin); } else if(strAry[0].equals("GA")){ //make sure the governor and GiGa model are already there. SpeedGovBPAServoGAModelXmlType serGa=null; if(dynGen.getGovernor()==null) DStabParserHelper.createGovBPAGiGaTbCombinedModelXmlType(dynGen); if(dynGen.getGovernor().getValue().getSpeedGov()==null) DStabParserHelper.createSpeedGovBPAGiGaCombinedXmlType(dynGen); serGa = DStabParserHelper.createSpeedGovBPAServoGAModelXmlType(dynGen); //machine Id String tgId="1"; if(!strAry[3].equals("")){ tgId=strAry[3]; } serGa.setDesc("GOV Speed Governing GA type, machId#"+tgId); //Pe double Pe=new Double(strAry[4]).doubleValue(); if(!strAry[4].contains(".")) Pe/=100; serGa.setPe(Pe); //Tc double Tc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) Tc/=100; serGa.setTc(BaseDataSetter.createTimeConstSec(Tc)); //To double To=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) To/=100; serGa.setTo(BaseDataSetter.createTimeConstSec(To)); //VELCLOSE double VELCLOSE=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")) VELCLOSE/=100; serGa.setVELCLOSE(VELCLOSE); //VELOPEN double VELOPEN=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")) VELOPEN/=100; serGa.setVELOPEN(VELOPEN); //PMAX double Pmax= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) Pmax/=100; serGa.setPmax(Pmax); //PMIN double Pmin=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) Pmin/=100; serGa.setPmin(Pmin); //T1 double T1=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")) T1/=100; serGa.setT1(BaseDataSetter.createTimeConstSec(T1)); //Kp double Kp=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")) Kp/=100; serGa.setKp(Kp); //Kd double Kd=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")) Kd/=100; serGa.setKd(Kd); //Ki double Ki=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")) Ki/=100; serGa.setKi(Ki); //INTGMAX double INTGMAX=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")) INTGMAX/=100; INTGMAX=INTGMAX==0.0?9999.0:INTGMAX; serGa.setINTGMAX(INTGMAX); //INTGMIN double INTGMIN=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")) INTGMIN/=100; INTGMIN=INTGMIN==0.0?-9999.0:INTGMIN; serGa.setINTGMIN(INTGMIN); //PIDMAX double PIDMAX=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")) PIDMAX/=100; PIDMAX=(PIDMAX==0.0)?9999.0:PIDMAX; serGa.setPIDMAX(PIDMAX); //PIDMIN double PIDMIN=ODMModelStringUtil.getDouble(strAry[18], 0.0); if(!strAry[18].contains(".")) PIDMIN/=100; PIDMIN=(PIDMIN==0.0)?-9999.0:PIDMIN; serGa.setPIDMIN(PIDMIN); } else if(strAry[0].equals("TA")){ //TODO now we use a general stream turbine to represent SteamTurbineNRXmlType st=DStabParserHelper.createSteamTurbineNRXmlType(dynGen); //Machine Id String tgId="1"; if(!strAry[3].equals("")){ tgId=strAry[3]; } st.setDesc("GOV Steam Turbine BPA TA type(non reheat), machId#"+tgId); //TCH double Tch= new Double(strAry[4]).doubleValue(); if(!strAry[4].contains(".")) Tch/=1000; st.setTCH(BaseDataSetter.createTimeConstSec(Tch)); st.setK(1.0); } else if(strAry[0].equals("TB")){ // since tur is part of the parent governor, it is assume that the parent genernor has been // created //TODO How to create one if there is no governor defined yet. //assert(dynGen.getGovernor() != null); SteamTurbineBPATBModelXmlType st=DStabParserHelper.createSteamTurbineBPATBModelXmlType(dynGen); //busId String tgId="1"; if(!strAry[3].equals("")){ tgId=strAry[3]; } st.setDesc("GOV Steam Turbine BPA TB type, machId#"+tgId); //TCH double Tch= ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")) Tch/=1000; st.setTCH(BaseDataSetter.createTimeConstSec(Tch)); //FHP double Fhp= ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")) Fhp/=1000; st.setFHP(Fhp); //TRH double Trh= ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")) Trh/=1000; st.setTRH(BaseDataSetter.createTimeConstSec(Trh)); //FIP double Fip= ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")) Fip/=1000; st.setFIP(Fip); //TCO double Tco=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")) Tco/=1000; st.setTCO(BaseDataSetter.createTimeConstSec(Tco)); // FLP double Flp=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")) Flp/=1000; st.setFLP(Flp); //Lambda double Lambda=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")) Lambda/=100; st.setLambda(Lambda); } } private static String[] getTGDataFields ( String str) { final String[] strAry = new String[19]; strAry[0]=ODMModelStringUtil.getStringReturnEmptyString(str,1, 3).trim(); //to process the Chinese characters first, if any. int chineseCharNum=ODMModelStringUtil.getChineseCharNum(str.substring(3,11).trim()); //Columns 6-13 busName strAry[1] = ODMModelStringUtil.getStringReturnEmptyString(str,4, 11-chineseCharNum).trim(); str=chineseCharNum==0?str:ODMModelStringUtil.replaceChineseChar(str); //bus Voltage strAry[2]=ODMModelStringUtil.getStringReturnEmptyString(str,12, 15).trim(); //Id strAry[3]=ODMModelStringUtil.getStringReturnEmptyString(str,16, 16).trim(); try{ if(str.substring(0, 2).trim().equals("GG")){ //PMAX strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 22).trim(); //R strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,23, 27).trim(); //T1 strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,28, 32).trim(); //T2 strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,33, 37).trim(); //T3 strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,38, 42).trim(); // T4 strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,43, 47).trim(); //T5 strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,48, 52).trim(); //F strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,53, 57).trim(); }else if(str.substring(0, 2).trim().equals("GH")){ //PMAX strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 22).trim(); //R strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,23, 27).trim(); //TG strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,28, 32).trim(); //TP strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,33, 37).trim(); //TD strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,38, 42).trim(); // TW/2 strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,43, 47).trim(); //VELCLOSE strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,48, 52).trim(); //FVELOPEN strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,53, 57).trim(); //Dd strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,58, 62).trim(); //Epsilon strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,63, 68).trim(); } else if(str.substring(0, 2).trim().equals("GS")){ //PMAX strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 22).trim(); //PMIN strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,23, 28).trim(); //R strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,29, 33).trim(); //T1 strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,34, 38).trim(); //T2 strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,39, 43).trim(); // T3 strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,44, 48).trim(); //VELOPEN strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,49, 54).trim(); //VELCLOSE strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,55, 60).trim(); //Epsilon strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,61, 66).trim(); } else if(str.substring(0, 3).trim().equals("GI")){ //T1 strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 21).trim(); //Epsilon strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,22, 27).trim(); //K strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,28, 32).trim(); //LOAD AUTO SWITCH strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,33, 33).trim(); //Kp1 strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,34, 38).trim(); //Kd1 strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,39, 43).trim(); //Ki1 strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,44, 48).trim(); //INTG_MAX1 strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,49, 53).trim(); //INTG_MIN1 strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,54, 58).trim(); //PID_MAX1 strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,59, 63).trim(); //PID_MIN1 strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,64, 68).trim(); //LOAD Forward Back SWITCH strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,69, 69).trim(); //W_MAX strAry[16]=ODMModelStringUtil.getStringReturnEmptyString(str,70, 74).trim(); //W_MIN strAry[17]=ODMModelStringUtil.getStringReturnEmptyString(str,75, 79).trim(); }else if(str.substring(0, 3).trim().equals("GI+")){ //Pressure automatic switch strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 17).trim(); //Kp2 strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,18, 22).trim(); //Kd2 strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,23, 27).trim(); //Ki2 strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,28, 32).trim(); //INTG_MAX2 strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,33, 37).trim(); //INTG_MIN2 strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,38, 42).trim(); //PID_MAX2 strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,43, 47).trim(); //PID_MIN2 strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,48, 52).trim(); //CON_MAX strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,53, 57).trim(); //CON_MIN strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,58, 62).trim(); }else if(str.substring(0, 2).trim().equals("GA")){ //Pe strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 22).trim(); //Tc strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,23, 26).trim(); //To strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,27, 30).trim(); //VELclose strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,31, 34).trim(); //VELopen strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,35, 38).trim(); //PMAX strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,39, 42).trim(); //PMIN strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,43, 46).trim(); //T1 strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,47, 50).trim(); //Kp strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,51, 54).trim(); //Kd strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,55, 58).trim(); //Ki strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,59, 62).trim(); //INTG_MAX strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,63, 66).trim(); //INTG_MIN strAry[16]=ODMModelStringUtil.getStringReturnEmptyString(str,67, 70).trim(); //PID_MAX strAry[17]=ODMModelStringUtil.getStringReturnEmptyString(str,71, 74).trim(); //PID_MIN strAry[18]=ODMModelStringUtil.getStringReturnEmptyString(str,75, 78).trim(); } else if(str.substring(0, 2).trim().equals("TA")){ //TCH strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 21).trim(); //k1 strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,23, 26).trim(); }else if(str.substring(0, 2).trim().equals("TB")){ //tch strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 21).trim(); //FHP strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,22, 26).trim(); //TRH strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,32, 36).trim(); //FIP strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,37, 41).trim(); //TCO strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,47, 51).trim(); // FLP strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,52, 56).trim(); //Lambda strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,77, 80).trim(); } }catch(Exception e){ ODMLogger.getLogger().severe(e.toString()); } return strAry; } }