MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

47
PINSTECH-196 MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING SYSTEM MUHAMMAD ATHAR FAROOQ RASHID QAMAR Computer Division Pakistan Institute of Nuclear Science and Technology P.O Nilore, Islamabad. (August, 2006)

Transcript of MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

Page 1: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

PINSTECH-196

MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING SYSTEM

MUHAMMAD ATHAR FAROOQ RASHID QAMAR

Computer Division Pakistan Institute of Nuclear Science and Technology

P.O Nilore, Islamabad. (August, 2006)

Page 2: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

ABSTRACT

Stress Corrosion Cracking (SCC) and Corrosion Fatigue (CF) are important tests which are performed to check the integrity of structural materials operating in different environments, such as nuclear power system, steam and gas turbines, aircraft marine structure, pipelines and bridges. To establish the environmental testing facility on laboratory scale, NMD acquired a computerized (286 Based PC) electromechanical testing machine from M/S CorTest, USA. This machine was commissioned at NMD in 1989. Since then it has been utilized to test and qualify the materials provided by different establishments of PAEC for SCC and CF behavior.

However, in October 2004, computer attached to the machine was corrupted and became out of order. Users were handicapped because there was no any alternate system i.e. Manual control tower to operate the machine. Then users approached to Computer Division to investigate the malfunctioning at the computer. Therefore, upon complete checkup of system, it was diagnosed that there was a serious problem in the hard disk and mother board of the computer. Much difficulty was faced in retrieving the application software from the obsolete 286 computer system. Then the basic aim was to replace the old computer with Pentium System.

But with Pentium system application software was not working. Since we have already recovered full application software package including source programs, so all the seventeen programs has been thoroughly studied. Four programs had to be modified according to the new hardware. Now the new Pentium system with modified software has been interfaced with the machine.

Machine was tested for the both types of above mentioned tests and compared with previous results. The performance of machine was confirmed satisfactory on the new setup.

Page 3: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

Table of Contents

TITLE PAGE

ABSTRACT 1 Table of Contents 2 List of Figures and Tables 3

INTRODUCTION 4

1 2 3 4 5 6 7

HARDWARE DESCRIPTION

SOFTWARE DESCRIPTION

Main Menu

Crosshead Movement Utility Direction Displacement Go

Corrosion Fatigue Test (CF) Change Parameters Sample Test Run Actual Test View Old Test Stress vs. Time Stress vs. Total Cycles Strain vs. Total Cycles Displacement vs. Total Cycles Display Test Information Print Test Information End Graphing Constant Extension Rate Test (CERT) . Start New Test Retrieve Test Data Convert Data Files View Note 1 View Note 2 Return to Main Menu Exit to Dos Update Programs Listing CRAM.BAS SCOPE.BAS SET.BAS SETUP.BAS RESULTS CONCLUSION ACKNOWLEDGEMENT References

5

6

6

6 6 6 7-

7 7 7 7 8 8 8 9 9 9 9 .9 9 10 10 11 11 12 12 12 13 13 18 30 36 44 45 45 46

Page 4: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

List of Figures and Tables

Sr. No. TITLE PAGE

Fig 2.1 Fig 5.1

Fig 5.2

Cortest Machine with modified computer system 5 Tensile Testing HLES steel in seawater after up gradation of system 44 Tensile testing of alloy A516 before up gradation of system 45

Table 3.1 Table 3.2 Table 3.3 Table 3.4 Table 3.5 Table 3.6 Table 3.7 Table 3.8

Main Menu Cross Head Movement C F Menu Select Graph Menu Return to CF Menu C E R T Menu Graphing Menu End Graph Menu

6 6. 7 8 9 10 11 11

Page 5: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

1.0 INTRODUCTION

As in any other industrial plant, nuclear plants consist of an assemblage of parts which are subject to wear and tear. Over the course of time these parts age and eventually wear out. Many smaller parts are intended to be replaced once or several times in the lifetime of the plant. Some larger parts may also have to be replaced in order for the plant to operate for its full lifetime, but others are intended to last and not be replaced. These must all be inspected for signs of aging degradation. A number of environmental factors within the plant tend to degrade the structures and components, including: radiation, high heat, high pressure, steam, water and reactive chemicals. These factors produce a variety of changes within the material; the metal, concrete, electric cables as well as others; that make up the plant. Changes in dimension, ductility, fatigue capacity, and mechanical or dielectric strength. Physical and chemical processes add to aging degradation of the systems, structures and components (SSCs) such as corrosion, fatigue, embitterment, fabrication defects, vibration, water hammer, and wear.

Stress corrosion cracking (SCC) is a failure process that occurs because of the simultaneous presence of tensile or other stresses, susceptible materials and an environment [1]. Corrosion occurs in piping, steam generator components, nearly all the plant as a result of contact with steam, water and chemicals. Wastage, stress corrosion, erosion and intergranular attack are all forms of corrosion that occur. Parts must be inspected regularly, replaced when necessary and the water treated to manage the chemistry in order to mitigate the effects of corrosion. Cyclic mechanical or thermal loads result in fatigue of materials, particularly metal, pressure vessel components, piping, valves and other parts. Materials have a fixed number of cycles of strain they can bear before they begin to crack and fail. Regular inspection and careful initial choice of materials can help mitigate the process of fatigue but it cannot be eliminated. Casting and forming defects and weld related defects amplify the effects of corrosion and fatigue cracking. Embrittlement is decreased ductility as a result of prolonged exposure to heat and radiation. Neutron bombardment produces changes in metal that tend to make it less flexible and more susceptible to cracking. Dosimetry to determine levels of neutron bombardment as well as inspection can help to identify embrittlement.

Cortest Electro Mechanical testing machine of NMD can be utilized both static and cyclic mode and the max frequency is 1 HZ.

Following test can be performed by using this machine a) Corrosion Fatigue test. b) Constant extension rate test/Slow Strain Rate test for stress corrosion

cracking c) Creep testing

As the above machine is computer controlled and computer was out of order for the last four months, so machine was not working. There was problem in the hard disk and controller cards of computer. The computer was old 286 based pc. The computer is replaced successfully by Pentium -I and data is retrieved from old pc. Some necessary changes have successfully done in software. System is working properly.

4

Page 6: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

2.0 HARDWARE DESCRIPTION

Computer system of Contest electro-mechanical testing machine shown in fig.2.1 was corrupted in October 2004. It is a computer controlled machine and it can be utilized for the following tests on materials.

1. Mechanical test in air i.e. yield strength (YS), Ultimate tensile strength (UTS) etc. 2. Stress corrosion cracking (SCC) by constant extension rate test (CERT). 3. Corrosion Fatigue,(CF) 4. Creep corrosion / Stress rupture.

The CORTEST machine has five main parts. a. The load frame. b. The computer system. c. The SC-12 signal conditioner. d. The DA-100 data acquisition unit e. The vessel system / Auto clave.

For corrosion fatigue system the maximum frequency available is one hertz, and for CERT the strain rate can be controlled up to 1E-7 in/sec.The maximum operating temperature of autoclave is 300 °C and pressure is 2500 psi. Therefore test can be performed in aqueous or gas environment using autoclave. There is no option in this machine to run manually, it can only be operated through computer. This machine was being used for materials testing of PAEC projects. It was very difficult to acquire application software from 286 computer system. After thorough debugging using many techniques the original application programs were recovered and efforts were made to interface the machine with Pentium system. The following are the important steps which were considered for the safe operation of the machine with Pentium system.

Figure 2.1 Cortest Machine with modified computer system

Page 7: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

3.0 SOWFTWARE DESCRIPTION In the CORTEST system three software tests are normally utilized, Corrosion

Fatigue test, Constant Extension Rate test, and Stress Rupture test [2]. This package has seventeen programs. All seventeen programs have been thoroughly checked. Four programs have been modified according to the new hardware Experiments and analysis of material was conducted successfully [3]. Now all these tests are working properly. Working of all modified and others programs is given as

3.1 MAIN MENU The main menu will be the first menu displayed after turning the computer on. The main menu consists of three programs.

Table 3.1

MAIN MENU CROSSHEAD MOVEMENT" CORROSION FATIGUE

"CONSTANT EXTENSION RATE EXIT TO DOS

Use the up & down cursor keys to highlight the desired program or command. Press the enter key to activate the program or command.

3.2 Crosshead Movement Utility The Cross-head movement program positions the cross-head in thousands of inch increments. The cursor keys are used to highlight an option and Enter key is used to execute that option.

Table 3.2

CROSS HEAD MOVEMENT DIRECTION up ~ ' 1

I DISPLACEMENT > 10 milli-inches j GO :

! " S T R O K E 0.1471 inches i LOAD 250.0 pounds I

3.2.1 DIRECTION The cross-head of the load frame can move one of two directions, up (to

decrease the load) and down (to increase the load). Pressing the Enter key will cause to change the value form up to down or vise versa.

3.2.2 DISPLACEMENT The default value is 10 milli inches. One can press the Enter key to enter

new value. Maximum value of DISPLACEMENT is 1000 milli-inches.

6

Page 8: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

3.2.3 GO

The GO option moves the motor in desired DIRECTION and DISPLACEMENT. Change in the values of STROKE in inches and LOAD in pounds is displayed in the centre of the screen as shown in Table 3.2

F5 key is used to stop the movement of the motor. F10 key is used to stop the motor and return to main menu.

3.3 Corrosion Fatigue Test (CF)

Start the CF program by choosing the CORROSION FATIGUE command in the Main Menu (Table 3.1). Move the cursor to highlight CORROSION FATIGUE on the Main Menu and press the enter key. The CF menu (Table 3.3) will appear. The CF menu offers a choice of seven commands.

Table 3.3 CF MENU _~] CHANGE PARAMETERS " 1 SAMPLE TEST ~1 RUN ACTUAL TEST ~~| VIEW OLD TEST _^ INFORMATION A B O U T " TEST j : RETURN TO MAIN MENU" 1 EXIT TO DOS

3.3.1 CHANGE PARAMETERS

Parameters file CF.DAT holds all parameters required to operate a CF test. This file can be accessed and changed by using the command CHANGE PARAMETERS found in the CF menu.

3.3.2 SAMPLE TEST

SAMPLE TEST command shows a graphic representation of an operating test. When SAMPLE TEST shows undesired results press any key to return to the CF menu (Table 3.3) and choose the CHANGE PARAMETERS command. Change the desired parameters and verify using SAMPLE TEST. If SAMPLE TEST parameters are correct then press any key to return to CF menu and choose the RUN ACTUAL TEST command.

3.3.3 RUN ACTUAL TEST

After choosing the command RUN ACTUAL TEST from the main menu (Table 3.3) the program will pause to load the assembly-language routines and display the message "PLEASE WATE". The SAMPLE TEST command is executed automatically and the SAMPLE TEST screen is displayed.

Press any key and the program prompts the user to enter a new name for the test. Press the return key after typing the filename. Press F5 key to cancel the RUN ACTUAL TEST command. This action will return to the CF menu (Table 3.3) provided that the "ramp up point" has yet to be reached. Pressing F5 key after the

Page 9: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

"ramp up point" has been reached will end the test and movement of the motor. Pressing F5 during the operation of a CF test (while the machine is cycling) will stop the cycling, decrease the load, and run the VIEW OLD TEST command.

Ramp up point: The ramp up point is the point in the CF test program where the motor begins to move and the test officially stats. User input ends at this time. The load frame should be prepared before this point, i.e.: LVDT properly adjusted and in contact with the LVDT actuating rod. Hand wheel located on the upper platen must fit snug against load cell.

Function key F5: This function key is pressed to manually end the corrosion fatigue test and will pass the control to the VIEW OLD TEST command.

Function key F10: The function key can be pressed during operation to enhance the performance of the program. This key should commonly be used at higher load frequencies ( > 1.2 Hz ). The F10 key graphs the screen at an incremental time period (every 6 cycles), instead of instantaneously.

3.3.4 VIEW OLD TEST VIEW OLD TEST allows the user to review data and results from previous tests. It uses a test data file and four graph programs. The VIEW OLD TEST displays a directory listing of the data directory (\data) and prompts the user to enter the test file to be viewed. The GRAPH Menu is displayed in Table 3.4 bellow.

Table 3.4

SELECT~GRAPH I

"STRESS VS TIME j

STRESS VSTOTAL CYCLE ;

STRAIN vsTOTAL CYCLE | DISPLACEMENTS TOTAL CYCLES j

DISPLY TEST INFORMATION ~~~ '

"PRINT TEST INFORMATION " 1

END GRAPHING " ~ ~~~~ I

3.3.4.1 STRESS VS TIME

The first graph is the same graph shown in SAMPLE TEST, Stress verses instantaneous time. The ordinate of the 2 dimensional graphs is stress and the abscissa is time.

3.3.4.2 STRESS VS TOTAL CYCLE

This is second choice from the GRAPH Menu. The ordinate of the 2 dimensional graph is stress and the abscissa is total number of cycles. There are two graphs; one corresponds to the mean average stress verses total cycles and the other corresponds to the amplitude of the stress verses total cycles.

s

Page 10: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

3.3.4.3 STRAIN VS TOTAL CYCLES

This is the third choice from the GRAPH Menu. The ordinate of the 2 dimensional graphs is strain and the abscissa is cycles. The strain is calculated by dividing the displacement amplitude by the length of the specimen.

3.3.4.4 DISPLACEMENT VS TOTAL CYCLES

This is the fourth choice from the GRAPH Menu. The ordinate of the 2 dimensional graphs is stress and the abscissa is time. There are two lines graphed. The displacement of the upper stress from the original starting point of the cross head and the displacement of the lower stress from the original starting point of the cross head.

3.3.4.5 DISPLY TEST INFORMATION

This choice will display the parameters and results of the test on the screen

3.3.4.6 PRINT TEST INFORMATION

This choice will setup the printer and print the parameters and results.

3.3.4.7 END GRAPHING

The last option on the menu continues the VIEW OLD TEST command to a final menu as shown bellow.

Table 3.5

RETURN TO MAIN MENU RUN~CF PROGRAM AGAIN

M R T W T R F P ^ T ~~

EXIT TO" DOS" """-

The options can be chosen by using the cursor keys and pressing the return key. The RETURN TO MAIN MENU option ends the CF test program, and returns the user to the Main Menu. The option RUN CF PROGRAM AGAIN returns the user to the CF menu (Table 3.3). The REPRINT REPORT option runs the VIEW OLD TEST command starting with a directory listing of the data directory (\data).

3.4 Constant Extension Rate Test (CERT)

The Constant Extension Rate Test program (CERT) elongates a specimen while measuring the load and displacement. The main menu will display a variety of test modes. Move cursor to highlight CERT test and press the return key. The CERT menu will appear (Table 3.6) given below.

Page 11: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

Table 3.6 _ CERT MENU

"START NEW TEST "RETRIVE TESTDATA CONVERT'DATA FILES""

"VIEW NOTE! "VIEW NOTE~2 RETURN TOMAIN MENU EDIT TO DOS

3.4.1 START NEW TEST

The START NEW TEST commands clears the menu, the program loads machine language routines, and displays to the screen "PLEASE WAIT". The screen clears and the parameter input section begins. After completing all inputs, finally it asks for file name in which all data of the test will store after completion of test. Finally CERT test program requires setting of the transducers and last preparation of the equipment for the operation of an experiment. Make sure interface cable is connected to the computer.

Press any key and program will continue. The program moves the cross head up and back down trying to adjust, orientate, and prepare the equipment. A list of the load and stroke values is displayed on the screen. If the value of the LVDT (stroke) is a negative number then re-adjust the LVDT displacement bar. After adjusting the LVDT to a positive value press any key to operate the routine again. The screen will prompt you to do so. If there is no negative LVDT value, an input is displayed with a prompt of y' to continue or n' to repeat ramp-up routine. Continuing will clear the screen and change to graphics mode. The CERT graphics plot screen is displayed (fig. 2.3). Press enter key to start the experiment.

The test holds a constant extension rate until a catastrophic failure violation occurs. A catastrophic failure violation occurs when load reaches one half of the maximum load recorded during the test or the load limit is exceeded. The test will also terminate if the function key F5 is pressed.

3.4.2 RETRIVE TEST DATA

This command allows the user to graph the results of a CERT test. A prompt is asking the name of file desired. A graph menu will appear given as bellow.

Page 12: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

Table 3.7

GRAPHING MENU LOAD VS DISPLACEMENT

STRESS VS STRAIN

LOAD VS TIME ~ ~

STRESSVS TIME

'DISPLACEMENT VSTTME

STRAIN"VS TIME"

DISPLAY TEXT INFORMATION

PRINT TEXT INFORMATION""""

