/* Pseudo-Code Agilent/Keysight 5270B IV */ /* Bill Tompkins 11/2015 */ /* Use code at your own risk */ /* Initial Set Up of the Agilent/Keysight 5270BC */ for(;;){ TimeDelay(1); //Delay in mS if (SerialPoll() And SRQ_BIT4) //Polling Service Request Bit 4, Self-Test and/or Calibration is complete exitfor; } Write(AddLineFeed("AB")); //Abort Commands Write(AddLineFeed("*RST")); //Reset E5270B Write(AddLineFeed("CL")); //Open All Channels Write(AddLineFeed("TSC 0")); //Disable Time Stamped Output Write(AddLineFeed("FL 0")); //Set Filter OFF Write(AddLineFeed("FMT 2, 1")); //Set Output Data Format without header Write(AddLineFeed("DFM 0")); //Set 'Display' format ot engineering Write(AddLineFeed("SSR 1, 0")); //Series 1M Resistance Disconnected Write(AddLineFeed("AZ 0")); //Sets ADC zero function Write(AddLineFeed("AAD 1, 1")); //Integration Time Set to High-Resolutation Write(AddLineFeed("AIT 1, 1, 1")); Write(AddLineFeed("AV 1, 1")); //Averaging /* Set Up of the Agilent/Keysight 5270BC IV Measurment */ Write(AddLineFeed("WT 0.001, 0.001, 0.001, 0.001, 0.001")); //Set Sweep Source Timing (hold, delay, step_delay, trigger_delay, measurement_delay) Write(AddLineFeed("WM 2, 1")); //Set Auto Abort Function. Aborts on compliance, overflow, & oscillation. Second parameter specifies the state of the SMU after abort. Write(AddLineFeed("ERR?")); Write(AddLineFeed("WV 2, 1, 400, 0, 1, 100, 0.05")); //Set chnum, mode, range, start, stop, steps, comp Note: 400 is 40V range Write(AddLineFeed("RI 2, 0")); //Sets Channel Current Range Write(AddLineFeed("MM 2, 1")); //Set Measurement Mode Write(AddLineFeed("CMM 1, 1")); //Sets SMU Operation Mode Write(AddLineFeed("TM 2")); //Trigger Mode Write(AddLineFeed("ERR?")); /* Actual Measurement Part of Routine */ Write(AddLineFeed("CN 1, 2")); //Close output switches Write(AddLineFeed("DV 1, 0, 0, 0.1")); //Set Channel to 0 Volts, relative Ground Write(AddLineFeed("RI 1, 0")); //Sets Channel Current Range Write(AddLineFeed("BC")); //Buffer Clear Write(AddLineFeed("XE")); //Execute for(;;){ TimeDelay(0.1); //Delay in Sec if(SerialPoll() And SRQ_BIT4) //Polling Service Request Bit 4, Command Ready - Sweep Complete exitfor; } Write(AddLineFeed("DZ")); //Zero all outputs Write(AddLineFeed("CL 2, 1")); //Opens output switches