![]() |
|
#1
|
|||
|
|||
![]()
The problem is this,
I have this calculation script that i have to use for around 100 times Code:
CALCU BLOCK 1 One-of-three median transmitter selection * P01 MODE MEMORY * P02 AUT/MAN Selection 0=AUT/*=MAN * P03 Tracking Enable (1=rate limit,*=track) * P04 Rate Limit (units/min) * P05 Tx Selection memory * P06 Tx1 ENABLE * P07 Tx2 ENABLE * P08 Tx3 ENABLE * The AUT/MAN selection is used as a guard to the Tx selection * done via the faceplate display. P02 must be selected to MAN * to enable manual selection. * If AUT mode is used, P01 tracks the calc median Tx to effect * a bumpless transfer to MAN mode. - the Tx selected in AUT * remains selected in MAN until changed via the faceplate display. *** The calculated CPV1 in BBBBB is transferred to NEW except *** in cases when the previous good value has to be retained. IF((AAAAA.P04 == 3) OR ((AAAAA.CPV == 3) AND (P02 == 0)) OR(P02==1 AND P06+P07+P08==0) ) THEN NEW = CPV P02 = 1 ELSE NEW = BBBBB.CPV1 END IF *** When mode is switched from auto to manual all transmitters are selected *** except when all Tx are deviated from one another. IF(P04==0) P04 = (FINALXMTR.SH - FINALXMTR.SL) * Check if to apply rate limit - Tx Selection changed if ( P06+P07+P08 <> P05) P03 = 1 * Calculate current dCPV rate in units/min Z = (NEW - CPV)*60 * Apply rate limit to output if ((dabs(Z) >= P04) and (P03==1)) THEN CPV=CPV+((1-2*(NEW < CPV)) * P04/60) else CPV = NEW P03 = 0 end if * Enabling Tx1, Tx2 and Tx3 based on healthy state and deviation in the transmitters P06 = ((P02 == 0 AND (BBBBB.P07 == 1 OR BBBBB.P07 == 4 OR BBBBB.P07 == 6)) OR (P02 ==1 AND P06 == 1 AND AAAAA.P01==0 )) + 0 P07 = ((P02 == 0 AND (BBBBB.P07 == 2 OR BBBBB.P07 == 4 OR BBBBB.P07 == 5)) OR (P02 ==1 AND P07 == 1 AND AAAAA.P02==0 )) + 0 P08 = ((P02 == 0 AND (BBBBB.P07 == 3 OR BBBBB.P07 == 5 OR BBBBB.P07 == 6)) OR (P02 ==1 AND P08 == 1 AND AAAAA.P03==0 )) + 0 * Update Tx selection memory P05=P06+P07+P08 P1B331INTL10.PV = (P05<>0)+0 * Update mode memory P01 = P02 end program * CALCU BLOCK 2 One-of-three median transmitter selection *** P01 1=TXR1 UNHEALTHY; 0=TXR1 HEALTHY *** P02 1=TXR2 UNHEALTHY; 0=TXR2 HEALTHY *** P03 1=TXR3 UNHEALTHY; 0=TXR3 HEALTHY *** P06 1=TXR1 AND TXR2 DEVIATION > 5 *** P07 1=TXR2 AND TXR3 DEVIATION > 5 *** P08 1=TXR1 AND TXR3 DEVIATION > 5 *** ALIAS SH FINALXMTR.SH *** Set the Fail Flag (P01 - P03) according to the Transmitter Status P01 = ({TRANSMTR1.PV=BAD} OR ({TRANSMTR1.PV=QST} AND NOT {TRANSMTR1.PV=CAL})) P02 = ({TRANSMTR2.PV=BAD} OR ({TRANSMTR2.PV=QST} AND NOT {TRANSMTR2.PV=CAL})) P03 = ({TRANSMTR3.PV=BAD} OR ({TRANSMTR3.PV=QST} AND NOT {TRANSMTR3.PV=CAL})) *** Finding Deviation in Txrs ab = TRANSMTR1.PV-TRANSMTR2.PV ac = TRANSMTR1.PV-TRANSMTR3.PV bc = TRANSMTR3.PV-TRANSMTR2.PV *** Finding Deviation Values P06 = (dabs(ab) > (5*FINALXMTR.SH/100)) ! Deviation between TXR1 and TXR2 > 5 % of Scale-High value P07 = (dabs(bc) > (5*FINALXMTR.SH/100)) ! Deviation between TXR2 and TXR3 > 5 % of Scale-High value P08 = (dabs(ac) > (5*FINALXMTR.SH/100)) ! Deviation between TXR1 and TXR3 > 5 % of Scale-High value CPV1 = (P06) AND (P08) ! Deviation in TXR1 w.r.t. TXR2 and TXR3 CPV2 = (P06) AND (P07) ! Deviation in TXR2 w.r.t. TXR1 and TXR3 CPV3 = (P07) AND (P08) ! Deviation in TXR3 w.r.t. TXR1 and TXR2 P04 = P01 +P02 +P03 CPV = CPV1+CPV2+CPV3 P1LAD80CL001XC03.PV = CPV1 P1LAD80CL002XC03.PV = CPV2 P1LAD80CL003XC03.PV = CPV3 P1LAD80CL901XC03.PV = (CPV == 3) + 0 P1B331SSM10.SW = 2*(P04==3) + 1*(P04<3) P1B331INT01.PV = 1*((P04>=2) OR (P04==1 AND (NOT P01*NOT P02* P06 + NOT P02*NOT P03* P07 + NOT P02*NOT P03* P07 == 2)) OR CPV>=2 ) end program * CALCU BLOCK 3 One-of-three median transmitter selection *** P01 Median Value *** P02 Average of Tx1 and Tx2 *** P03 Average of Tx1 and Tx3 *** P04 Average of Tx2 and Tx3 *** P07 Tx Selection buffer *** P08 Dummy Variable for finding Tx sel P01 = ( TRANSMTR1.PV + TRANSMTR2.PV + TRANSMTR3.PV - dmin(TRANSMTR1.PV,TRANSMTR2.PV,TRANSMTR3.PV) - dmax(TRANSMTR1.PV,TRANSMTR2.PV,TRANSMTR3.PV) ) P02 = ( TRANSMTR1.PV + TRANSMTR2.PV )/2 P03 = ( TRANSMTR1.PV + TRANSMTR3.PV )/2 P04 = ( TRANSMTR3.PV + TRANSMTR2.PV )/2 *** Auto Mode Operation *** P07 Buffer is used to update Tx enabling in calcu block 1. IF(CCCCC.P02==0) THEN *** Thre Transmitters are Healthy. Based on Deviation in the Txs, Median or Average or Individual Tx value is selected. IF(AAAAA.P04==0) THEN CPV1 = (AAAAA.CPV==0)*P01 + (AAAAA.CPV==1)*((P02*AAAAA.CPV3) + (P03*AAAAA.CPV2) + (P04*AAAAA.CPV1)) +(AAAAA.CPV>=2)*CCCCC.CPV P08 = (AAAAA.CPV==0)*1 + (AAAAA.CPV==1)*2 + (AAAAA.CPV>=2)*0 P07 = (P08==1)*(1*(CPV1==TRANSMTR1.PV)*(CPV1<>TRANSMTR2. PV)*(CPV1<>TRANSMTR3.PV)+2*(CPV1==TRANSMTR2.PV)*(C PV1<>TRANSMTR3.PV)+3*(CPV1==TRANSMTR3.PV))+(P08==2 )*(4*(CPV1==P02)+5*(CPV1==P04)+6*(CPV1==P03)) *** Two Transmitters are Healthy(With/ Without Deviation in the Healthy Transmitter) *** If healthy, average is selected. Else, selection becomes Manual and is in the scope of the operator to make a selection. ELSE IF(AAAAA.P04 == 1) THEN IF((NOT AAAAA.CPV1 * NOT AAAAA.P01) + (NOT AAAAA.CPV2* NOT AAAAA.P02) + (NOT AAAAA.CPV3 * NOT AAAAA.P03) ==2) THEN CPV1 = ( P02*(NOT AAAAA.P01 * NOT AAAAA.P02 * NOT AAAAA.P06 ) + P04*(NOT AAAAA.P02 * NOT AAAAA.P03 * NOT AAAAA.P07) + P03*(NOT AAAAA.P01 * NOT AAAAA.P03* NOT AAAAA.P08) ) P08 = 1*(AAAAA.P01==1) + 2*(AAAAA.P02==1) + 3*(AAAAA.P03==1) P07 = 5*(P08==1) + 6*(P08==2) + 4*(P08==3) + 0 ELSE IF(NOT AAAAA.P01 * NOT AAAAA.P02 * AAAAA.P06 * AAAAA.P03 + NOT AAAAA.P01 * NOT AAAAA.P03 * AAAAA.P08* AAAAA.P02 + NOT AAAAA.P03 * NOT AAAAA.P02 * AAAAA.P07 * AAAAA.P01) THEN CPV1 = CCCCC.CPV CCCCC.P02 = 1 END IF *** One Transmitter is only Healthy, then the corresponding Tx is selected ELSE IF(AAAAA.P04==2) THEN CPV1 = TRANSMTR1.PV*NOT AAAAA.P01 + TRANSMTR2.PV*NOT AAAAA.P02 + TRANSMTR3.PV*NOT AAAAA.P03 P07 = 1*(AAAAA.P01==0)+ 2*(AAAAA.P02==0)+3*(AAAAA.P03==0) + 0 END IF END IF END program * CALCU BLOCK 4 One-of-three median transmitter selection *** P01 Buffer flag for disabling Auto mode in Custom FacePlate *** P05 Tx selection from faceplate *** Manual Mode Operation *** Operator selection via Faceplate taking into account the deviation between Txs *** A Tx cannot be selected if it has a deviation with a Tx that is selected if(CCCCC.P02==1) then IF(CCCCC.P01==CCCCC.P02 AND P05==1) THEN Y = ((CCCCC.P06-(P05==1)) AND NOT AAAAA.P01 ) CCCCC.P06 = dabs(Y) * NOT((CCCCC.P07 * NOT(AAAAA.P02) * AAAAA.P06) OR (CCCCC.P08 * NOT(AAAAA.P03) * AAAAA.P08)) * NOT AAAAA.P01 ELSE IF (CCCCC.P01==CCCCC.P02 AND P05==2) THEN Z = ((CCCCC.P07-(P05==2)) AND NOT AAAAA.P02 ) CCCCC.P07 = dabs(Z) * NOT((CCCCC.P06 * NOT(AAAAA.P01) * AAAAA.P06) OR (CCCCC.P08 * NOT(AAAAA.P03) * AAAAA.P07)) * NOT AAAAA.P02 ELSE IF (CCCCC.P01==CCCCC.P02 AND P05==3) THEN X = ((CCCCC.P08-(P05==3)) AND NOT AAAAA.P03 ) CCCCC.P08 = dabs(X) * NOT((CCCCC.P07 * NOT(AAAAA.P02) * AAAAA.P07) OR (CCCCC.P06 * NOT(AAAAA.P01) * AAAAA.P08)) * NOT AAAAA.P03 END IF P05 = 0 *** Three Transmitters are enabled, Median or Average value is chosen considering the deviation between the selected transmitters. IF(CCCCC.P06 + CCCCC.P07 + CCCCC.P08 == 3) THEN BBBBB.CPV1 = (AAAAA.CPV==0)*BBBBB.P01 + (AAAAA.CPV==1)*((BBBBB.P02*AAAAA.CPV3) + (BBBBB.P03*AAAAA.CPV2) + (BBBBB.P04*AAAAA.CPV1)) +(AAAAA.CPV>=2)*CCCCC.CPV END IF *** Two Transmitters are enabled(With/Wothout deviation in the selected Transmitters) *** Average is computed if there is no deviation between the two Txs otherwise, previous value is retained. IF(CCCCC.P06 + CCCCC.P07 + CCCCC.P08 == 2) THEN IF(CCCCC.P06*CCCCC.P07*AAAAA.P06 + CCCCC.P07*CCCCC.P08*AAAAA.P07 + CCCCC.P06*CCCCC.P08*AAAAA.P08 == 0) THEN BBBBB.CPV1 =(BBBBB.P02*(CCCCC.P06 * CCCCC.P07 * NOT AAAAA.P06)+BBBBB.P04*(CCCCC.P08 * CCCCC.P07 * NOT AAAAA.P07 )+BBBBB.P03*(CCCCC.P08 * CCCCC.P06 * NOT AAAAA.P08)) ELSE BBBBB.CPV1 = CCCCC.CPV END IF END IF *** One Transmitter enabled, that particular value is selected. IF(CCCCC.P06 + CCCCC.P07 + CCCCC.P08 < 2) THEN BBBBB.CPV1 = (CCCCC.P06 + CCCCC.P07 + CCCCC.P08 == 1)*(TRANSMTR1.PV*CCCCC.P06 + TRANSMTR2.PV*CCCCC.P07 + TRANSMTR3.PV*CCCCC.P08 ) END IF END IF *** For Custom Face plate use(For disabling the AUTO selection during faulty state) P01 = 1* ((AAAAA.P01+AAAAA.P02+AAAAA.P03==1) AND (NOT AAAAA.P01 * NOT AAAAA.P02 * AAAAA.P06 + NOT AAAAA.P01 * NOT AAAAA.P03 * AAAAA.P08 + NOT AAAAA.P03 * NOT AAAAA.P02 * AAAAA.P07) ) + 0 end Can anyone help me with some macro that would enable me to do this. Thanks a lot in advance Last edited by macropod; 02-27-2013 at 11:23 PM. Reason: Added code tags & formatting |
#2
|
||||
|
||||
![]() Quote:
• your script is kept (eg a text file or a worksheet); or • the values you want replaced can be found on the other sheet, responding to your request requires some guesswork. The attached Excel workbook assumes your script is kept on Sheet1 and the values are kept on Sheet2. Once you've input the data on Sheet 2, simply enter the number of a required script in cell A1 of Sheet1 and the script below will be updated. You can then copy/paste or export the script to wherever else you require it. PS: When posting code, please use the code tags. They're on the 'Go Advanced' tab.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Clickable Links Converted to hyperlink texts automatically when I open a word doc | Kingsly | Word | 2 | 09-13-2012 10:42 AM |
![]() |
ketanco | Project | 3 | 01-05-2012 06:36 PM |
![]() |
mark98101 | Word | 1 | 01-31-2011 02:31 PM |
word changes settings while copiing texts | marja | Word | 2 | 11-29-2010 01:17 PM |
Replacing / editting text | LisaC | Word | 0 | 02-25-2010 03:40 AM |