程控电源的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(</