ITECH 艾德克斯 IT6722A 可编程电源

2024-01-07 18:13:33

常用指令

?//STATus:QUEStionable? ?//该命令用来读取查询事件寄存器的值
//STATus:QUEStionable:CONDition? //该命令用来读取查询条件寄存器的值
//STATus:OPERation:CONDition? ?//该命令用来读取操作条件寄存器的值
//STATus:OPERation:ENABle 128 ?//(设置)该命令编辑操作事件使能寄存器的值
//STATus:OPERation:ENABle? ? ? //(查询)操作事件使能寄存器的值
//STATus:PRESet //该命令使 3 个寄存器的所有位被清零
//SYSTem:ERRor? //该命令用来读取电源的错误代码及错误讯息。
//SYSTem:VERSion? //该命令用来查询当前使用的 SCPI 命令的版本号
//SYSTem:REMote //该命令用来切换到远端控制模式(PC 控制)当用户需要发送控制命令时,必须保证执行该命令将仪器切换到远程控制模式,否则命令将发送失败。
//SYSTem:LOCal //该命令用来切换到本机控制模式
//SYSTem:RWLock //该命令同 SYSTem:REMote,但不同的是该命令同时锁定 LOCAL 键
//SYSTem:POSetup <CRD> ?//系统上电参数设置。 参数是必须的 。参数 RST|SAV0
//SYSTem:POSetup? ? //查询系统上电参数设置。 测试失败??
//SYSTem:CLEar //该命令用于清除出错信息。
//SYSTem:BEEPer <bool> ?//该命令用于蜂鸣器的开启或关闭。参数 0|ON|1|OFF ?测试失败??
//SYSTem:BEEPer? //查询蜂鸣器的开闭状态。返回 0 蜂鸣器关闭,1 蜂鸣器开启。测试失败??
//SYSTem:COMMunicate:SELect <CRD> //该命令用来切换通讯接口。 参数 RS232|USB|RS485|LAN
//SYSTem:COMMunicate:SELect? //查询语法 测试失败??
//SYSTem:KEY <NR1> //该命令用来模拟前面板按键按下
//SYSTem:KEY? ? ? ?//查询
//第四章 显示相关命令
//DISPlay[:WINDow][:STATe] <bool> //该命令用来关闭或开启 VFD 显示屏。 参数:0| OFF|1|ON,示例:DISPlay 1
//DISPlay[:WINDow]:TEXT[:DTAT] <NR1>,<引用值> //该命令用于前面板显示屏上显示一条信息。参数 1 是显示位置(0~47),参数 2 是要显示的字符。
//DISPlay[:WINDow]:TEXT:CLEar ?//该命令用来清除前面板显示的信息
//第五章 控制命令 meter 按钮灯亮了后读到的才是实际电流和电压值
//[SOURce:]OUTPut[:STATe] <bool> //这条命令用来控制电源输出的开启或关闭。参数 0|ON|1|OFF, 示例 OUTPut 1
//[SOURce:]OUTPut[:STATe]??
//[SOURce:]CURRent[:LEVel][:IMMediate][:AMPLitude] <NRf> //该命令用来设定电源电流值。参数 Minimum ~ Maximum|MIN|MAX|DEF
//[SOURce:]CURRent[:LEVel][:IMMediate][:AMPLitude]? 查询
//[SOURce:]CURRent:PROTection:STATe 该命令用来打开或者关闭 OCP 功能,即设定过电流保护状态。例 VOLT:PROTection:STATe 1,VOLTage:PROTection:STATe 0
//[SOURce:]CURRent:PROTection:STATe? ?例 VOLT:PROTection:STATe? VOLTage:PROTection:STATe?
//[SOURce:]CURRent:PROTection[:LEVel] 该命令用来设定过电流保护 OCP 的上限电流值。发出报警声 IT6722A 没有这个功能
//[SOURce:]CURRent:PROTection[:LEVel]?
//[SOURce:]CURRent:PROTection:DELay <NRf> 设置 OCP 延时时间。
//[SOURce:]CURRent:PROTection:DELay?
//[SOURce:]VOLTage[:LEVel][:IMMediate][:AMPLitude] <NRf> 该命令用来设定电源电压值。
//[SOURce:]VOLTage[:LEVel][:IMMediate][:AMPLitude]?
//[SOURce:]VOLTage:LIMit[:LEVel] <NRf> 该命令用来设定电压输出范围的窗口下限电压值。例 VOLTage:LIMIT 70,VOLTage:LIMIT MIN,VOLTage:LIMIT MAX
//[SOURce:]VOLTage:LIMit[:LEVel]? ?例 VOLTage:LIMit??
//[SOURce:]VOLTage:RANGe[:LEVel] <NRf> 该命令用来设定电压输出范围的窗口上限电压值。
//[SOURce:]VOLTage:RANGe[:LEVel]?
//[SOURce:]VOLTage:PROTection:STATe <bool> 该命令用来设定电源的软件电压保护开启或关闭。
//[SOURce:]VOLTage:PROTection:STATe?
//[SOURce:]VOLTage:PROTection[:LEVel] <NRf> 该命令用来设定电源的软件电压保护值。
//[SOURce:]VOLTage:PROTection[:LEVel]?
//[SOURce:]VOLTage:PROTection:DELay <NRf> 该命令用来设定电源的软件电压保护延时时间。参数 0~1000ms
//[SOURce:]VOLTage:PROTection:DELay??
//[SOURce:]POWer:RANGe[:LEVel] <NRf> 该命令用来设置最大功率值。参数 Minimum ~Maximum|MIN|MAX|DEF
//[SOURce:]POWer:RANGe[:LEVel]?
//[SOURce:]POWer:PROTection:STATe <bool> 该命令用来设定电源的软件功率保护开启或关闭
//[SOURce:]POWer:PROTection:STATe?
//[SOURce:]POWer:PROTection[:LEVel] <NRf> 该命令用来设定电源的软件功率保护值。
//[SOURce:]POWer:PROTection[:LEVel]?
//[SOURce:]POWer:PROTection:DELay <NRf> 该命令用来设定电源的软件功率保护延时时间。
//[SOURce:]POWer:PROTection:DELay?
//[SOURce:]PROTection:CLEar 该命令用来将保护信号清除。
//APPLy {< 电 压 值 >|MIN|MAX} [,{< 电流值 > |MIN|MAX }]
//[SOURce:]APPLy <NRf>,<NRf> 该命令综合了 VOLTage 和 CURRent 两种命令,同时设置电压电流。
//[SOURce:]APPLy? 返回参数 <NRf>,<NRf>
//[SOURce:]EXTern[:STATe] <bool> 该命令用来设置外部模拟量控制状态。参数 0|ON|1|OFF
//[SOURce:]EXTern[:STATe]??
//[SOURce:]EXTern:PROGram:MODe <VOLT|RES> 该命令用来设置外部模拟量控制模式。
//[SOURce:]EXTern:PROGram:MODe??
//[SOURce:]RISe[:LEVel] <NRf> 这条命令用来控制电源电压上升时间。 ms,参数 5~900000
//[SOURce:]RISe[:LEVel]??
//[SOURce:]FALL[:LEVel] <NRf> 这条命令用来控制电源电压下降时间。 参数 0~900000
//[SOURce:]FALL[:LEVel]?
//第六章 量测命令
//MEASure[:SCALar]:VOLTage[:DC]? 该命令量测电源输出的实际电压值。例子 MEAS:VOLT?
//FETCh:VOLTage? 该命令用来读取采样缓存里的最近的预处理电压读数。
//MEASure[:SCALar]:CURRent[:DC]? 该命令量测电源输出的实际电流值。MEAS:CURR?
//FETCh:CURRent? 该命令用来读取采样缓存里的最近预处理电流读数
//MEASure[:SCALar]:POWer[:DC]? 该命令用来读取电源的输出功率。MEAS:POWer?
//FETCh:POWer? 该命令用来读取采样缓存里的最近的功率读数。FETCh:POWer?
//第七章 标定命令
//CALibrate:SECure {<0|1>,[<password>]} 设定电源标定时保护模式为有效或无效。
//CAL:SEC 0, ‘6015’; CAL:SEC 1
//CALibrate:SECure[:STATe]?
//CALibrate:VOLTage:LEVel <point> 这条命令用来指定整机电压标定点。P1、P2 标定点必须依次顺序标定。参数 P1|P2
//CALibrate:VOLTage [:DATA] <NRf> 返回给电源当前标定点的实际输出电压值。CAL:VOLT 80.0002
//CALibrate:CURRent:LEVel <point> 这条命令用来指定整机电流标定点。P1、P2 标定点必须依次顺序标定。
//CALibrate:CURRent [:DATA] <NRf> 返回给电源当前标定点的实际输出电流值。 CAL:CURR 3.002
//CALibrate:SAVe 该命令用来保存整机标定数据。
//CALibrate:STRing <参数> 设置校准时的校准信息。参数:最大长度为 20 个字母的字符串,也就是用户校准时记录的相关信息。如校准时间等。
//CAL:STR "2016-4-28
//CALibrate:STRing? 查看当时的校准信息。
//CALibrate:INITialize 该命令用来恢复到出厂时的标定系数。
//第八章 IEEE-488 命令参考
//*CLS 该命令清除下面的寄存器:标准事件寄存器, 查询事件寄存, 状态位组寄存器
//*ESE 该命令编辑标准事件使能寄存器的值, 参数 0~255
//*ESE? 该命令用来读取标准事件使能寄存器的值
//*ESR? 该命令用来读取标准事件寄存器的值。
//*IDN? 该命令用来读电源的相关信息
//*OPC 当在这条命令之前的所有命令被执行完成后,标准事件寄存器的 OPC 位被置 1。发送查询命令将会对输出缓存区返回“1”。
//*RST 该命令复位电源到工厂设定状态。
//*SRE <使能值> 参数 0~255
//这条命令编辑了状态位元组使能寄存器的值。编程参数决定了状态位元组寄存器
//中哪些位为 1 时将会引起状态位元组寄存器中 RQS 位置 1。状态位元组使能寄
//存器的位定义与状态位元组寄存器的位定义相同
//*STB 该命令可以用来读取状态位元组寄存器的值。该命令被执行后,状态位寄存器的bit6 的值被清零
//*SAV 这条命令将保存电源的当前设定值到指定的存储区域中, 参数:0~9
//*RCL 这条命令将从指定的储存区域中恢复电源的设定值, 参数:0~9
//*TRG 当电源触发源为命令方式时,这条命令将会产生一个触发信号。功能与TRIG:IMM 命令相同。