"END"OF GRAPH MENU

There are nine options on the Graph menu. The first six options are graphs of data. The seventh option shows on screen a listing of the text variables, results, and information in both the English and the equivalent SI units. The eighth option prints the text variables, results, and information.

Press any key to return to the Graph menu after viewing the selected display of data information. Select the END OF GRAPH MENU option to continue to the END OF GRAPH MENU (Table 3.8) given below.

Table 3.8

END 6 F " G R A P H MENIU ;

"RETWNT6"MA1"N MENU -" I

"Rlj"N"c"ERffESt"""" " " ;

"RTRUITDATA RETRIEVAL ]

"EXIT TO~DOS~"~ """"~~j

The RETURN TO MAIN MENU option ends the CERT test program and places the user at the Main Menu. The option RUN CERT TEST places the user at the CERT menu. The RERUN DATA RETRIEVAL option runs the RETRIEVE TEST DATA command of Table 3.6.

3.4.3 CONVERT DATA FILES

This option allows the user to change from the version 1 and 2 CERT data formats to version 3. The option is an aid to users who have an extensive library of data files using the older data formats.

3.4.4 VIEW NOTE 1

NOTE 1 is a small note about the CERT program and SSR testing. This explains some of the details of the program and the use of the software.

Page 13: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

3.4.5 VIEW NOTE 2

NOTE 2 explain how to use both the CF CERT program and the Cortest CERT SC12 output at the same time. This is down via the restricted file "five.dat".

Above both options are meant as "On-line" help for the user.

3.4.6 RETURN TO MAIN MENU

It displays the MAIN MENU as allows the user to choose a new program to operate.

3.4.7 EXIT TO DOS

It leaves the CF system and invokes the DOS command.

Page 14: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

4.0 UPDATE PROGRAMS LISTING

4.1 PROGRAM: \ BATCH \ CRAM. BAS

9 CLEAR 10 GOTO 10000

CORTEST ************************************************************ ****** CROSS HEAD MOVEMENT UTILITY ********* ************************************************************

UPDATE: JUNE 2 005 PROGRAM: \BATCH\CRAM.BAS BY: Rashid Qamar ************************************************************

************************************************************

The following list of variables is used to keep track of

addressing and the Control Byte

CONTROL = 96 'This is the normal state of the Control Byte ' (only Bits 6 and 7 are high)

11 12 13 14 15 16 18 21 25 66 GOTO 1200 'Load machine language I/O routine 70 ADDRESS%=776 80 GOSUB 100 ' Set all program variables, and reset the PC21 90 GOTO 5000 ' The executive program should reside at line 5000 100 110 120 130 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 495 500 510 520

STOPPED = 2

CRASH = 4

LOADRDY = 4

INTACK

MESSAGE = 8

IDBREADY = 1 6

FAULT = 32

INTERRUPT = 6 4

RECEIVED = 1 2 8

'This variable is a mask for testing Status Bit 1 (is the motor moving?)

'This variable is a mask for handling Control Bit 2 (to signal the "Board Monitor" to time out or not) •

'This variable is a mask for testing Status Bit 2 (are Move parameters loaded? (Load and Go mode))

'This variable is a mask for handling Control Bit 3 (to signal "Interrupt Acknowledged" or not)

'This variable is a mask for testing Status Bit 3 (is a response waiting in the Output Data Buffer?)

'This variable is a mask for handling Control Bit 4 (to signal "Command Byte Ready in the IDB or not) this variable is also a mask for testing Status Bit 4 (is the Input Data Buffer ready for a command byte?)

'This variable is a mask for handling Control Bit 5 (to signal "Restart Board Monitor" or not )...and.. this variable is a mask for testing Status Bit 5 (has the PC21 suffered a processing failure?)

'This variable is a mask for handling Control Bit 6 (to signal "Clear Interrupts" or not ) . . . and ... this variable is a mask for testing Status Bit 6 (has the PC21 generated an interrupt?)

