【Generic Function】程控电源的Remote Control功能


前言

测试过程中,需要涉及到电压的变化,此时我们就需要程控电源的自动化控制,一般程控电源有两种控制方式:GPIB和RS232,本次文章主要是讨论如何使用RS232进行电源远程控制和输出。


一、准备条件

  • 程控电源
  • RS232的线束
  • 程控电源说明书

二、RS232系列函数

dword RS232Close( dword port )
此函数用于关闭串口

RS232Configure( 串口号、波特率、数据位、停止位、奇偶校验性)
此函数用于对运行的串口进行配置

RS232OnError( dword port, dword errorFlags)
此函数用于返回错误码

RS232OnSend(dword port ,byte buffer[], dword number )
此函数用于在串行端口接收数据的回调处理程序

RS232Open(dword port)
此函数用于打开串口

RS232Receive( dword port, byte buffer[], dword size)
此函数用于接收字节块

RS232Send(dword port ,byte buffer[], dword number )
此函数用于在串行发送字节块,回调处理程序RS232OnSend将通知节点完成

RS232SetHandshake
此函数用于配置通信握手的参数

三、具体函数

1. 参数声明

variables
{
   
  //Used by RS232
  byte g_Receive_Buffer[1000];
  int g_Flag_PS_Get_Current_Voltage = -1;
  float g_Actual_PS_Current_Value = -1;
}

2.RS232 Precondition

dword PS_RS232_Precondition()
{
   
  int RS232Res;
  int PS_BaudRate;//波特率
  int PS_NumberOfDataBits;
  int PS_NumberOfStopBits;
  int PS_Parity;
  int PS_HandShake;
  int XonLimit;
  int XoffLimit;
  int XonChar;
  int XoffChar;
  
  //Keysight E3632A
  PS_BaudRate = 9600;
  PS_NumberOfDataBits = 8;
  PS_NumberOfStopBits = 2;
  PS_Parity = 0;
  PS_HandShake = 10;
  XonLimit = 0;
  XoffLimit = 0;
  XonChar = 0;
  XoffChar = 0;
  
  if (G_PS_RS232_Precondition == 0) //Not Init before
  {
   
    //RS232Open
    RS232Res = RS232Open(@Env_PS_Port);
    testwaitfortimeout(50);
    if (RS232Res != 1) return 0; //Error
    else
    {
   
      //RS232Config
      RS232Res = RS232Configure(@Env_PS_Port,PS_BaudRate,PS_NumberOfDataBits,PS_NumberOfStopBits,PS_Parity);
      testwaitfortimeout(50);
      if (RS232Res != 1) return 0; //Error
      else
      {
           
        //RS232Handshake        
        RS232Res = RS232SetHandshake(@Env_PS_Port,PS_HandShake,XonLimit,XoffLimit,XonChar,XoffChar);
        testwaitfortimeout(50);
        if (RS232Res != 1) return 0; //Error
        else
        {
    
          //RS232Remote  
          RS232Res = PS_RS232_CommandControl("Set_System_Remote",0);//Is not necessary if only set voltage, but need if read voltage or current
          testwaitfortimeout(50);
          if (RS232Res != 1) return 0; //Error
          else
          {
   
            //RS232Receive        
            RS232Res = RS232Receive(@Env_PS_Port,g_Receive_Buffer,elcount(g_Receive_Buffer));
            testwaitfortimeout(</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值