界面

通讯方式

? ? ? ? 串口通讯?SerialPort

代码

? ? ? ? 用面像对像编程法,一台机可能用到的电源不是只有一个型号或品牌,所以推荐用基类加子类的方式去封装。基类封装常用的指令和行为。子类只要关注特殊的指令和行为或有新的扩展。

? ? ? ? 1.初始化

????????

SerialPort sp = new SerialPort();
public IT6722A()
{
    //sp.PortName = "COM3";
    //sp.BaudRate = 9600;
    sp.DataBits = 8;
    sp.Parity = Parity.None;
    sp.StopBits = StopBits.One;
    sp.ReadBufferSize = 4096;
    sp.ReadTimeout = 50;
    sp.ReceivedBytesThreshold = 1;
}

2.打开设备

int waitTime = 1000;//500;
/// <summary>
/// 打开设备
/// </summary>
/// <param name="baudrate"></param>
/// <returns></returns>
public bool OpenDevice(int baudrate)
{
    bool ret = false;
    if (sp.IsOpen)
    {
        sp.Close();
    }
    var spNames = SerialPort.GetPortNames().ToList();
    spNames = spNames.OrderBy(t=>t.ToString()).ToList();
    foreach (var v in spNames)
    {
        try
        {
            var spTemp = new SerialPort();
            spTemp.PortName = v;
            spTemp.BaudRate = baudrate;
            spTemp.Open();

            spTemp.WriteLine("*IDN?");
            long tgTime = DateTime.Now.Ticks + 10000 * waitTime;
            //while (sp.BytesToRead < 0 && tgTime < DateTime.Now.Ticks)
            //    Thread.Sleep(1);
            Thread.Sleep(1000);
            //string response = sp.ReadLine();
            if (spTemp.BytesToRead > 0)
            {
                spTemp.DiscardInBuffer();
                ret = true;
                spTemp.WriteLine("SYST:REM");
                sp = spTemp;
                break;
            }
            else
            {
                spTemp.Close();
                //Thread.Sleep(1000);
            }
        }
        catch { }
    }
    return ret;
}

3.设置电压

/// <summary>
/// 设置电压
/// </summary>
/// <param name="voltage"></param>
public void SetVoltage(double voltage)
{
    string str = voltage.ToString("0.0000");
    if (isOpen())
    {
        sp.WriteLine("VOLT " + str);
    }
}

4.读取电压

/// <summary>
/// 读取电压
/// </summary>
/// <returns></returns>
public double ReadOutVoltage()
{
    return SendCmdRerurnDouble("MEAS:VOLT?");
}

文章来源:https://blog.csdn.net/cjh16606260986/article/details/135430364
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。