'This variable is a mask for handling Control Bit 7 or not) ' (to signal "Message Received from the ODB

PC21WRITE = 64512! '** This variable is only used if the machine ' language I/O routines are installed

13

Page 15: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 700 710

PC21READ = 64561! '** This variable is only used if the machine language" I/O routines are installed

******************************************************** * *

* COMPUMOTOR PC21 "BASIC" RESET ROUTINE *

December 1, 1984

********************************************************

The following subroutine allows the "Board Monitor" to timeout, and Reset the PC21. Then the Board Monitor timer is restarted. A "GOSUB 700" instruction will reset the PC21.

OUT ADDRESS%+1, ( CONTROL OR CRASH ) 'Control Bit 2 high OUT ADDRESS%+1, ( CONTROL AND NOT CRASH ) 'Control Bit 2 low

720 FOR Y=l TO 9999:NEXT 'wait for BMA 7 30 OUT ADDRESS%-t-l , ( CONTROL AND NOT FAULT ) 'Control Bit 5 low 740 OUT ADDRESS%+1, ( CONTROL OR FAULT ) 'Control Bit 5 high 745 FOR 1=1 TO 5000:NEXT 750 RETURN 760 980 981 982 983 984 985 989 990

******************************************************** * *

* COMPUMOTOR PC21 "BASIC" INPUT AND OUTPUT * * SUBROUTINES WITH MACHINE LANGUAGE * * DEVICE DRIVERS * * *

* Dec. 10, 1984 * ********************************************************

991 1000 BFLAG%=0 1010 IF INSTR(COMMAND$, "Wl") OR INSTR(COMMAND$,"wl") THEN BFLAG%=1 1020 IF INSTR(COMMAND$,"PB") OR INSTR(COMMAND$,"pb") THEN BFLAG%=1 1030 IF INSTR(COMMAND$,"X1B") OR INSTR(COMMAND$,"xlb") THENBFLAG%=1

1040 1050 1055 1060 1070 1080 1200 1210 1220 1230 1240 1245 1250 1260 1290 1291 1292 1293 1294 1295 2500 3000 3010 3020 3030

COMMAND$ = COMMAND$ + CHR$(13) ' Add carriage return to command CALL PC21WRITE(COMMAND$, ADDRESS%)' Execute machine language write 'FOR IJK=1 TO 10000: NEXT IJK RETURN

OPEN "\PC21\CODE.DAT' Reserve memory for routine FOR INPUT AS #1 ' Access machine code data file

FOR X = 64512! TO 64639' INPUT #1, J POKE X,J

FOR IJK=1 TO 500: NEXT IJK NEXT:CLOSE: GOTO 7 0

NOTE; CLEAR statement clears all! Install machine code

RETURN TO BEGINNING OF PROGRAM

******************************** i******************** PC21 WRITE 'This program is an I/O driver that is called from IBM PC Basic that 'writes a command string to the PC21 on a byte by byte basis. It is 'invoked from Basic as follows: CALL PC21WRITE( COMMAND?, ADDRESS ) 'where A$ is the string to be sent and B is a pointer to the base I/O 'address of the PC21. i******************* PC21 READ SUBROUTINE **************************** ANSWER$=" n + MiT i R e s e r v e string space for response CALL PC21READ( ANSWERS, ADDRESS%, BFLAG% ) ' Execute read IF BFLAG%=0 THEN RETURN NUM#=0:F0R X=l TO 4

14

Page 16: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

3040 3050 3060 3070 3100 3110 3120 5000 5020 5040 5060 5070 5080 5100 5120 5140 5160 5180 5187 5190 5195 5200 5205 5210 5211 5212 5216 5218 5219 5220 5222 5228 5240 5260 5280 5300 5320 5340 5360 5380 5400 5420 5440 5460 5480 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5740 5760 5780 5800 5820 5840

DIGIT%=ASC (MID$ (ANSWERS , X, 1) ) NUM#=NUM#+DIGIT%*256A(4-X):NEXT

ANSWER$=STRS(NUM#) RETURN ' BFLAG% identifies binary report commands

NOTE!...the variable COMMAND$ must NOT contain both types of request; Binary and ASCII

* * * * * CRAM CROSSHEAD MOVEMENT * * * * * JAN 87 CORTEST

***** CORTEST INCORPORATED

COLOR 7,0:KEY OFF CMD$="10C010C1":CALL CMDWR (CMD$ , I) PU$= CHR$(24)+" up" ' UP ARROW PD$ = CHR$(25)+" down" ' DOWN ARROW PX$ = CHR$(26) ' RIGHT ARROW PY$ = CHR$(27) ' LEFT ARROW P = 5: DI=0:H1$="H-":D$=PU$:D1=10:Dl$="D-43478" MP$(5) = "DIRECTION " MP$(6) = "DISPLACEMENT >" • MP$(7) = "GO ST$= STRINGS(19," ") OPEN "\batch\conf3_gl .cor" FOR INPUT AS #3

#3,MXLOAD 'MAXIMUM LOAD VARIABLE (1 TO 8) DIVIDE CHANNEL TWO FOR PETICULAR LVDT DIVIDE CHANNEL ONE FOR PETICULAR LOAD ELECTRICAL HERTZ TYPE 50 OR 60 HERTZ DESCRIPTION OF CHANNEL 3 'MAXIMUM CHANNEL 4

ON KEY(5) GOSUB 7020 'DESCRIPTION OF CHANNEL 4

INPUT INPUT INPUT INPUT INPUT

#3 #3 #3 #3

LDIV LODM ELEC MXSTOK

CELL

CLOSE ON KEY(10) GOSUB 7100 ON KEY(11) GOSUB 6B20 ON KEY(14) GOSUB 6920 KEY(5) ON KEY(10) ON KEY(11) ON KEY (14) ON SCREEN 0,0,0:WIDTH LOCATE LOCATE LOCATE LOCATE FOR T=5

80:COLOR 2,28:PRINT CHR$(201); 3,28:PRINT CHR$(186): 4,20:PRINT CHR$(201);

7,0:CLS STRINGS(23,205);CHR$(187) LOCATE 3,52:PRINT CHR$(186) STRINGS(38,205),CHR$(187)

8,20:PRINT CHR$(200)/STRINGS(38,205);CHR$(188) TO 7:LOCATE T,20:PRINT CHR$(186);

PRINT STRING$(38," ");CHR$(186).NEXT LOCATE 4,28:PRINT CHR$(202):LOCATE 4,52:PRINT CHR$(202) COLOR 15,0 LOCATE 3, LOCATE 5, LOCATE 6,

29:PRINT 27:PRINT 27:PRINT

:COLOR 7,0 CROSS HEAD MOVEMENT "DIRECTION "D$ "DISPLACEMENT >";D1 " milli-inches" 7,27:PRINT "GO":COLOR 7,0

> inches":GOSUB 6200 > pounds":GOSUB 6200

11,25:PRINT CHR$(200);STRINGS(29,205);CHR$(188) 9,25:PRINT CHR$(186):LOCATE 9,55:PRINT CHR$(186) 10,25:PRINT CHR$(18 6):LOCATE 10,55:PRINT CHRS(186)

LOCATE 8,25:PRINT CHR$(203)/STRINGS(29,205);CHR$(203) COLOR 12

LOCATE 13,16:PRINT " ** F5 TO STOP ** ":COLOR 14,0 LOCATE 13,50:PRINT" F10 TO END":COLOR 11,0 PX = 15:X$ = "USE CURSOR KEYS TO MOVE ARROW & HIT ENTER FOR CHOICE" GOSUB 6200:COLOR 7,0 ' center on page

15

COLOR 10,0:LOCATE PX =9:X$="STROKE PX =10:X$="LOAD LOCATE LOCATE LOCATE

Page 17: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

center verbage

5860 LOCATE 16:PRINT STRING$(79,"=") 5880 P=7:GOSUB 6920 5900 WHILE (C<250)

5920 CH$=INKEYS:C=C+1 ' every 250 keyboard checks for teh 5940 IF CH$=CHR$(13) THEN 6140 ' enter key befor a reprint of 5 960 ' load and displacement 5980 WEND:C=0 6000 CMD$="1RC0C1":CALL CMDWR(CMD$,I) 6020 CALL ASCRD(STS,I):ST1=L0DM*VAL(ST$) 6040 LOCATE 10,35:PRINT USING " #####.#";ST1 6060 CALL ASCRD(ST$,I):ST2=VAL(ST$)/LDIV 6080 LOCATE 9,35:PRINT USING " #.#####";ST2 6090 IF STl>MXLOAD THEN 7020 6095 IF ST2 > 2.7/LDIV THEN GOSUB 7020 6100 GOTO 5900 6120 ' 6140 ON P-4 GOTO 6340,6460,6620 6150 GOTO 5200 6160 6180 6200 6220 6240 62 60 LX= LEN(X$) 6280 LOCATE PX,(40-INT(.5*LX)):PRINT X$ 6300 RETURN 6320 ' 6340 ' ******** * * * * * direction * * * * * * * ***********

6360 D2 - Dl/5.75*25000' *** 25000 steps = rev | 5.75 rev = .001 inch 6380 IF DI=1 THEN DI=0:Dl$="D-"+MID$(STR$(INT(D2)),2):D$=PU$:GOTO 5380 6400 DI=l:Dl$="D+"+MID$(STR$(INT(D2)),2):D$=PD$ 6420 GOTO 5380 6440 ' 64 60 '********** * * * * + distance of cross head * * ** ******** 64 61 COLOR 15,1 6470 LOCATE 17,10:PRINT CHR$(201),STRING$(48,205);CHR$(187) 6476 LOCATE 23,10:PRINT CHR$(200);STRING$(48,205);CHR$(188) 6479 COLOR 15,l:FOR T=18 TO 22;LOCATE T,10:PRINT CHR$(186); 6480 PRINT STRING$(48," ");CHR$(186):NEXT:COLOR 7,1 6490 LOCATE 20,12: 6500 INPUT "ENTER THE DISPLACEMENT ...milli inches...>";D1 6520 D2 = Dl/5.75*25000' *** 25000 steps = rev | 5.75 rev = .001 inch 6540 IF DI=0 THEN Dl$="D-"+MID$(STR$(INT(D2)),2):GOTO 5380 6560 Dl$= "D"+MID$(STR$(INT(D2)),2) 6580 GOTO 5380 6600 ' 6620 ' * * * * * * * process of moving the crosshead * * **** * 6640 ' 6660 KEY(ll) OFF:KEY(14) OFF 6680 CLS 6700 COMMAND$= "MN V.5 "+D1$+ " G" 6720 LOCATE 18,20:PRINT COMMAND$ 6740 FOR T = 1 TO,10000:NEXT 6760 GOSUB 1000 ' ****** THIS GOES TO MACHINE LANG 6780 GOTO 5260 6800 END 682 0 ' ARROW KEY UP 6825 TB = 26 6840 COLOR 7,0:LOCATE P,22:PRINT" "+MP$(P) 6860 IF P=5 THEN P=7 ELSE P=P-1 6870 IF P=7 THEN COLOR 10,0:TB=24 ELSE COLOR 15,0 6880 LOCATE P,TB:PRINT PX$+MP$(P):COLOR 7,0 6900 RETURN

16

Page 18: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

6920 ' ARROW KEY DOWN 6925 TB = 26 6940 COLOR 7,0:LOCATE P,22:PRINT" "+MP$(P) 6960 IF P=7 THEN P=5 ELSE P=P+1 6970 IF P=7 THEN COLOR 10,0:TB=24 ELSE COLOR 15,0 6980 LOCATE P,TB:PRINT PX$+MP$(P):COLOR 7 7000 RETURN 7020 ' 7040 ' LOOP FOR ENDING MOVEMENT 7060 COMMAND$="K":GOSUB 1000 7080 RETURN 7100 ' 7120 ' 7140 COMMAND$="K":GOSUB 1000 7160 RUN "\batch\DEMO" 7180 END 10000 ' 10010 ' ********************************************************************

10020 UL=10:UC=30:LD=4:LC=20 10030 ' ul is upper line uc is upper accross

10040 ' Id is number lines down 10050 ' lc is number lines accross 10060 COLOR 15,1,1:COLOR 15,0 10070 LOCATE UL,UC:PRINT CHR$(201);STRING$(LC, 205); CHRS(187) 10080 LOCATE (UL+LD),UC: PRINT CHR$(200); STRINGS(LC, 205); CHR$(188) 10090 SCREN$ = CHR$(186)+STRING$(LC," ")+CHR$(186) 10100 FOR T= 1 TO ((LD/2)+l) ' (UL+1) TO (UL+LD-1) 10110 LOCATE UL+T,UC:PRINT SCREN$ 10120 LOCATE UL+LD-T,UC:PRINT SCREN$:NEXT 10130 COLOR 15,1:LOCATE 12,35:PRINT"PLEASE WAIT":COLOR 15,0 10140 BSEG% = VARPTR(A%(0)) 10150 A%(0) = &HE8 10160 A%(1) = &H5B00 10170 A%(2) = &H5F8C 10180 A%(3) = &HCB05 10190 DEF SEG 10200 CALL BSEG% 10205 'INPUT "10205",RAS 10210 BSEG%=A%(4) 10220 DSEG%=BSEG%+&H1001 1 0 2 3 0 DEF SEG=DSEG% 10240 BLOAD "\DM100\DATAQ.BLO",0 10250 ASCRD=0 10260 BINRD=3 10270 CMDWR=6 10280 PORTV=9 10290 CMDS = "OR":CALL CMDWR(CMD$,I) 10295 'INPUT "10295",RAS 10300 OPEN "R",l,"\DM100\CALCNST.DAT",10 10310 FOR I = 0 TO 95 10320 GET #1,1+1:INPUT #1,A$ 10330 VS=STR$(I) : IF K 1 0 THEN V$ = "0" + V$ 10340 V$ = A$ + "V" + V$ 10350 CALL CMDWR(V$,I) 10355 FOR IJK=1 TO 2000: NEXT IJK 10360 NEXT 10365 'INPUT "10365",RAS 10370 CLOSE 10380 CLS 10390 GOTO 11

Page 19: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

4.2 PROGRAM: \CF\SCOPE.BAS

9 CLEAR:SCREEN 0:WIDTH 80:COLOR 15,0 10 KEY OFF:GOTO 9948 11 12 13 14

CORTEST ****************************************************** ******** CF CONTROL ROUTINES ******* ******************************************************

UPDATE: JUNE 2005 PROGRAM: \CF\SCOPE.BAS BY: Rashid Qamar

15 20 21 25 26 45 50 55

60 GOTO 1200 'Load machine language I/O routine 70 ADDRESS%=776 80 GOSUB 100 ' Set all program variables, and reset the PC21 90 GOTO 5000 ' The executive program should reside at line 5000 •100 ' ************************************************************

110 ' The following list of variables is used to keep track of" 120 ' addressing and the Control Byte 130 '

150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 .480 490 4 95 500

CONTROL = 96 'This is the normal state of the Control Byte ' (only Bits 6 and 7 are high)

STOPPED

CRASH

LOADRDY = 4

INTACK = 8

MESSAGE

IDBREADY = 1 6

FAULT = 3 2

INTERRUPT

RECEIVED

'This variable is a mask for testing Status Bit 1 (is the motor moving?)

'This variable is a mask for handling Control Bit 2 (to signal the "Board Monitor" to time out or not)

'This variable is a mask for testing Status Bit 2 (are Move parameters loaded? (Load and Go mode))

'This variable is a mask for handling Control Bit 3 (to signal "Interrupt Acknowledged" or not)

'This variable is a mask for testing Status Bit 3 (is a response waiting in the Output Data Buffer?)

'This variable is a mask for handling Control Bit 4 (to signal "Command Byte Ready in the IDB or not) this variable is also a mask for testing Status Bit 4 (is the Input Data Buffer ready for a command byte?)

'This variable is a mask for handling Control Bit 5 (to signal "Restart Board Monitor" or not )...and.. this variable is a mask for testing Status Bit 5 (has the PC21 suffered a processing failure?)

= 64 'This variable is a mask for handling Control Bit 6 (to signal "Clear Interrupts" or not ) . . . and ... this variable is a mask for testing Status Bit 6 (has the PC21 generated an interrupt?)

128 'This variable is a mask for handling Control Bit 7 (to signal "Message Received from the ODB" or not)

18

Page 20: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

510 PC21WRITE = 64512! ' ** This variable is only used if the machine 520 ' language I/O routines are installed 530 PC21READ = 64561! '** This variable is only used if the machine

540 550

language I/O routines are installed

********************************************************

COMPUMOTOR PC21 "BASIC" RESET ROUTINE

December 1, 1984

* * * * * ********************************************************

The following subroutine allows the "Board Monitor" to timeout, and Reset the PC21, Then the Board Monitor timer is restarted. A "GOSUB 700" instruction will reset the PC21.

COMPUMOTOR PC21 "BASIC" INPUT AND OUTPUT SUBROUTINES WITH MACHINE LANGUAGE

DEVICE DRIVERS

Dec. 10, 1984

560 570 580 590 600 610 620 630 640 650 660 670 700 OUT ADDRESS%+1, ( CONTROL OR CRASH ) 'Control Bit 2 high 710 OUT ADDRESS%+1, ( CONTROL AND NOT CRASH ) 'Control Bit 2 low 720 FOR Y=l TO 5000=NEXT 'wait for BMA 725 'NPUT "725";RAS 730 OUT ADDRESS%+1, ( CONTROL AND NOT FAULT ) 'Control Bit 5 low 740 OUT ADDRESS%+1, ( CONTROL OR FAULT ) 'Control Bit 5 high 745 FOR 1=1 TO 5000: NEXT 747 'NPUT "747",RAS 750 RETURN 760 ggO i *************** ************************ *****************

981 982 983 984 985 989 990 991 1000 1010 1020 1030 1040 1050 1055 1060 1070 1080 1200 1210 1220 1230 1240 1245 1250 1260 1290 1291 1292 1293 1294 1295 2500 3000 3010

********************************************************

BFLAG%=0 IF INSTR(COMMAND$,"Wl") OR INSTR(COMMAND$,"wl") THENBFLAG%=1 IF INSTR(COMMAND$,"PB") OR INSTR(COMMAND$,"pb") THEN BFLAG%=1 IF INSTR(COMMAND$,"X1B") OR INSTR(C0MMAND$,"xlb") THEN BFLAG%=1 COMMANDS = COMMAND$ + CHR$(13) ' Add carriage return to command CALL PC21WRITE(COMMANDS, ADDRESS%)' Execute machine language write FOR RRR=1 TO 13000: NEXT RRR RETURN

' Reserve memory for routine OPEN "\PC21\CODE.DAT" FOR INPUT AS #1 ' Access machine code data file FOR X = 64512! TO 64639! ' NOTE; CLEAR statement clears all!

INPUT #1, J ' ' Install machine code POKE X,J

'NPUT "1245";RAS NEXT:CLOSE:GOTO 70 , RETURN TO BEGINNING OF PROGRAM

>******************** PC21 WRITE ******************************** 'This program is an I/O driver that is called from IBM PC Basic that 'writes a command string to the PC21 on a byte by byte basis. It is 'invoked from Basic as follows: CALL PC21WRITE( COMMANDS, ADDRESS ) 'where A$ is the string to be sent and B is a pointer to the base I/O 'address of the PC21. i******************* PC21 READ SUBROUTINE **************************** ANSWER$=" n + i.n i R e s e rve string space for response CALL PC21READ( ANSWERS, ADDRESS%, BFLAG% ) ' Execute read

IQ

Page 21: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

3020 3030 3040 3050 3060 3070 3100 3110 3120 5000 5001 5003 5005 5010 5012 5014 5015 5016 5020 5030 5035 5040 5050 5060 5070 5080 5085 5090 5095 5100 5105 5110 5115 5120 5125 5130 5135 5140 5145 5150 5155 5160 5165 5170 5175 5179 5180 5182 5183 5184 5185 5190 5192 5195 5198 5199 5200 5201 5205 5210 5215 5216 5217

IF BFLAG%=0 THEN RETURN NUM#=0:FOR X=1 TO 4 DIGIT%=ASC(MID$(ANSWERS,X,1)) NUM#=NUM#+DIGIT%*256'- (4-X) : NEXT ANSWER$=STR$(NUM#) RETURN ' BFLAG% identifies binary report commands

NOTE!...the variable COMMAND? must NOT contain both types of request; Binary and ASCII CORTEST ******************************************************** ******** CF CONTROL ROUTINES ******

******************************************************** UPDATE: JUNE 1988 PROGRAM: \CF\SCOPE.BAS BY: KEN MACPHERSON

SCREEN 0:WIDTH 80:COLOR 15,0:CLS PRINT"STARTING TO LOAD DATA ":PRINT:PRINT:PRINT 'NPUT "5035 ";RAS WAST=TIMER:WHILE (TIMER>WAST+.25) :WEND SCREEN 0:WIDTH 80: COLOR 7,0 CLOSE ' CHANNEL PI=4*ATN(1) ' CHANNEL OPEN "\CF\CF.DAT" FOR INPUT AS #2

AFTER TEST DATA SAVE CF.DAT CONFIG FILE

INPUT #2,CODE$ INPUT #2,ENVIRONMENTS

INPUT #2,TEMP INPUT #2,PRESSURE INPUT #2,SPT$ INPUT #2,W INPUT #2,THK INPUT #2,A

40 char sample code

IF SPT$= "COD' INPUT #2,EMOD INPUT #2,SLU INPUT #2,SLL INPUT #2,HZ# INPUT #2,DUR INPUT #2,WV$ INPUT #2,SRR INPUT #2,EXT2$ INPUT #2,EXT3$ CLOSE #2 SR1=.0005 UGSL=SLU*1.1 LGSL=SLL*.9 SMX=UGSL-LGSL LDCM = 7500 SPLG=W:SPD=THK RF=5500 RES=25000

"COD" and "RTS" =Round Tensile Specimen width for COD or length for RTS B for COD or diameter for RTS initial crack opening

sets specimen area (SPA) THEN SPA =(W-A)*THK ELSE SPA = ((THK-A)/2)~2*PI

Youngs modulus in psi strain limit upper strain limit lowr frequency dur in cycles waveform "SINE" or "TRI" sample rstrsval rate extra space for later stuff extra space for later stuff

' initial strain rate in inch/sec 'upper graphing stress limit

'LOWER GRAPHING STRESS LIMIT

' load cell maximum (lbs)

DF is the ratio between inch and steps

DEFINE VARIABLES AND SET INIT VALUES EMODUL=EDMOD:Dl=((SLU-SLL)/EMOD)*W*(10)'dl is in inches DR1=D1*5500 ' convert to revs 5500 revs per inch SX$(1)="STRESS IN KIPS" SX$(2)="LOAD IN KIPS " SX$(3)="STRAIN IN/IN " ' THESE VARIABLES CONTROL AQUISTION AND CONTROL CRC=7:IF HZ#>.9 THEN CRC=18 ' CHECK WAIT VALUE

20

Page 22: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

5218 SRS=4 'SCREEN RESOLUTION number of cycles on screen 5220 IF HZ#<>0 THEN PER=l/HZ# 5225 SMX=UGSL-LGSL 5230 LLU=SLU*SPA:DTS=SLU-SLL 5235 LMX=SMX*SPA 5240 LLL=SLL*SPA:DTL=LLU-LLL:ATL=(LLU+LLL)/2 5242 ATS=(SLU+SLL)/2 5245 DMX=(CINT(150000»*D1))/100000! ' 1.5 x's as much 5250 TMX= 60 5255 CMX=50 52 60 SC=1 ' there are three screens it starts with screen 1 5261 ST$=STRING$(20,32) 5265 '

' screen 1 ' screen 2 ' screen 3 is crosshead displc vrs. total cycles.

is stress vrs. is mean stress

current time (shows cycles) vrs. total cycles

5266 5267 5268 5269 5270 OPEN "\BATCH\C0NFIG1.COR" FOR INPUT AS #2

max load cell lvdt divide load multiply 50 / 60 conversion acquistion for channel 3S4 or not

close \batch\configl.cor

5420 5422

5275 INPUT #2,MXL0AD 5280 INPUT #2,LDIV 5285 INPUT #2,LODM 52 90 INPUT #2,ELEC 5292 INPUT #2,SELC 5299 CLOSE #2 5300 ' 5310 ON KEY(5) GOSUB 5800:KEY(5) ON 5400 ' 5410 GOSUB 6000:PSET (0,130+<65*COS (0)*DTL/LMX)-(LLL+LLU)/LMX*65) 5415 FOR CHSD= 1 TO 40:CHASKD$=INKEY$: NEXT 5416 STS=SRS*2*PI

SAMPLE SCREEN DRAW draw axis on screen

5424 PER = 1/HZ# 5426 UGSL = 1.1 * SLU 5428 LGSL•= .9 * SLL 5430 AGSL = (UGSL+LGSL)/2000 5432 ATS= (SLU-SLL)/2 5434 DTS= (SLU+SLL)/2 5436 SMX = UGSL-LGSL 5438 Dl = ((SLU-SLL)/EMOD)*W*(10) 5440 KEY(11) OFF: KEY(14) OFF

5442 LINE (0,130-(SLU-LGSL)/SMX*130)-(280,130-(SLU-LGSL)/SMX*130),,,&HC0DE 5444 LINE (0,130-(SLL-LGSL)/SMX*130)-(280,130-(SLL-LGSL)/SMX*130),,,&HC0DE 5446 LINE (0,130-(DTS-LGSL)/SMX*130)-(280,130-(DTS-LGSL)/SMX*130),,,&HE0D0 5448 LOCATE 2,2:PRINT USING"###.#";UGSL/1000:LOCATE 9,2:PRINT USING"##.##";AGSL 5450 LOCATE 18,1:PRINT USING"##.##";LGSL/1000 , 5452 PSET (0,130-130*(SLL-LGSL)/SMX) 5454 IF WV$="TRI" THEN GOTO 5462 5456 FOR THETA = 0 TO STS STEP .25 5458 LINE -(280*THETA/STS,130-(DTS-LGSL) /SMX*130+(130*COS(THETA)*(ATS)/SMX)),2 54 60 NEXT:GOTO 54 95 5462 STS = 5*2*PI 5464 FOR THETA = 0 TO 10 STEP 2 5466 Yl = 130-130*(SLU-LGSL)/SMX:Y2 = 130-130*(SLL-LGSL)/SMX 5468 LINE (THETA/10*280,Yl)-((THETA+1)/10*280,Y2),2 5470 LINE ((THETA+1)/10*280,Y2)-((THETA+2)/10*280,Y1),2 5472 NEXT 5495 CH$=INKEY$:IF CH$="" GOTO 5495 5500 ' 5510 CLS:SCREEN 0:WIDTH 80 5515 BEEP:CLS

Page 23: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

5520 5530 5540 5550 5560 5565 5567 5568 5570 5580 5590 5592 5594 5596 5600 5605 5610 5611 5614 5615 5616 5617 5618 5 619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5630 5635 5640 5645 5647 5650 5655 5658 5659 5660 5670 5672 5675 5680 5700 5705 5710 5715 5720 5725 5730 5735 5740 5745 5755 5800 5810 5820 5830 5840

SHELL "dir \data /p" LOCATE 23 PRINT:PRINT LOCATE 24:INPUT "ENTER NAME OF NEW DATA FILE....>",F$ IF F$="" THEN GOTO 5550 IF F$="five.dat" THEN GOTO 5550 IF F$="FIVE.DAT" THEN GOTO 5550 IF F$="cftest.dat" OR FS="CFTEST.DAT" THEN GOTO 5550 I

SCREEN 0:WIDTH 80:CLS FOR ASD =1 TO 3:LOCATE ASD:PRINT STRING$(7 9," "):NEXT LOCATE 2,20:PRINT "PRE-TEST SETUP AND DATA DISPLAY" LOCATE 4:GOSUB 9630 CH$=INKEY$:IF CH$="Y" OR CH$-"y" THEN GOSUB 9800:GOTO 5611 IF CH$="n" OR CH$="N" THEN GOSUB 5611 IF CH$=CHR$(27) THEN RUN GOTO 5596 FOR ASD = 21 TO 23-.LOCATE ASD: PRINT STRING$(7 9," "):NEXT PRINT

FINAL RUN TEST SYSTEM CHECK PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT

1.. LVDT displaced by mounting bracket 2.. LVDT CABLE TO SC 12.2 STROKE MODULE 3.. Load Cell cable to SC 12.1 load module 4.. Connect green shield wires to SC 12 chassis 5.. DATA CABLE FROM SC 12 OUTPUT CONNECTOR TO DM100-PC 6.. Hand tighten load train 7.. Motor should not plug into Power Director 8.. Connect cable to printer from computer 9.. Assure printer is turned on and the cable connected

'PLEASE REFER TO DRAWING IN MANUAL PRINT PRINT"THE PARAMETERS ARE SET AND THE TEST IS READY TO " PRINT" EXECUTE. IF YOU ARE UNHAPPY WITH THE PARAMETERS AND" PRINT" AND WANT TO CHANGE THEM, TYPE 'N' FOR DO NOT CONTINUE. PRINT" THE PROGRAM WILL RETURN TO THE CF MAIN MENU. " PRINT PRINT" A REPLY OF 'Y' WILL CONSTITUTE A POSITIVE ANSWER AND ' PRINT" CONTINUE THE EXPERIMENT. " PRINT " CONTINUE ( Y ) " PRINT" RETURN TO CF MENU .. ( N ) " CHT$=INKEY$:IF CHT$="Y" OR CHT$="y" THEN GOTO 5680 IF CHTS="N" OR CHT$="n" THEN RUN "\CF\CF" IF. CHT$=CHR$(27) THEN RUN "\CF\CF" GOTO 5660 :PRINT:PRINT:PRINT:PRINT"OPENING DATA FILE .."F$"."

OPEN "\DATA\"+F$ FOR OUTPUT AS #1 WRITE #1,CODE$,ENVIRONMENT$ WRITE #1,TEMP,PRESSURE WRITE #1,SPT$,THK,W,A WRITE #1,EMOD,HZ#,DUR WRITE #1,SRR WRITE #1,EXT2$,EXT3$ WAST=TIMER:WHILE(TIMER<WAST+.5):WEND:CLS:GOSUB 6000 KEY(5) OFF

GOTO 7 020

' this is gosub routine to quit

RETURN 5840 ' the on key gosub must have return

Page 24: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

5845 COMMAND$="K":GOSUB 1000 5850 KEY OFF 5860 FOR ASL= 1 TO 35:CASD$=INKEY$:NEXT ' clear buffer 5870 RUN "\ef\cf" 5880 ' 6000 ' 6010 ' draw axis on screen 6020 ' 6030 SCREEN 1:KEY OFFiVIEW (38,9)-(319,140): 6035 LOCATE 25:PRINT" F5 - ENDS PROGRAM " 6040 FOR 1=1 TO 4:LINE(1,1)-(1/4*280,130),1,B:NEXT 6045 STS=PER*SRS 6050 'LINE(1,65)-(280,65),1 6060 ' 6070 ' print text on screen 6080 ' 6090 IF CODE$<>"" THEN GOTO 6120 6100 LOCATE 1,11:PRINT "Corrosion Fatigue Test" 6110 GOTO 6140 6120 LNQD =LEN(LEFT$(CODE$,35)):LOCATE 1,(20-.5*LNCD) 6130 PRINT LEFT$(CODE$,35) 6140 LOCATE 21,1:PRINT "CYCLES-TOTAL: DISPL:" 6145 FOR T=l TO LEN(SX$(1)):LOCATE 2+T,l:PRINT MXDS(SX$(1),T,1):NEXT 6150 LOCATE 21,31:PRINT USING".#####";D1;:PRINT"in" 6155 LOCATE 21,14:PRINT USING"#######.#";TTOT*HZ# 6160 LOCATE 22,1:PRINT "STRESS MEAN: FREQ :":LINE(48,171)-(62,171),2 6170 LOCATE 22,14:PRINT USING"######_p_s_i" ; (SLU+SLL)/2 6175 LOCATE 22,32:PRINT MID$(STR$(HZ#) ,2,4) ; "hz" 6180 LOCATE 23,1:PRINT "STRESS ALT.: PERIOD:":LINE(48,179)- " (62,179),3,,&HAAAA 6190 LOCATE 23,14:PRINT USING"######_p_s_i";INT((SLU-SLL)/2):LOCATE 23,32:PRINT MID$(STR$(PER) ,2 , 4) ;"sec" 6200 ' print text label of axis 6205 ' 6210 ' 6220 ' SAMPLE SCREEN DRAW 6230 ' draw axis on screen 6240 PER = 1/HZ# 6250 UGSL = 1 . 1 * SLU 6260 LGSL = .9 * SLL 6270 AGSL = (UGSL+LGSL)/2000 6280 ATS= (SLU-SLL)/2 6290 DTS= (SLU+SLL)/2 6300 SMX = UGSL-LGSL 6310 Dl = ((SLU-SLL)/EMOD) *W*(10) 6320 KEY(ll) OFF: KEY(14) OFF 6330 LINE (0,130-(SLU-LGSL)/SMX*130)-(280,130-(SLU-LGSL)/SMX*130),,,&HC0DE 6340 LINE (0,130-(SLL-LGSL)/SMX*130)-(280,130-(SLL-LGSL)/SMX*130),,,&HC0DE 6350 LINE (0,130-(DTS-LGSL)/SMX*130)-(280,130-(DTS-LGSL)/SMX*130),,,&HE0D0 6360 LOCATE 2,2:PRINT USING"###.##";UGSL/1000:LOCATE 9,2:PRINT USING"###.##";AGSL 6370 LOCATE 18,1:PRINT USING"###.##";LGSL/1000 6376 LOCATE 19,6:PRINT US1NG"0 SECONDS ##.###".-STS 63B0 PSET (0,130-130*(SLL-LGSL)/SMX) 6400 RETURN 7000 ' 7010 ' * * * * * **** scope program 7020 ' 7030 LOCATE 16 7035 COMMAND$="K":GOSUB 1000 7040 ' corrosion fatigue constant load amplitude 7045 IF SELC=1 THEN CLOSE #3:OPEN "\data\cftest.dat" FOR OUTPUT AS #3

Page 25: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

7049 ' this opens the cftest.dat which is compat with datest file system 7 0 5 0 ' •

7055 FOR T=19 TO 23:LOCATE T:PRINT STRINGS(3 9,32):NEXT 7056 LOCATE 19,9:PRINT" RAMP-UP POINT " 7057 LOCATE 21:PRINT" PRESS ENTER KEY TO START EXPERIMENT" 7058 LOCATE 23:PRINT" PRESS FUNCTION KEY F5 TO STOP " 7060 ' 7061 SMWR=0 7065 ON KEY(5) GOSUB 5800 ' end program 7066 KEY(5) ON: 7067 CH$=" ":CHS=INKEY$: WHILE (CH$OCHRS (13) ) : CH$=INKEY$ : WEND 7068 FOR T=19 TO 23:LOCATE T:PRINT STRING$(3 9,32):NEXT 7069 GOSUB 6140 ' reprints inform at bottom of screen 7 070 DR1=D1*RF 7080 LDL=SLL*SPA:LDU=SLU*SPA: 'convert stress to load 7091 FOR RQT=1 TO 32:FSD$=INKEY$:NEXT 7100 ' set function for sine or triangle 7110 IF WV$="SINE" THEN 7120 ELSE 7140 7120 DEF FNCMD3$(DR1,PER)="A"+MID$(STR$((DR1/(.25*PER)A2)),2,6)+" V"+MID$(STRS(DR1/(.25*PER)),2,6)+" D-"+MID$(STRS(INT(DR1*RES)),2) 7122 IF. HZ#<.082 THEN DEF FNCMD3$(DR1,PER)="A0.1 V"+MID$(STR$(DR1/(.5*PER)),2,6)+" D-"+MID$(STR$(INT(DR1*RES)),2) 7130 GOTO 7150 7140 DEF FNCMD3$(DR1,PER)="A990 V"+MID$(STR$(DR1/(.5*PER)),2,6)+" D-"+MID$(STR$(INT(DR1*RES)),2) 7150 ' 7155 FOR T=l TO 32:CHASD$=INKEY$:NEXT 7160 G1=0 7162 DIM PICTURE*(9000) 7164 VIEW 7165 GET (0,0)-(319,199),PICTURE% 7167 VIEW (38,9)-(319,140) : 7170 VDC$="1" 7180 IF LLU>270 THEN VDCS="2" 7190 IF LLU>2700 THEN VDC$="3" 7200 DT$= "0R1"+VDC$+"C012C1C0C1":CALL CMDWR(DT$,I) 7210 ST$= STRINGS(9,32) 7220 CALL ASCRD(ST$,I):L0=VAL(ST$)*LODM 7230 CALL ASCRD(ST$,I):D0=VAL(ST$)/LDIV 7232 IF L0>.8*LLL THEN DT$="C0C1" ELSE GOTO 7240 7233 IF D0*LDIV>2.6 THEN SMWR=1000 7234 'PRINT D0*LDIV;">2.6": INPUT RAS 7235 COMMAND$="MN A990 V2 D-3333 G":GOSUB 1000 7237 WAST=TIMER:WHILE(TIMER<WAST+1):WEND:CALL CMDWR(DT$,I) 7239 GOTO 7220 7240 GOSUB 700:COMMAND$="SSD0 SSH1":GOSUB 1000 7250 COMMAND$="P":GOSUB 1000:GOSUB 3000 7260 IF ANSWER$="" THEN 7250 .7270 COMMAND$="MC A990 V.09 D+ G":GOSUB 1000:Cl$=COMMAND$ 7300 CSD=0:DT$="1R200E":CALL CMDWR(DT$,I) 7310 WHILE (CSD<40) 7320 CALL ASCRD(ST$,I):LC=VAL(ST$)*LODM: FOR RRR=1 TO 20000: NEXT RRR 7330 CALL ASCRD(ST$,I):DC=VAL(ST$)/LDIV: FOR RRR=1 TO 20000: NEXT RRR 7340 IF LO(.99*LLL) THEN BEEP: CSD=110 :LL=LC :DL=DC : GOTO 7365 7341 'LOCATE 10,10:PRINT LC;" > ";(.99*LLL) 7342 IF ABS(DO-DC)<.0009 THEN SMWR=SMWR+1 7343 IF SMWR>99 THEN 7355 7345 CSD=CSD+1 7350 WEND 7352 GOTO 7300 7355 COMMAND$="K" : GOSUB 1000'• 7356 FOR T=19 TO 23.-LOCATE T : PRINT STRING$ (39 , 32) :NEXT 7357 SOUND 100,10:LOCATE 21:PRINT"check system config"

24

Page 26: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

7358 PRINT"press enter to cont" 7359 INPUT CONTRA$:ERASE PICTURE% 7360 GOTO 7000 7365 COMMAND$="K":GOSUB 1000:WAST=TIMER:WHILE(TIMER<WAST+.5):WEND 7369 COMMAND$="MC A990 V.09 D+ G":GOSUB 1000 7370 COMMAND$="K" 7380 CSD=0:DT$="1R200E":CALL CMDWR(DT$,I) 7390 WHILE (CSD<99) 7400 CALL ASCRD(ST$,I):LC=VAL(ST$)*LODM 7410 CALL ASCRD(ST$,I):DC=VAL(ST$)/LDIV 7420 IF LC>(.99*LLU) THEN BEEP:CSD=110:LU=LC:DU=DC:GOTO 7450 7425 CSD=CSD+1 7430 WEND 7440 GOTO 7380 7450 GOSUB 1000:COMMAND$="P":GOSUB 1000

7451 WAST=TIMER:WHILE(TIMER<WAST+.2):WEND 7455 GOSUB 3000:RC=VAL (ANSWERS) :RU=RC 7470 D1=DU-DL:DD0=D1 7480 LOCATE 21,32:PRINT USING".#####in";D1 7490 WRITE #1,LU,LL,D1 7492 DT$="0R10C210C3C2C3":CALL CMDWR(DT$,I) 74 94 WAST-TIMER:WHILE(TIMER<WAST+.5) :WEND 7496 CALL ASCRD(ST$,I) :ST3=VAL(ST$) :CALL ASCRD(ST$,I) :ST4=VAL (ST$) 7497 IF SELC=1 THEN DT$="OR10C010C110C210C3" ELSE DT$="0R10C010C1" 74 98 CALL CMDWR(DT$,I) 7499 IF SELC =1 THEN WRITE #3,LU,DU,ST3,ST4,0 ' write info to cftest.dat file 7500 DF=(RU)/(DU-DL) 7510 LF=(LU-LL)/(DU-DL) 7520 LR=(LU-LL)/(RU) 7530 ON KEY(5) GOSUB 8800 ' end program 7540 KEY(5) ON 7560 VIEW 7580 VIEW (38,9)-(319,140) 7590 PSET(0,SLU/SMX) 7595 WAST=TIMER:WHILE(TIMER<WAST+.3) :WEND 7600 ' 7620 ' cycle constant amplitude load measure stroke 7630 ' 7635 DR1=(RU)/RES ' res =25000 steps per rev typically 7 640 DIS=(RU):DIS0=RU' steps between upper and lower load 7645 DT$="1R10C210C3C2C3":CALL CMDWR(DT$,I) 7646 WAST=TIMER:WHILE(TIMER<WAST+.3) :WEND 7647 CALL ASCRD(ST$,I):ST3=VAL(ST$):CALL ASCRD(ST$,I):ST4=VAL(ST$) 7648 IF SELC=1 THEN DT$="OR10C010C110C210C3" ELSE DT$="OR10C010C1" 7 649 CALL CMDWR(DT$,I) 7660 IF SELC=1 THEN WRITE #3,OL,OD,ST3,ST4,0 'write info to cftest.dat file 7680 DIM SCREN(240),SCRED(240) 'array for screen save and data average 7685 DIM SCRN3(240),SCRN4(240) ' data average for chan 3 and 4 7700 REV=DR1:PER=1/HZ# 7705 ON KEY(10) GOSUB 8000:KEY(10) ON 7710 OL=L:OD=D ' set initial values away 7716 ' 7719 ' 7720 TS=TIMER:AC=1:TD=TIMER:SC=0 7725 FOR WAST = 1 TO 100:CHASD$=INKEY$:NEXT 'clear buffer 7727 DT$="0R1"+VDC$+"C012C1" 7728 IF SELC=1 THEN DT$=DT$+"12C212C3" 772 9 CALL CMDWR(DT$,I) 7730 SRS=4:STS=PER*SRS 'set screen resolution 7735 WAST=TIMER:WHILE(TIMER<WAST+.5):WEND

25

Page 27: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

7736 DT$="1R999E":CALL CMDWR(DT$,I) 7740 TO=TIMER:LMIN=LLU:TCC=TIMER 7745 ' SEE LINE NUMBER 5217 FOR CRC AND SRS VALUES SETTING 7746 ' SRS SCREEN RESOLUTION CRC CHECK RESOLUTION 7748 ' the check for data save is in the graph gosub 7749 ' to account for lmin and lmax reset (time saved is with them) 7750 CALL ASCRD(ST$,I):L=LODM*VAL(ST$):CALL ASCRD(ST$,I):D=VAL (ST$)/LDIV 7755 SCREN(SC)=L:SCRED(SC)=D:SC=SC+1 7764 DR1=DIS/RES:PER=1/HZ# 7765 COMMAND$="MA "+FNCMD3$(DR1,PER)+" G":GOSUB 1000 7767 'there will be no loops or comments as to save time 7768 CALL ASCRD(ST$,I) :CH3=VAL (ST$) :CALL ASCRD(ST$,I) :CH4=VAL(ST$) 7769 SCRN3(SC)=CH3:SCRN4(SC)=CH4 7770 CALL ASCRD(ST$,I):L=LODM*VAL(ST$):CALL ASCRD(ST$,I):D=VAL(ST$)/LDIV 7775 SCREN(SC)=L:SCRED(SC)=D:SC=SC+1 7780 IF SELC=0 THEN 7785 7782 CALL ASCRD(ST$,I) :CH3=VAL (ST$) :CALL ASCRD(ST$,I):CH4=VAL(ST$) 77 83 SCRN3(SC)=CH3:SCRN4(SC)=CH4 7785 IF L>LMAX THEN LMAX=L:DU=D 77 90 IF L<LMIN THEN LMIN=L:DL=D 77 91 IF SC>235 THEN TD=TIMER-STS 77 95 IF TIMER>8 6394! THEN GOSUB 8200 ELSE D1=DU-DL:CC=CC+1:DUT=D1 7801 WHILE((TIMER-TD)>STS):VIEW:IF TIMER>86394! THEN GOSUB 8200 7802 DT$="1R999E":CALL CMDWR(DT$,I) 7805 CLS-.PUT (0,0) ,PICTURE% 7810 VIEW (38,9)-(319;140):PSET(1,130-(L/SPA-LGSL)/SMX*130) 7815 LOCATE 21,31:PRINT USING"*.#####in";D1 7820 IF TIMER-TS>SRR THEN GOSUB 8600 7825 IF TIMER-TBRK>3600 THEN BRKC=0:TBRK=TIMER 7830 TTOT=TIMER-T0:LOCATE 21,14:PRINT USING"######.##";TTOT/PER 7835 IF DUR<TTOT/PER THEN GOSUB 8800 7840 IF SELC=0 THEN 7850 7845 AVT1=L:AVT2=D1:AVT3=CH3:AVT4=CH4:AVC=AVC+1 7850 DUT=DUT:STS=PER*SRS:CC=0:LMAX=L:LMIN=L 7852 IF NG=1 THEN FOR TSC=0 TO (SC) ELSE GOTO 7858 7854 LINE -(280*TSC/SC,130-130*((SCREN(TSC)/SPA-LGSL)/SMX)),2:NEXT 7858 SC=0;TD=TIMER 7860 WEND:THETA=TIMER-TD 7865 IF NG=0 THEN LINE -(280*THETA/STS,130-130*(L/SPA-LGSL)/SMX),2 7880 IF ABS(DU-D0)>.15 THEN GOSUB 8500 7881 IF D*LDIV>2.8 THEN GOSUB 8500 7895 IF FLAG=1 THEN COMMAND$="S R":GOSUB 1000:GOSUB 3000 ELSE GOTO 7940 7900 IF LEFT$(ANSWER$,2)="*R" OR LEFT$(ANSWER$,2)="*S" THEN GOTO 7980 7905 GOTO 7770 7940 IF CC>CRC*PER AND (LMAX<.99*LLU) THEN FLAG=1 7941 IF COCRC*PER AND (LMIN<. 99*LLL) THEN FLAG=1 7943 IF COCRC*PER AND (LMAX>1 . 0l*LLU) THEN FLAG=1 7944 IF COCRC*PER AND (LMIN>1. 01*LLL) THEN FLAG=1 7950 IF CC>15 THEN FOR WAT=1 TO 30:NEXT 7970 GOTO 7770 7 980 COMMAND$="K":GOSUB 1000:FLAG=0:CC=0 7983 DT$="1RC0":CALL CMDWR(DT$,I):CALL ASCRD(ST$,I):L=LODM*VAL(STS) 7984 ML=L-LLU:IF ML>20000 THEN ML=2000 7 985 IF L<LLU THEN 7 987 7986 COMMAND$="MN A990 V2 D-"+MID$(STR$(INT(ML/LR)),2)+" G":GOSUB 1000:GOTO 7988 7987 COMMAND$="MN A990 V2 D+"+MID$(SIRS(INT (ML/LR)),2)+" G":GOSUB 1000 7988 WA=TIMER:WHILE(TIMER<WA+.1):WEND:IF DIS<0 OR DIS>400000! THEN DIS=1000 7989 DT$="1RC0":CALL CMDWR(DT$,I):CALL ASCRD(ST$,I):L=LODM*VAL(ST$) 7990 NCL=INT((LLU-LMAX)+(LMIN-LLL)):DIS=ABS(DIS+(NCL/LR)):DR1=DIS/RES 7996 COMMAND$="MA "+FNCMD3$(DR1,PER)+" G":GOSUB 1000 7997 DT$="1R999E":CALL CMDWR(DT$,I):GOTO 7770 7 998 ' the loop has as no gosubs or empty space

26

Page 28: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

7999 ' program ends by passing control to fileretr.bas 8000 ' 8010 ' 8020 IF NG=0 THEN NG=l ELSE NG=0 ' ng= no graphics variable 8095 RETURN 8120 ' 8195 RETURN 8200 ' 8210 ' day change 8215 SD=86400! ' 8220 TCHK=-(SD-TCHK) 8230 T0=-ABS(SD-T0) 8235 TBRK=-ABS(SD-TBRK) 8240 TD=-(SD-D) 8250 TCC=-(SDC-T) 8260 TS=-(SD-TS) 8280 IF TIMER>86394! THEN 8280 8290 RETURN 8390 END 8395 ' 8500 ' . 8510 BRKC=BRKC+1 'INDEX BY 1 THE BREAK VARIABLE 8520 ' check for break of specimen if the program receives 8525 ' a break critera more than 5 times in one hour it will end 852 6 ' the test 8537 IF SELC=0 THEN DT$="0R1"+VDC$+"C012C1999E":CALL CMDWR(DT$,I) 8538 IF SELC=1 THEN DT$="12C212C31R999E":CALL CMDWR(DTS,I) 8540 WASTT=TIMER:WHILE(TIMER<.8+WASTT) :WEND 8550 DU=D0:DL=D0

8570 IF BRKC>5 THEN 8590 ELSE RETURN 7770 8590 RETURN 8800 8596 8600 8606 8610 8612 8620 SU=(LMAX)/SPA 8625 SL=(LMIN)/SPA:D1=DUT 8630 WRITE #1,SU,SL,DU,DL,TTOT

8636 IF AVC=0 THEN AVC=l 8640 IF SELC=1 THEN WRITE #3 , AVT1/AVC , AVT2/AVC , AVT3/AVC ,AVT4/AVC , TTOT 8646 AVT1=0:AVT2=0:AVT3=0:AVT4=0 8 647 AVC=0 8650 M=M+1:CC=1:TS=TIMER 8690 RETURN 8790 ' 8800 ' end test gosub from F5 key 8805 KEY(5) OFF 8810 ' 8820 COMMAND$="K":GOSUB 1000-.COLOR 4,1 8825 WAST=TIMER:WHILE(TIMER<WAST+.2) :WEND 8830 GOSUB 8600 ' save last point of data 8840 DT$="1RC0C1":CALL CMDWR(DT$,I) 8850 CALL ASCRD(ST$,I):LLAST=VAL(ST$)*LODM 8860 CALL ASCRD(ST$,I):DLAST=VAL(ST$)/LDIV 8870 IF LLAST< 450 GOTO 8900 'BELOW 450 POUNDS 8875 COMMAND$="MNA99 VI D-5000 G":GOSUB 1000 8880 PAUS=TIMER:WHILE(TIMER<PAUS+.5):WEND 8885 GOTO 8840 8890 ' 8900 COMMAND$="K":GOSUB 1000 8901 DT$="1R999E":CALL CMDWR(DT$,I)

">7

save data to F$ data file instanteous data save

Page 29: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

8902 WAST=TIMER:WHILE (TIMER<WAST+.5):WEND 8905 GOSUB 9600 8910 PRINT "PRESS (ESC) KEY TO RUN FILE RETRIEVAL" 8915 WAST=TIMER:WHILE(TIMER<WAST+.25) 8918 CHS=INKEYS:IF CHS="Y" OR CHS="y" THEN GOSUB 9800 8920 IF CH$="N" OR CH$="n" THEN 9000 8927 IF CH$=CHR$(27) THEN GOTO 9000 8928 WEND 8930 IF SELC=0 THEN 8915 8940 IF TIMER-TS>SRR THEN GOSUB 9060 'keep saving for cftest file 8955 IF TIMER>86394! THEN GOSUB 8200 8960 CALL ASCRD(ST$,I) : CH1=VAL (ST$) -.CALL ASCRD(ST$,I) : CH2=VAL (ST$) 8965 SCREN(SC)=CH1:SCRED(SC)=CH2 8970 CALL ASCRD(ST$,I):CH3=VAL(ST$):CALL ASCRD(ST$,I):CH4=VAL(ST$) 8975 SCRN3(SC)=CH3:SCRN4(SC)=CH4 897 9 IF S O 2 0 0 THEN GOTO 8990 8980 SC=SC+1:AFTTOT=TIMER-T0 8985 GOTO 8915 'RETURN TO INKEY$ CHECK 8990 FOR T= 1 TO SC :AVT1=AVT1+SCREN(T):AVT2=AVT2+SCRED(T) 8992 AVC3=AVT3+SCRN3(T):AVT4=AVT4+SCRN4(T):NEXT:SC=0:AVC=AVC+l 8998 DT$="1R999E":CALL CMDWR(DT$,I) 8999 GOTO 8915 ' goto the INKEY$ CHECK 9000 ' 9010 ' 9050 RUN "\CF\FILERETR" 90 60 ' save data for extra channels and cftest file after test 9065 IF AVC=0 THEN 8990 9070 WRITE #3,AVT1/AVC,AVT2/AVC,AVT3/AVC,AVT4/AVC,AFTT0T 9080 AVC=0:AVT1=0:AVT2=0:AVT3=0:AVT4=0:SC=0 9085 DT$="1R999E":CALL CMDWR(DT$,I) 908 6 TS=TIMER 9090 RETURN 9120 ' 9150 KEY 1,"LIST " 9190 RUN "\ef\cf" ' restarts program for cf changes 9600 ' 9605 ' 9610 COLOR 7,0:SCREEN 0:CLS:WIDTH 80:SCREEN 0,0,0 9615 TIND$=TIME$:DEND$=DATES 9620 SCREEN 0:PRINT:PRINT"CORROSlON FATIGUE FINAL TEST END REPORT":PRINT 9625 PRINT " TIME: "TIND$," DATE :"DEND$ 9630 PRINT "CODE uuuuuuuuuuuuuuuuuu>";CODE? 9635 PRINT "ENVIRONMENT uuuuuuuuuuuuuuuuuu>nENVIRONMENT$ 9636 PRINT "MATERIAL SPECS uuuuuuuuuuuuuuuu>";MATPRO$ 9640 PRINT "PRESSURE uuuuuuuuuuuuuuuuuu>'' ;PRESSURE 9645 PRINT "TEMPERATURE uuuuuuuuuuuuuuuumi>";TEMP 9650 PRINT "SPECIMEN TYPE uuiiuuuuuuuuuuuuuu>"; SPT? 9655 PRINT "SPECIMEN THICKNESS OR DIAMETER >";THK 9660 PRINT "SPECIMEN WIDTH OR LENGTH uuuuu>";W 9665 PRINT "SPECIMEN AREA uuuuuuuuuuu>";SPA 9670 PRINT "UPPER STRESS LIMIT uuuuuuuuuuu>",- SLU" PSI "SLU*SPA "LBS" 9675 PRINT "LOWER STRESS LIMIT uuuuuuuuuuu>";SLL" PSI "SLL*SPA "LBS" 9680 PRINT "HERTZ (CYCLES/SEC) uuuuuuuuuuu>";HZ# 9685 PRINT "DESIRED DURATION IN CYCLES uuuu>";DUR 9690 PRINT "ACTUAL DURATION IN CYCLES u.uuu>" ; TTOT/PER 9695 PRINT "TIME OF EXPERIMENT (SECS) uuuu>";TTOT 9700 PRINT "WAVEFORM DESIGN uuuuuuuuuuu>";WV$ 9702 PRINT "SAMPLE RATE IN SECS uuuuuuuuuuu>";SRR 97 05 PRINT "TEST DATA FILE \DATA\ uuuuuu>";F$ 9710 PRINT:PRINT"PRINT PAGE ON PRINTER (Y OR N) 9725 RETURN 9800 ' ' 9801 ' * * * * * * * * print info on printer

28

Page 30: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

9802 9803 9805 9806 9807 9808 9810 9815 9820 9825 9826 9830 9835 9840 9845 9850 9855 9860 9865 9870 9875 9880 9885 .9890 9895 9899 9900 9902 9905 9906 9907 9908 9909 9910 9911 9912 9920 9924 9928 9932 9936 9940 9944 9948 9950 9952 9954 9956 9958 9960 9962 9964 9966 9968 9970 9972 9974 10000 10010 10020 10030 10040 10050

COLOR 7,0:FOR T = 11 TO COLOR 12,0.-LOCATE 13,25

15:LOCATE T,22:PRINT STRING?(36,178):NEXT PRINT" PLEASE WAIT FOR PRINTING ":COLOR 7,0

ON ERROR GOTO 9902 LPRINT CHR$(27)+CHR$(69)-t-CHR$(27)+CHR$(71)'CHR$(27)+CHR$( ON ERROR GOTO 0 LPRINT:LPRINT"CORROSION FATIGUE FINAL TEST END REPORT":LPRINT LPRINT " TIME: "TIND$," DATE :"DEND$ LPRINT "CODE uuuuuuuuuuuuuuuuuu>";CODE$ LPRINT "ENVIRONMENT uuuuuuuuuuuuuuuuuu>'' /ENVIRONMENT$ LPRINT "MATERIAL SPEC uuuuuuuuuuuuuuuuu>" ;MATPRO$ LPRTNT "PRESSURE uuuuuuuuuuuuuuuuuu>";PRESSURE LPRINT "TEMPERATURE uuuuuuuuuuuuuuuuuu>''; TEMP LPRINT "SPECIMEN TYPE uuuuuuuuuuuuuuuii>" ,- SPT? LPRINT "SPECIMEN THICKNESS OR DIAMETER >";THK LPRINT "SPECIMEN WIDTH OR LENGTH uuuuii>" ;W LPRINT "SPECIMEN AREA uuuuuuuuuuu>";SPA ' LPRINT "UPPER STRESS LIMIT uuuuuuuuuuu>";SLU" PSI LPRINT "LOWER STRESS LIMIT uuuuuuuuuuu>";SLL" PSI LPRINT "HERTZ CYCLES/SEC iiuuuuuuuuuu>" ;HZ# LPRINT "DESIRED DURATION (CYCLES) uuuuu>";DUR LPRINT "ACTUAL DURATION uuuuuuuuuuu>";TTOT*HZ# LPRINT "TIME OF EXPERIMENT SECS uuuuuuu>";TTOT LPRINT "WAVEFORM DESIGN uuuuuuuuuuu>" ;WV$ LPRINT "SAMPLE RATE IN SECS uuuuuuuuuuu>";SRR LPRINT "TEST DATA FILE \DATA\ uuuuuuuuu>";F$ RETURN ' from gosub i

' gosub for error if printer is not ready ' M •

"SLU*SPA "SLL*SPA

"LBS' "LBS'

RESUME 9908 COLOR 7,0:FOR T = 1 3 TO 17:LOCATE T, COLOR 12,0:LOCATE 15,2 6:PRINT"CHECK ON ERROR GOTO 0 WAST=TIMER:WHILE(TIMER<1+WAST):WEND RETURN ' from the print gosub

22:PRINT STRING$(36,178):NEXT PRINTER FOR CONNECTION":COLOR 7,0

COLOR 7,0:FOR T = 11 TO COLOR 12,0:LOCATE 13,32: CHAIN "\CF\Fileretr" ' THIS STARTS THE MACHINE

15:LOCATE T,28:PRINT STRING$(24,178):NEXT PRINT" PLEASE WAIT ":COLOR 7,0

LANG CODE FOR DM100

1 I T * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

UL=10:UC=30:LD=4:LC=20 ' ul is upper line uc is upper accross ' Id is number lines down ' lc is number lines accross 'RONR 15,1,1:COLOR 15,0 LOCATE UL,UC:PRINT CHR$(201);STRINGS(LC, 205); CHR$(187)

(UL+LD),UC: PRINT CHRS(200); STRING$(LC, 205); CHR$(188) = CHR$(186)+STRING$(LC," ")+CHR$(186) 1 TO ((LD/2)+l) ' (UL+1) TO (UL+LD-1) UL+T,UC:PRINT SCREN$

LOCATE UL+LD-T,UC:PRINT SCREN$:NEXT COLOR 15,1:LOCATE 12,35:PRINT"PLEASE WAIT":COLOR 15, BSEG% = VARPTR(A%(0)) A%(0) = &HE8 A%(1) = &H5B00 A%(2) = &H5F8C A%(3) = &HCB05 DEF SEG

LOCATE SCREN$ FOR T= LOCATE

0

2Q

Page 31: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

100 60 CALL BSEG% 10065 'NPUT "10065";RAS 10070 BSEG%=A%(4) 10080 DSEG%=BSEG%+&H1001 10090 DEF SEG=DSEG% 10100 BLOAD "\DM100\DATAQ.BLO",0 10105 'NPUT "10105",-RAS 10110 ASCRD=0 10120 BINRD=3 10130 CMDWR=6 10140 PORTV=9 10150 CMD$'= "OR":CALL CMDWR(CMDS,I) 10155 'NPUT "10155";RAS 10160 OPEN "R",1,"\DM100\CALCNST.DAT",10 10170 FOR I = 0 TO 95 10180 GET #1,1+1:INPUT #1,A$ 10190 V$=STR$(I):IF K 1 0 THEN V$ = "0" + V$ 10200 VS = A$ + "V" + V$ 10210 CALL CMDWR(V$,I) 10215 'NPUT "10215";RAS 10220 NEXT 10225 'NPUT "10225",RAS 10230 CLOSE 10240 CLS 10250 GOTO 11

4.3 PROGRAM: \CREEP\SET . BAS

10 GOTO 10000 ' CORTEST * * * * * * * * * i t . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

******** CREEP SETUP **********

******** *.* ******************************************

UPDATE: JUNE 2005

PROGRAM: \CREEP\SET

BY: Rashid Qamar

11 12 14 15 16 17 18 19 GOTO 1200 20 KEY OFF:CLS ' **************** VERSION 1.0 30 SCREEN 0,1:WIDTH 80 70 ADDRESS%=776 80 GOSUB 100 ' Set all program variables, and reset the PC21 90 GOTO 5000 ' The executive program should reside at line 5000 100 ' ************************************************************

110 ' The following list of variables is used to keep track of 120 ' addressing and the Control Byte 130 ' 150 ' 160 CONTROL = 96 'This is the normal state of the Control Byte 170 ' (only Bits 6 and 7 are high) 180 ' 190 STOPPED = 2 'This variable is a mask for testing Status Bit 1 200 ' (is the motor moving?) 210 ' 220 CRASH = 4 'This variable is a mask for handling Control Bit 2 230 ' (to signal the "Board Monitor" to time out or not) 240 ' 250 LOADRDY = 4 'This variable is a mask for testing Status Bit 2 2 60 ' (are Move parameters loaded? (Load and Go mode)) 270 ' 280 INTACK = 8. 'This variable is a mask for handling Control Bit 3 2 90 ' (to signal "Interrupt Acknowledged" or not) 300 '

30

Page 32: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 495 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 700 710 720 730 740 745 750 7 60 980 981 982 983 984 985 989 990 991 1000 1010 1020 1030 1040 1050 1060 1070

MESSAGE = 8

IDBREADY = 1 6

FAULT = 32

'This variable is a mask for testing Status Bit 3 (is a response waiting in the Output Data Buffer?)

'This variable is a mask for handling Control Bit 4 (to signal "Command Byte Ready in the IDB or not) this variable is also a mask for testing Status Bit 4 (is the Input Data Buffer ready for a command byte?)

'This variable is a mask for handling Control Bit 5 (to signal "Restart Board Monitor" or not )...and.. this variable is a mask for testing Status Bit 5 (has the PC21 suffered a processing failure?)

INTERRUPT = 64 'This variable is a mask for handling Control Bit 6 (to signal "Clear Interrupts" or not ) . . . and ... this variable is a mask for testing Status Bit 6 (has the PC21 generated an interrupt?)

RECEIVED = 128 'This variable is a mask for handling Control Bit 7 (to signal "Message Received from the ODB" or not)

PC21WRITE

PC21READ = 64561!

64512! '** This variable is only used if the machine language I/O routines are installed

** This variable is only used if the machine language I/O routines are installed

• • A * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

* *

* COMPUMOTOR PC21 "BASIC" RESET ROUTINE * * +

* December 1, 1984 * * * • a * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

The following subroutine allows the "Board Monitor" to timeout, and Reset the PC21. Then the Board Monitor timer is restarted-A "GOSUB 700" instruction will reset the PC21.

OUT ADDRESS%+1, ( CONTROL OR CRASH ) 'Control Bit 2 high OUT ADDRESS%+1, ( CONTROL AND NOT CRASH ) 'Control Bit 2 low FOR Y=l TO 5000:NEXT 'wait for BMA OUT ADDRESS%+1, ( CONTROL AND NOT FAULT ) 'Control Bit 5 low OUT ADDRESS%+1, ( CONTROL OR FAULT ) 'Control Bit 5 high FOR. 1=1 TO 5000;NEXT RETURN

* + * * * * * * * * + + * * * + * * * + * * * * * * * * * • * + * * + •*•**** + ***• + * * * * * * * * * * * *

COMPUMOTOR PC21 "BASIC" INPUT AND OUTPUT SUBROUTINES WITH MACHINE LANGUAGE

DEVICE DRIVERS

* Dec. 10, 1984 .* * * * * * * * * * * * + * * * * * * * * + * * * * * * * * * + * * * + + + * • * * * * * * * * * * * * * * * * * *

BFLAG%=0 IF INSTR(COMMAND$,"Wl") OR INSTR(COMMAND$,"wl") THEN BFLAG%=1 IF INSTR(COMMAND$,"PB") OR INSTR(COMMANDS,"pb") THEN BFLAG%=1 IF INSTR(COMMAND$,"X1B") OR INSTR(COMMAND$,"xlb") THEN BFLAG%=1 COMMANDS = COMMANDS + CHR$(13) ' Add carriage return to command CALL PC21WRITE(COMMANDS, ADDRESS%)' Execute machine language write RETURN

Page 33: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

1080 1200 1210 1220 1230 1240 1250 1260 1290 1291 1292 1293 1294 1295 2500 3000 3010 3020 3030 3040 3050 3060 3070 3100 •3110 3120 5000 5010 5020 5030 5040 5042 5045 5046 5050 5054 5058 5062 5066 5070 5074 5078 5082 5086 5090 5094 5098 5102 5106 5110 5114 5118 5122 5126 5130 5134 5138 5142 5146 5150 5154 5158 .5162

1 Reserve memory for routine OPEN "\PC21\CODE.DAT" FOR INPUT AS #1 ' Access machine code data file FOR X = 64512! TO 64639! ' NOTE; CLEAR statement clears all!

INPUT #1, J ' Install machine code POKE X,J

NEXT:CLOSE:GOTO 20 , RETURN TO BEGINNING OF PROGRAM i

i ******************** PC21 WRITE ******************************** 'This program is an I/O driver that is called from IBM PC Basic that 'writes a command string to the PC21 on a byte by byte basis. It is 'invoked from Basic as follows: CALL PC21WRITE( COMMANDS, ADDRESS ) 'where A$ is the string to be sent and B is a pointer to the base I/O 'address of the PC21. '****************+** PC21 READ SUBROUTINE ****************************

ANSWER$=" .i + iin , R e s e r v e string space for response CALL PC21READ( ANSWER$, ADDRESS%, BFLAG% ) ' Execute read IF BFLAG%=0 THEN RETURN NUM#=0:FOR X=l TO 4 DIGIT%=ASC(MID$(ANSWER$,X,1)) NUM#=NUM#+DIGIT%*256A(4-X):NEXT ANSWER$=STRS(NUM#) RETURN ' BFLAG% identifies binary report commands

NOTE!...the variable COMMAND$ must NOT contain both types of request; Binary and ASCII CORTEST

**************************************************************

******** S E T PROGRAM FOR CREEP ********

******************************************************+****+**

UPDATE: JUNE 1988, feb 8 9

BY: KEN MACPHERSON

KEY OFF:CLOSE:EXISTS=0 OPEN "\BATCH\CONFIGl.COR' FOR INPUT AS #2 INPUT #2,MXLOAD INPUT #2,LDIV INPUT #2,LODM INPUT #2,ELEC INPUT #2,SELC CLOSE #2 CLOSE #2 COLOR 15,0 ' open parameters file

max load cell lvdt divide load multiply 50 / 60 conversion acquistion for channel 3&4 or not

OPEN "i" INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2 INPUT #2

#2,"\CREEP\CREEP.DAT' C0DE$ ENVIRONMENTS TEMP PRESSURE MATPROS SPLEN SPA DUR EMOD SSR SPD$ LLOAD SLOAD EXRATE EXTR$ EXTR$ EXTR$ EXTR$

open parameters file

32

Page 34: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

5166 INPUT #2, EXTR$ 5170 CLOSE 5500 CLS

PRINT " 1 PRINT " 2

PRINT " 3 . PRINT

5504 5508 5512 5516 5520 5524 5528 5532 5536 5540 5544 5548 5552 5556 5560 5564 5568

SAMPLE CODE uuuuuuu{40 CHARACTERS MAX) ENVIRONMENT uuuuuu (80 CHARACTERS MAX)

MATERIAL ' S SPECIFICATIONS uuuuuuuuiiuu: TEMPERATURE uuuuuiiuuuuuuuuu (FARENHEIT) PRESSURE uuuuuuuuuuuuuuuuuuuuuu(PSI) SPECIMEN GAUGE LENGTH uuuuuuuu(INCHES) SPECIMEN CROSS SECTIONAL AREAu(INCHES) SPECIMEN DESCRIPTION uuu(80 CHARS MAX) APPROXIMATE YOUNG'S MODULUS uuuuu(PSI) TEST DURATION uuuiiuuuuuuuuuu (SECONDS) LOAD LIMIT uuuuuuuuuuuuuu (POUNDS) STARTING LOAD uuuuuuuuuuuuuu (POUNDS) EXTENSION RATE uuuuuuuu(INCHES/SECOND) NUMBER SECONDS PER SAMPLE uuuuuuuuuiiuu MAXIMUM TIME OF TEST (8000*",SSR" SECS)

;CODE$ ;ENVIRONMENT$

'LEFT$(MATPRO$,30) ;TEMP /PRESSURE ;SPLEN ;SPA ;SPDS ;EMOD ;DUR ;LLOAD ;SLOAD ;EXRATE ; SSR ;8000*SSR

TIME TO LOAD LIMIT TIME TO LOAD LIMIT TIME TO LOAD LIMIT

uuuuuu(SECONDS): ";TTLL uuuuuu(MINUTES): ";TTLL/60 uuuuuuuu(HOURS) : ";TTLL/3 6 0 0

PRESS F5 TO ABORT AND RETURN TO CREEP MENU "; ARE THESE VARIABLES CORRECT (Y or N) ? "

4 PRINT " 5 PRINT " 6 PRINT " 7 PRINT " 8 PRINT " 9 PRINT " A PRINT " B PRINT " C PRINT " D PRINT " E PRINT " PRINT " TTLL= ( SPLEN * ( (LLOAD-SLOAD) /SPA ) )/EMOD/EXRATE

5572 PRINT:PRINT 557 6 PRINT ". 5580 PRINT " 5584 PRINT " 5650 LOCATE 24,1:PRINT" 5655 LOCATE 23,1:PRINT" 5665 CH$=INKEY$ 5670 IF CH$="y" OR CH$="Y" OR CH$=CHR$(13) THEN 5700 5675 IF CH$="n" OR CH$="N" OR CH$=CHR$(27) THEN RUN"\CREEP\CP" 5680 GOTO 5665 5700 ' 5710 ' enter name of new data file

5719 ' 5720 ' 5721 COLOR 15,0:WR=0 5725 SHELL "DIR /P \DATA\":PRINT:PRINT:PRINT 5730 INPUT "FILE NAME FOR DATA STORAGE(MAX 8 CHARACTERS) \DATA\ > 5731 WR=WR+1:IF WR>4 THEN PRINT"IS SOMETHING WRONG?":WAST=TIMER:WHILE(TIMER<WAST+1):WEND:GOTO 5500 5735 IF FS="" THEN 5730 5740 IF F$="FIVE.DAT" THEN 5730 5755 IF F$="five.dat" THEN 5730 5760 IF FS="test" THEN 5730 5765 IF FS="TEST" THEN 5730 5770 ' chech to see if file already exists 5775 ON ERROR GOTO 5795 5780 OPEN "\DATA\"+F$ FOR INPUT AS #3 5785 ON ERROR GOTO 0 'turns off error checking 5787 IF EXISTS=0 THEN PRINT" *** THIS FILE ALREADY EXISTS +** " 5788 WAST=TIMER:WHILE(TIMER<WAST+1):WEND 5790 CLOSE #3 57 91 GOTO 5815 ' closes file and skips error routine 5795 ' error sub routine (file exists) 5800 IF ERR = 71 THEN PRINT " DISK NOT READY " 5805 IF ERR = 53 THEN EXISTS = 1 5810 RESUME NEXT ' return to next line of routine 5815 ' print info on scrn 5850 PRINT .-PRINT 5890 PRINT "THE DATA WILL BE SAVED INTO THE FILE ....>";F$ 5892 IF EXISTS=0 THEN PRINT" *** FILE ALREADY EXISTS *** " ELSE PRINT *** FILE DOES NOT EXIST ***"" 5895 ' 6010 PRINT

:FS

Page 35: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

6015 PRINT "FINAL RUN TEST SYSTEM CHECK 6020 PRINT

LVDT displaced by mounting bracket LVDT CABLE TO SC 12.2 STROKE MODULE Load Cell cable to SC 12.1 load module Connect green shield wires to SC 12 chassis DATA CABLE FROM SC 12 OUTPUT CONNECTOR TO DM100-PC Hand tighten load train Motor should not plug into Power Director Connect cable to printer from computer Assure printer is turned on and the cable connected

'PLEASE REFER TO DRAWING IN MANUAL

6025 PRINT 6030 PRINT 6035 PRINT 6040 PRINT 6045 PRINT 6050 PRINT 6055 PRINT 6060 PRINT 60 65 PRINT 607 0 PRINT 6075 PRINT 6080 PRINT 6250 627 0 6275 6280 6290 SECONDS." 6300 PRINT 6310 PRINT 632 0 PRINT "PRESS ANY KEY TO CONTINUE" 6330 ANY$=INKEY$:IF ANY$="" THEN 6330 6335 PRINT:PRINT:PRINT" PROGRAM WILL PRELOAD THE SPECIMEN' 6340 6350 6360

"SET SC12 PARAMETERS' PRINT PRINT PRINT PRINT "LOAD AND STROKE VALUES WILL BE PRINTED EVERY SECOND FOR TEN

"(THIS CAN BE REPEATED AS NECESSARY)

SETTING UP LOAD FRAME FOR CERT TEST

CERT ... zerotrans

6370 COLOR 7,0,1 6380 DT$ = "OR":CALL CMDWR(DT$,I) 6390 DT$="10C010C110C210C3":CALL CMDWR(DT$,I) 6400 ST$=STRING$(9," ") 6410 CLS:LD=.001 6420 ' 6430 ' 6440 PRINT:PRINT 6445 PRINT 644 6 PRINT" CHANGING LOAD DOWNWARD" 6450 ' 6500 DT$="10C0C0":CALL CMDWR(DT$,I) 6510 CALL ASCRD(ST$,I)

6515 COMMAND$="MC A99 V.71 D- G":GOSUB 1000 6520 WHILE(VAL(ST$)*LODM>250) 6530 DT$="C0":CALL CMDWR(DT$,I) 6540 CALL ASCRD(ST$,I) 6550 WEND 6555 COMMAND$="K":GOSUB 1000 6558 'T$="11C016E":CALL CMDWR(DT$,I) 65 60 FOR I = 1 TO 10 6570 COMMAND$="MN A99 V.5 D-2000 G":GOSUB 1000 6572 DT$="C0":CALL CMDWR(DT$,I) 6578 CALL ASCRD(ST$,I):PRINT VAL(ST$)*LODM 6580 NEXT:FOR DELAY = 1 TO 200:NEXT 6585 COMMAND$="MN A99 VI.81 D+1500 G":GOSUB 1000: ' move load up again 6587 WAST=TIMER:WHILE(TIMER<WAST+.5):WEND ' wait while motor moves 6588 PRINT:PRINT" CHANGING LOAD UPWARD AGAIN":PRINT 6589 ' 6590 WHILE (VAL(STS)*LODM<.95*SLOAD) ' start test at sload. 6610 COMMAND$="MN A99 VI.81 D+2500 G":GOSUB 1000: ' move load up again

lowers load to this point can not check load lower because vessel may cause minimum load

move rest known amount

6620 WAST=TIMER:WHILE(TIMER<WAST+.5):WEND 6640 DT$="C0":CALL CMDWR(DT$,I) 6650 CALL ASCRD(ST$,I):PRINT VAL(ST$)*LODM 6690 WEND

wait while motor moves

Page 36: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

6695 ' 6770 COMMAND?="K":GOSUB 1000 ' make sure motor is stoped 6990 ' 7000 PRINT " LOAD (lbs) STROKE (inches)" 7010 PRINT " " 7020 DT$="1R20E":CALL CMDWR(DT?,I) 7030 FOR J=l TO 10 7040 CALL ASCRD(ST?,I) 7050 LD=VAL(ST?) 7060 CALL ASCRD(ST$,I) 7070 STROKE=VAL(ST?)/LDIV:V2=VAL(ST$) 7080 PRINT TAB(15);LD*LODM;TAB(45);STROKE ; 7090 IF VAL(ST$)<0 THEN PRINT"neg val not good, reposition lvdt" ELSE PRINT 7100 CALL ASCRD(ST?,I):CALL ASCRD(ST$,I) 7110 NEXT 7120 PRINT -.PRINT : PRINT : PRINT : 7130 IF V2<0 THEN PRINT"SET TRANSDUCER TO ZERO":PRINT:GOTO 6320 7140 PRINT "CONTINUE (Y) " 7145 PRINT "REPEAT RAMP UP ... (R)" 7146 PRINT "RETURN TO MENU ... (N)" 7148 ANS$=INKEY$ 7150 CCP=CCP+1:IF CCP>3000 THEN CCP=0:GOTO 7000 7160 IF ANS$="" THEN 7148 7165 IF ANS$=CHR$(27) OR ANS$="n" OR ANS$="N" THEN RUN"\creep\cp" 7175 IF ANS?=CHR$(13) OR ANS?="Y" OR ANS?="y" THEN 8000 7176 IF ANS$="r" OR ANS$="R" THEN 5850 7180 IF ANS$="" THEN 7148 7190 GOTO 7148 8000 ' 8010 '

8012 '***********+***

8016 UL=10:UC=30:LD=4:LC=20 8020 ' ul is upper line uc is upper accross 8024 ' Id is number lines down 8028 ' lc is number lines accross 8032 COLOR 15,1,1:COLOR 15,0 8036 LOCATE UL,UC:PRINT CHR$(201);STRING$(LC, 205); CHRS(187) 8040 LOCATE (UL+LD),UC: PRINT CHR$(200); STRINGS(LC, 205); CHR?(188) 8044 SCREN?=CHR$(186)+STRING?(LC," ")+CHR$(186) 8048 FOR T= 1 TO ((LD/2)+l) ' (UL+1) TO (UL+LD-1) 8052 LOCATE UL+T,UC:PRINT SCREN$ 8056 LOCATE UL+LD-T,UC:PRINT SCREN$:NEXT 8060 COLOR 15,1:LOCATE 12,35:PRINT"PLEASE WAIT":COLOR 15,0 8120 CHAIN MERGE"\creep\creep",5000,ALL,DELETE 5000-10000 8190 ' THIS IS THE END OF THE PROGRAM WHERE IT PASSES CONTROL TO THE MODULE 8200 END 10000 ' 10004 '+*•* + ********* ** 10008 '************ DM100 control 10012 '*************** 10016 UL=10:UC=30:LD=4:LC=20 10020 ' ul is upper line uc is upper accross 10024 ' Id is number lines down 10028 ' lc is number lines accross 10032 ' COLOR 15,1,1:COLOR 15,0 10036 'LOCATE UL,UC:PRINT CHR?(201);STRING?(LC, 205); CHR$(187) 10040 'LOCATE (UL+LD),UC: PRINT CHR$(200); STRING?(LC, 205); CHR?(188) 10044 'SCREN? = CHR?(186)+STRING?(LC," ")+CHR?(186) .10048 'FOR T= 1 TO ((LD/2)+1) ' (UL+1) TO (UL+LD-1) 10052 'LOCATE UL+T,UC:PRINT SCREN? 10056 'LOCATE UL+LD-T,UC:PRINT SCREN?:NEXT 10060 'COLOR 15,1:LOCATE 12,35:PRINT"PLEASE WAIT":COLOR 15,0 10064 BSEG% = VARPTR(A%(0))

35

Page 37: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

10068 A%(0) = &HE8 10072 A%(1) = &H5B00 10076 A%(2) = &H5F8C 10080 A%(3) = &HCB05 10084 DEF SEG 10088 CALL BSEG% 100 92 BSEG%=A%(4) 10096 DSEG%=BSEG%+&H1001 10100 DEF SEG=DSEG% 10104 BLOAD "\DM100\DATAQ.BLO",0 10108 ASCRD=0 10112 BINRD=3 10116 CMDWR=6 10120 PORTV=9 10124 CMD$ = "OR":CALL CMDWR(CMD$,I) 10128 OPEN "R",1,"\DM100\CALCNST.DAT",10 10132 FOR I = 0 TO 95 10136 GET #1,1+1:INPUT #1,A$ 10140 V$=STR$(I) :IF K 1 0 THEN V$ = "0" + V$ 10144 V$ = A$ + "V" + V$ 10148 CALL CMDWR(V$,I) 10152 NEXT 10156 CLOSE 10160 GOTO 11

4 . 4 PROGRAM: \CERT\CT\SETUP.BAS

10 GOTO 1 0 0 0 0 1 1 '12 14 15 20 30 40 50 ' 70 ADDRESS%=776 80 GOSUB 100 ' 90 GOTO 5 0 0 0

GOTO 1200 KEY OFF:WIDTH 80 SCREEN 0 , 1 : C L S COLOR 15

CORTEST updated by Rashid Qamar June 2005 CONSTANT EXTENSION RATE TEST PROGRAM: \CERT\CT\SETUP.BAS

VERSION 2.0

Set all program variables, and reset the PC21 The executive program should reside at line 5000

100 110 120 130 150 160 170 180 190 200 210 220 230 240 250 2 60 270 280 290 300 310 320 330 340

*,** + * * * * * * * + + * * * * * * * * * * * + + * * * * * * * * * * * * * * * * * * * * * * * * + * * * * * * • * • * *

The following list of variables is used to keep track of

addressing and the Control Byte

CONTROL = 96 'This is the normal state of the Control Byte ' (only Bits 6 and 7 are high)

STOPPED = 2

CRASH

LOADRDY

INTACK = 8

MESSAGE = 8

'This variable is a mask for (is the motor moving?)

testing Status Bit 1

'This variable is a mask for handling Control Bit 2 (to signal the "Board Monitor" to time out or not)

'This variable is a mask for testing Status Bit 2 (are Move parameters loaded? (Load and Go mode))

'This variable is a mask for handling Control Bit 3 (to signal "Interrupt Acknowledged" or not)

'This variable is a mask for testing Status Bit 3 (is a response waiting in the Output Data Buffer?)

IDBREADY = 1 6 'This variable is a mask for handling Control Bit 4

36

Page 38: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

350 ' 360 ' 370 ' 380 ' 390 FAULT = 32 400 ' 410 ' 420 ' 430 ' 440 INTERRUPT = 450 ' 460 ' 470 ' 480 ' 4 90 RECEIVED = 495 ' 500 ' 510 PC21WRITE 520 ' 530 PC21READ = 540 ' 550 ' 560 ' 570 ' 580 ' •590 ' 600 ' 610 ' 620 ' 630 ' 640 650 660 670 700 710 720 730 740 745 750 760 980 981 982 983 984 985 989 990 991 1000 1010 1020 1030 1040 1050 1060 1070 1080 1200 1210 1220

(to signal "Command Byte Ready in the IDB or not) this variable is also a mask foir testing Status Bit 4 (is the Input Data Buffer ready for a command byte?)

'This variable is a mask for handling Control Bit 5 (to signal "Restart Board Monitor" or not )...and.. this variable is a mask for testing Status Bit 5 (has the PC21 suffered a processing failure?)

= 64 'This variable is a mask for handling Control Bit 6 (to signal "Clear Interrupts" or not ) , . . and ..-this variable is a mask for testing Status Bit 6 (has the PC21 generated an interrupt?)

128 'This variable is a mask for handling Control Bit 7 (to signal "Message Received from the ODB" or not)

= 64,512! '*+ This variable is only used if the machine language I/O routines are installed

64561! '** This variable is only used if the machine language I/O routines are installed

* * * * * * * * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * * * • * * * * * * * * * * * + *

* *

* COMPUMOTOR PC21 "BASIC" RESET ROUTINE * * • *

* December 1, 1984 * * * • a * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

'The following subroutine allows the "Board Monitor" to timeout, 'and Reset the PC21. Then the Board Monitor timer is restarted. 'A "GOSUB 700" instruction will reset the PC21. 1

OUT ADDRESS%+1, ( CONTROL OR CRASH ) 'Control Bit 2 high OUT ADDKESS%+1, ( CONTROL AND NOT CRASH ) 'Control Bit 2 low FOR Y=l TO 5000:NEXT 'wait for BMA OUT ADDRESS%+1, ( CONTROL AND NOT FAULT ) 'Control Bit 5 low OUT ADDRESS%+1, ( CONTROL OR FAULT ) 'Control Bit 5 high FOR 1=1 TO 5000:NEXT RETURN

•*++**+****+*****+*******+***+***+*********************•*

+ *

* COMPUMOTOR PC21 "BASIC" INPUT AND OUTPUT * * SUBROUTINES WITH MACHINE LANGUAGE * * DEVICE DRIVERS * * +

* Dec. 10, 1984 * ******+*++**+***+*******+************+**•*+****+*******+

BFLAG%=0 IF INSTR(COMMAND$,"Wl") OR INSTR(COMMAND?,"wl") THEN BFLAG%=1 IF INSTR(COMMAND$,"PB") OR INSTR(COMMAND?,"pb") THEN BFLAG%=1 IF INSTR(COMMAND?,"X1B") OR INSTR(COMMAND?,"xlb") THENBFLAG%=1 COMMAND? = COMMAND? + CHR?(13) ' Add carriage return to command CALL PC21WRITE(COMMAND?, ADDRESS%) •' Execute machine language write RETURN

' Reserve memory for routine OPEN "\PC21\CODE.DAT" FOR INPUT AS #1 ' Access machine code data fi FOR X = 64512' TO 64639' ' NOTE; CLEAR statement clears all'

Page 39: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

1230 1240 1250 ,1260 1290 1291 1292 1293 1294 1295 2500 3000 3010 3020 3030 3040 3050 3060 3070 3100 3110 3120 .5000 5010

INPUT #1, J POKE X,J

NEXT:CLOSE:GOTO 2 0

' Insta.ll machine code

, RETURN TO BEGINNING OF PROGRAM

'******************** PC21 WRITE ******************************** 'This program is an I/O driver that is called from IBM PC Basic that 'writes a command string to the PC21 on a byte by byte basis. It is 'invoked from Basic as follows: CALL PC21WRITE( COMMAND$, ADDRESS ) 'where A$ is- the strxng to be sent and B is a pointer to the base I/O 'address of the PC21. i******************* PC21 READ SUBROUTINE ****************************

ANSWER$=" ' Reserve string space for response BFLAG% ) ' Execute read CALL PC21READ( ANSWER$, ADDRESS%

IF BFLAG%=0 THEN RETURN NUM#=0:FOR X=l TO 4 DIGIT%=ASC(MID$(ANSWER$,X,1) ) NUM#=NUM#+DIGIT%*256~(4-X):NEXT ANSWER$=STR$ (NUM#) RETURN ' BFLAG% identifies binary report commands

NOTE!...the variable COMMANDS must NOT contain both types of request, Binary and ASCII

CORTEST

5020 5030 5040 5050 5060 5070 5100 5110 5120 5130 5200 5210 5220 5230 5240 5250 5260 5270 5280 5290 5300 5310 5320 5330 5340 5345 5350 5360 5400 5401 5410 5415 5420 5425 5440 '5500 5510

************************************************************** ****** SETUP AND PARAMETERS ****** **************************************************************

UPDATE: JUNE 1988 PROGRAM: \CERT\CT\SETUP.BAS BY: KEN MACPHERSON

CONSTANT EXTENSION RATE TEST ****************************************************************

COLOR 7,0,0:CLS KEY OFF CLS:COLOR 15,1,1:WIDTH 80 LOCATE 3,27:PRINT"FEEDBACK CONTROLED TESTING" LOCATE 5,25:PRINT"CONSTANT EXTENSION RATE TEST " LOCATE 7,34:PRINT"C. E. R. T." LOCATE 23,35:PRINT"VERSION 3.0" T0=TIMER WHILE (TIMER-T0<1.25):WEND

' *********************

*** SET F5 FOR CANCEL KEY 1 *********************

ON KEY(5) GOSUB 5350 KEY(5) ON GOTO 5400 RETURN 5360 RUN "\CERT\CT\CT" 1

' CHECK CONFIG1.COR FILE FOR LVDT SPEC AND LOAD CELL TYPE OPEN "\BATCH\CONFIGl.COR" FOR INPUT AS #3 INPUT #3,MXLOAD 'MAX LOAD CELL INPUT #3,LDIV 'LVDT DIVIDE NUMBER INPUT #3,LODM 'load cell multipler

CLOSE #3 1 ************************

' *** DATA INPUT

Page 40: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

5520 5530 5540 5550 5560 5570 5580 5590 5600 5610 5620 5630 5640 5650 5660 5670 5680 5690 5700 5710 5720 •5730 5740 5750 5755 5760 5770 5900 5910 5920 5930 5940 5950 5960 5970 5980 5990 6000 6010 6020 • 6030 6040 6050 6060 6070 6080 6090 6300 6310 6320 6330 6340 6350 6360 6370 6380 6390 6400 6410 .6420 6430 6440 6450

",CODE$:PRINT " , ENVIRONMENT $ : PRINT ";:INPUT LDM:PRINT

,TEMP;PRINT

.PRESSURE:PRINT

,SPLEN:PRINT

,CSECT:PRINT

,EMODUL:PRINT

,SAVRAT

• ************************

CLS:LOCATE 1,26 PRINT "CONSTANT EXTENSION RATE TEST":PRINT-LINE INPUT "SAMPLE CODE (40 CHARACTERS MAX) LINE INPUT "ENVIRONMENT (18 CHARACTERS MAX) PRINT "MAXIMUM LOAD (CR=" ;MXLOAD; " LBS) . IF LDM=0 THEN LDM=MXLOAD INPUT "TEMPERATURE (FARENHEIT) IF TEMP =0 THEN TEMP = 7 5 INPUT "PRESSURE (PSI) IF PRESSURE =0 THEN PRESSURE =14.7 INPUT "GAUGE LENGTH (CR = 1 INCH) IF SPLEN =0 THEN SPLEN =1 INPUT "SPECIMEN CROSS SECTION(SQUARE INCHES) IF CSECT=0 THEN CSECT =.1963495 INPUT "YOUNG'S MODULUS (CR = 3E7 PSI) IF EMODUL =0 THEN EMODUL = 3E+07 INPUT "DATA SAVE RATE ...(CR=60 SECS/SAMPLE) IF SAVRAT=0 THEN SAVRAT=60 HRS=SAVRAT*10000/3600 PRINT USING " MAX TEST TIME (HOURS):######.##";HRS DYS=SAVRAT*10000/86400! PRINT USING " MAX TEST TIME (DAYS) : ###.##" ;DYS PRINT INPUT "STARTING TEST LOAD (CR=200LBS) :",STLD :PRINT IF STLD<100 THEN STLD=200 PRINT INPUT "CONSTANT EXTENSION RATE (1E-3 INCHES/SECOND MAX):",EXRATE IF EXRATE>.001 OR EXRATE<lE-08 THEN 5930 ELSE 5950

BEEP GOTO 5910 1

PRINT "********ACTUAL EXTENSION RATE:";EXRATE;"INCHES/SEC********":PRINT PRINT:PRINT

COLOR 15 PRINT :PRINT STRINGS(27,45);" EXISTING DATA FILES ";STRINGS(27,45) SHELL "DIR /P \DATA\" LOCATE 1:PRINT STRINGS(27,45);" EXISTING DATA FILES ";STRINGS(27,45) LOCATE 25 INPUT "FILE NAME FOR DATA STORAGE(MAX 8 CHARACTERS) \DATA\ > ";F$ IF F$="" THEN 6040 PRINT:PRINT:PRINT PRINT "TEST DATA WILL BE STORED ON FILE \DATA\"";F$;"• AFTER TEST." LOCATE 25:PRINT STRINGS(78," ") 1 *********************

*** CHECK IF FILE EXISTS ' *********************

ON ERROR GOTO 63 90 OPEN "\DATA\"+F$ FOR INPUT AS #3 CLOSE #3 EXISTS=1 ON ERROR GOTO 0 GOTO 6420 EXISTS=0 RESUME 6410 ON ERROR GOTO 0

IF EXISTS=1 THEN GOTO 6470 PRINT "The file does not exist on the disk" PRINT

Page 41: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

6460 6470 6480 6490 6500 6510 6520 6530 6540 6550 6560 6570 6580 6590 6600 6610 6620 6630 6640 6650 6660 6661 6662 667 0 6680 6690 6700 6710 6720 6730 6740 7000 7010 7020 7030 7040 7050 7060 7070 7080 7090 7100 7110 7120 7130 7140 7150 7160 7170 7180 7190 7200 7210 7220 7230 7240 7250 7260 7270 7280 7290 7300 7310

GOTO 6500 PRINT " !M WARNING !!! " PRINT "The file already exists on the disk" PRINT > ************************

*** PRINT PARAMETERS ON SCREEN • ************************ PRINT "SAMPLE CODE:";CODE$ PRINT "ENVIRONMENT:";ENVIRONMENT$ PRINT "TEMPERATURE : " /TEMP; "DEG F" PRINT "PRESSURE :"; PRESSURE ; "PSI' PRINT

SPLEN;"INCHES" CSECT;"SQUARE INCHES" EXRATE ; "INCHES/.SEC" EMQDUL;"PSI"

PRINT "GAUGE LENGTH PRINT "CROSS SECTION PRINT "EXTENSION RATE PRINT "YOUNG'S MODULUS PRINT PRINT "DATA SAVING RATE :";SAVRAT;"SECONDS/SAMPLE" PRINT USING " MAX TEST TIME ....(HOURS):######.##";HRS PRINT USING " MAX TEST TIME (DAYS) : ###.##" ;DYS PRINT PRINT USING " STARTING TEST LOAD' . (LBS) : ####",: STLD PRINT PRINT "TEST DATA ARE BEING STORED ON FILE '\data\";FS;"'"

IF EXISTS=1 THEN PRINT"DATA FILE ALREADY EXISTS ON DISK" BEEP:PRINT:PRINT"ARE THE PARAMETERS CORRECT (CR=Y, N=NO)"

PRINT I$=INKEY$ IF I$=CHR$(13) OR I$="y" OR I$="Y" THEN GOTO 7000 IF I$="N" OR I$="n" THEN SOUND 400,10:GOTO 5530 GOTO 6710

1

INPUT "DO YOU WANT A PRINTOUT OF INPUT (Y/N)";PRNTS IF, PRNTS="N" OR PRNT$="n" THEN 7500 IF PRNT$="Y" OR PRNT$="y" THEN 7040 ELSE 7360 LPRINT CHR$(27);CHR$(69),CHR$(27);CHR$(71)

' TITLE$ CAN BE ANYTHING USER DESIRES

TITLE$ = "CORTEST" ' < CHANGE THIS TO YOUR COMPANY NAME TL=LEN(TITLE$) LPRINT CHR$(27);CHR$(14)/TAB(20-(TL/2));TITLE$ LPRINT TAB(26);"CONSTANT EXTENSION RATE TEST LPRINT:LPRINT LPRINT "SAMPLE CODE:";CODE$ LPRINT LPRINT "ENVIRONMENT:"/ENVIRONMENTS LPRINT LPRINT "TEMPERATURE : " /TEMP; "DEG F" LPRINT LPRINT "PRESSURE :"; PRESSURE / "PSI" LPRINT LPRINT "GAUGE LENGTH :"/SPLEN;"INCHES" LPRINT LPRINT "CROSS SECTION : "/CSECT / "SQUARE INCHES" LPRINT LPRINT "EXTENSION RATE : " /EXRATE / "INCHES/SEC" LPRINT LPRINT "YOUNG'S MODULUS :"/EMODUL;"PSI" LPRINT LPRINT "DATA SAVING RATE : ";SAVRAT;"SECONDS/SAMPLE ' LPRINT USING " MAX TEST TIME ....(HOURS):######.##"/HRS LPRINT USING " MAX TEST TIME (DAYS): ###.##"/DYS

40 .

Page 42: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

7320 7321 7322 • 7330 7340 7350

STARTING TEST LOAD..(LBS): ####";STLD LPRINT LPRINT USING LPRINT LPRINT "TEST DATA ARE BEING STORED ON FILE '\data\";F$;"'"

IF EXISTS=1 THEN LPRINT " THIS TEST DATA FILE ALREADY EXISTS ON DISK" GOTO 7500

7360 BEEP 7370 GOTO 7010 7500 CLS:

7505 PRINT 7506 PRINT "FINAL RUN TEST SYSTEM CHECK 7507 PRINT 7508 PRINT 7509 PRINT 7510 PRINT 7511 PRINT 7512 PRINT 7513 PRINT 7514 PRINT 7515 PRINT 7516 PRINT 7517 PRINT .7518 PRINT 7519 PRINT

PRINT PRINT PRINT PRINT

SECONDS." 7540 PRINT

PRINT PRINT

LVDT displaced by mounting bracket LVDT CABLE TO SC 12.2 STROKE MODULE Load Cell cable to SC 12.1 load module Connect green shield wires to SC 12 chassis DATA CABLE FROM SC 12 OUTPUT CONNECTOR TO DM100-Hand tighten load train Motor should not plug into Power Director Connect cable to printer from computer Assure printer is turned on and the cable connected

-PC

7524 7525 7529 7530

'PLEASE REFER TO DRAWING IN MANUAL

'PLEASE ZERO ALL TRANSDUCERS NOW"

"LOAD AND STROKE VALUES WILL BE PRINTED EVERY SECOND FOR TEN

"(THIS CAN BE REPEATED AS NECESSARY)" 7550 7560 PRINT "PRESS ANY KEY TO CONTINUE" 7570 ANY$=INKEY$:IF ANY$="" THEN 7570 7580 ' 7590 ' CERT ... •7600 'zerotrans 7610 COLOR 7,0,1 7 620 DT$ = "OR":CALL CMDWR(DT$,I) 7630 DT$="10C010C110C210C3":CALL CMDWR(DT$,I) 7 640 ST$=STRING$(9," ") 7 650 CLS:LD=.001 7660 ' 7670 ' 7680 PRINT:PRINT " SETTING UP LOAD FRAME FOR CERT TEST " 7690 ' 7700 DTS="0R10C0C0":CALL CMDWR(DT$,I) 7710 CALL ASCRD(ST$,I) 7720 WHILE(VAL(ST$)*LODM>500) ' lowers load to this point 7730 COMMAND$="MN A99 V2.4 D-2500 G":GOSUB 1000:FOR DELAY=1 TO 500:NEXT

can not check load lower because vessel may cause minimum load

move motor down

7740 DT$="C0":CALL CMDWR(DT$,I) 7750 CALL ASCRD(ST$,I) 7760 WEND 7770 COMMAND$="K":GOSUB 1000 7780 DT$="0R12C0":CALL CMDWR(DT$,I) 77 90 FOR LOOPI=l TO 15 7800 COMMAND$="MN A99 VI.5 D-2000 G":GOSUB 1000 7810 DT$="C0":CALL CMDWR(DT$,I) 7820 CALL ASCRD(ST$,I):PRINT VAL(ST$)*LODM 7830 NEXT 7840 FOR DELAY=1 TO 500:NEXT 7850 COMMAND$="MN A99 V2 D+3000 G":GOSUB 1000: ' move load up again '7860 FOR DELAY = 1 TO 1000:NEXT ' wait while motor moves 7870 '

41

Page 43: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

7875 COMMAND$="MN A99 V2 D+1000 G" 7880 ' STARTS TEST AT THE STARTING LOAD (STLD) OR 200 LBS. 78 90 WHILE (VAL(ST$)< (STLD/LODM) ) 7900 IF VAL{ST$)=<.95*(STLD/LODM) THEN COMMAND$="MN A99 V2 D+1000 G" 7905 IF VAL(ST$)=>.95*(STLD/LODM) THEN COMMAND$="MN A99 V2 D+250 G" 7909 GOSUB 1000: 7910 DELAY=TIMER:WHILE(TIMER< (DELAY+.25) ):WEND 7 920 DT$="C0":CALL CMDWR(DT$,I) 7930 CALL ASCRD(ST$,I) -.PRINT VAL (ST$) *LODM 7940 WEND 7950 ' 7960 COMMAND$="K":GOSUB 1000 ' make sure motor is stoped 8000 ' ********************* 8010 ' *** print out inputs 8020 ' ********************* 8030 PRINT " LOAD (lbs) STROKE (inches)" 8040 PRINT " " 8050 DT$="0R12C010C199E":CALL CMDWR(DT$,I) .80 60 FOR J=l TO 10 8070 CALL ASCRD(ST$,I) 8080 LD=VAL(ST$) 8090 CALL ASCRD(ST$,I) 8100 STROKE=VAL(ST$)/LDIV:V2=VAL(ST$) 8110 PRINT TAB(15);LD*LODM;TAB(45)/STROKE ; 8120 IF VAL(ST$)<0 THEN PRINT"neg val not good, reposition lvdt" ELSE PRINT 8130 CALL ASCRD(ST$,I):CALL ASCRD(ST$,I) 8140 NEXT 8150 PRINT :PRINT :PRINT :PRINT : 8160 IF V2<0 THEN PRINT"SET TRANSDUCER TO ZERO";PRINT:GOTO 7560 8500 ' ****************** 8510 ' *** option to continue to run test 8520 ' ****************** 8530 ' 8540 PRINT "CONTINUE (Y) " 8550 PRINT "REPEAT RAMP UP ... (N)" 8560 ANS$=INKEY$ 8570 IF ANS$="Y" OR ANS$="y" THEN 8620 ' merge load ct.bas .8580 IF ANS$="n" OR ANS$="N" THEN 7700 ' go back and reramp 8590 IF ANS$="" THEN 8560 ELSE GOTO 8600 8600 BEEP:PRINT:PRINT" PLEASE ANSWER ":PRINT 8610 GOTO 8540 8620 COLOR 7,0:FOR T = 10 TO 14:LOCATE T,20:PRINT STRING$(40,178):NEXT 8630 COLOR 15,1:LOCATE 12,30:PRINT" PLEASE WAIT ":COLOR 7,0 8640 CHAIN MERGE "\cert\ct\CR",5100,ALL,DELETE 5100-8670 8650 ' 8660 ' 8 67 0 END 10000 BSEG% = VARPTR(A%(0)) 10010 A%(0) = &HE8 10020 A%(1) = &H5B00 10030 A%(2) = &H5F8C 10040 A%(3) = &HCB05 10050 DEF SEG 10060 CALL BSEG% 1007 0 BSEG%=A%(4) 10080 DSEG%=BSEG%+&H1001 1 0 0 9 0 DEF SEG=DSEG% 10100 BLOAD "\DM100\DATAQ.BLO",0 10110 ASCRD=0 10120 BINRD=3 10130 CMDWR=6 10140 PORTV=9 10150 CMD$ = "OR":CALL CMDWR(CMD$,I)

42

Page 44: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

10160 OPEN "R",l,"\DM100\CALCNST.DAT",10 10170 FOR I = 0 TO 95 10180 GET #1,1+1:INPUT #1,A$ 10190 V$=STR$(I):IF I<10 THEN V$ = "0" + V$ 10200 V$ = A$ + "V" + V$ 10210 CALL CMDWR(V$,I) 10220 NEXT 10230 CLOSE 10240 CLS 10250 GOTO 11

Page 45: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

5.0 RESULTS

Testing of Machine Performance

After the up gradations of system it was necessary to check either machine is working properly or not. Therefore, user tested an alloy HLES-80 for its tensile properties making a graph between Load vs Extension as shown in Fig. 5.1. The machine recorded the test generated data and smoothly drew the graph. Therefore, the working of machine appeared to be satisfactory.

The machine output was again checked by comparing its new results given in Fig. 5.1 with a similar type of testing already performed by the same machine when it was working on 286 systems. In this regard an old graph of Load vs Extension made during the testing of an alloy A-516 by the same machine was scanned and presented in Fig. 5.2. Comparing both the figures; Fig. 5.1 and Fig. 5.2 it is quite clear that results of tensile tenting produced by the CorTest machine before and after modification are similar. The only difference in data points is due to the difference in materials. This is also a confirmation of the proper functioning of the machine that it is sensing the true changes occurring in tensile specimen during the test. The comparison of results with literature values also satisfied the user. This way the smooth working of machine has been confirmed and now the machine is being used regularly.

6000!

Extension (Inch)

Fig. 5.1: Tensile Testing HLES steel in Sea water after up gradation of system

44

Page 46: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

AF300C-3

3000

LOAD

j , - * " * 1

1500

MAX LOAD MAX EXTN MAX TIME EXTN RT. TOTAL PTS.

2800.6 0.07601 76860 0.0000009889 428

0.04000

EXTENSION

TEST NAME MODULUS PRESSURE TEMP LENGTH X-SECT

AF300C3 3E+07 1305 ^7?

1 0.049

0.08000

Fig. 5.2: Tensile testing of alloy A516, before up gradation system of same

machine.

6.0 CONCLUSION

Since the Cortest Electro Mechanical testing machine installed at NMD is a computer controlled machine. The machine was out of order because of controller card and hard disk failure of old system 286 attached with it. The data was retrieved and system was upgraded successfully with Pentium-I computer. Software package was also modified according to new hardware. The online testing has been done by running the actual tests. The system is now working properly. The end user is fully satisfied with present working of machine w.r.t. originaf'(old) ones and comparing the results with literature values of known materials.

ACKNOWLEDGEMENTS

The authors would like to express sincere thanks to Mr. Zaheer Ahmad and Dr. Ammad H. Qureshi for there valuable suggestions and kind help.

45

Page 47: MODIFICATION & UPGRADATION OF CORROSION FATIGUE TESTING …

REFFERENCES

[1 ] Cortest Software Operating Manual.

|2] Turbo Basic Instant Reference by Douglas Hergert.

[3] M. BARTERI, N. DE CRISTOFARO, L. SCOPPIO, G. CUMINO and G. DELLA

PINA, in Proceedings of CORROSION/95, NACE, Houston, TX, 1995, Paper No.

76.

[4] J. CONGLETON, T. SHOJI and R. N. PARKINS, Corrosion Science, 25 (1985)

633.

[5] J. CONGLETON AND R. N. PARKINS, Corrosion, 44 (1988) 290.

[6] A. ABE et al, in Proceedings of International Conference on Water Chemistry,

JAIF, Japan, Oct 1998, P. 587.

46