程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)

程控电源CANoe上位机面板

    • 编写此面板的目的
    • 编写思路
      • 一、通讯方式
        • 1、RS232串口连接
        • 2、CANoe与RS232串口相关的函数
        • 3、帧格式命令字
        • 4、校验码
      • 二、面板设计
        • 1、所需文件说明
        • 2、导入使用
        • 3、功能模块化
          • 3.1 初始化
          • 3.2 端口设置
          • 3.3 控制方式
          • 3.4 脉冲程序
          • 3.5 电压电流状态
          • 3.6 运行设置的步骤电压
          • 3.7 时间检测
          • 3.8 扫描
      • 三、总结

编写此面板的目的

在对ECU电控单元做CAN或者ETH的通信测试时,有时需要控制电源来对ECU的状态进行更改。故在CANoe上做此程控电源面板,方便为一些需要用到电源的测试用例做自动化。

编写思路

首先确定下控制的对象为IT6800系列的程控电源。接着确定通信方式与通信帧格式,这里选择RS232串口通信。然后根据需求设计面板及编写通信逻辑的程序。

一、通讯方式

1、RS232串口连接

下图是IT6800程控电源通讯模块介绍,有RS232串口线连接好电脑后,需要安装IT-E132 USB Driver串口驱动,驱动安装包名一般为PL2303_Prolific_DriverInstaller.exe。

在这里插入图片描述

2、CANoe与RS232串口相关的函数

连接好后无需配置CANoe,需在脚本里使用接口函数对RS232进行初始化。下面图2是CANoe自带的RS232发送数据的接口函数,参数代表的意思如表。

/****************初始化串口****************/
InitSerialPort(int comport,int baudarate)
{Rs232Open(comport)	//打开端口Rs232Configure(comport, baudarate, 8, 1, 0)	//设置波特率Rs232SetHandshake(comport, kHANDSHAKE_DISABLED, 0, 0, 0, 0)	//设置握手方式Rs232Receive(comport, gReceiverCallbackBuffer, size)	//接受成功返回1
}
/****************发送数据函数****************/
dword RS232Send( dword port, byte buffer[], dword number )
参数意义
port端口号
buffer发送的数据数组
number发送的数据数组长度

发送数据时回调用下面这个回调函数,可在回调函数里做些打印发送数据处理,方便调试。

/****************发送数据回调函数****************/
RS232OnSend( dword port, byte buffer[], dword number )
{hextostr(buffer);		//创建了一个数据转字符串的函数if(debug)			    //debug打开时进行打印buffer转换成的字符{write("Transmission of %d bytes from port %d completed !", number, port);write("Transmiss content %s",s);}
}

收到数据时将会调用下方函数,添加了对接收数据的一些处理进行打印。

/****************接受数据回调函数****************/
RS232OnReceive(dword port, byte buffer[], dword number)
{byte i,j ;//byte temp[26];while(i < number){ if(buffer[i] == 0xAA)	//因为通讯帧的同步头为0xAA,所以通过对0xAA判断是否是帧头{j = 0;}receivedata[j++] = buffer[i++];	//存下接收到的一帧数据}i = 0;if(j==26)		//帧长度为固定的26字节,所以从0xAA开始计数26字节后即一帧接收完毕{hextostr(receivedata);if(debug){write("Receiver for serial port %d successfully set.",ComPort); write("Receive content %s",s);}}
}

如通信错误将会回调下方函数,errorFlags第0位置1为发送错误,第1位置1为接收错误。

/****************通讯错误回调函数****************/
RS232OnError(dword port, dword errorFlags)
{if ( errorFlags & 1 )writeLineEx(0,3,"send failed");if ( errorFlags & 2 )writeLineEx(0,3,"receive failed");
}

3、帧格式命令字

在上方有提到过通讯帧的同步头为0xAA,占一个字节,总长度为26字节。电源地址占一个字节,命令字占一个字节,命令字不同数据代表不同的命令内容(如设置0x23代表设置电压,0x24代表设置电流),4-25字节为相关内容,如电压或电流的大小,校验码占一个字字节。

在这里插入图片描述

4、校验码

校验码,是前25 个字节累加和。当校验位超过255,减去256 后的余数转化为16进制,代码如下。

/****************校验码计算****************/
byte Checksum_Calcu(byte data[])
{byte i;word j;for(i=0; i < elcount(data)-1 ; i++){j += data[i]; }if( j > 0xFF){j -= 0x0100;j %= 0x0100;}data[25] = j;i = 0;j = 0x00;return data[25];
}

二、面板设计

1、所需文件说明

在这里插入图片描述

文件用处
COMConfig.ini初始化配置文件
PPS.cfgCanoe工程文件
PPS.vsysvar面板使用的相关系统变量
PPS.xvp面板设计文件
PPS.can控制电源CAPL代码

2、导入使用

1、可用PPS.cfg工程,也可在已有工程导入面板、系统变量和CAPL脚本。如在已有工程导入,需先将COMConfig.ini文件复制到当前工程所在目录。

2、在已有工程添加节点,选择PPS.can
在这里插入图片描述

3、选择PPS.vsysvar导入系统变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、选择PPS.xvp导入面板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、功能模块化

将系统变量、面板、CAPL脚本均以功能模块划分,互相对应,方便大家根据需求进行更改。大致分为8部分功能,下面进行简要的介绍。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 初始化

点击运行,面板从COMConfig.ini读取上次数据对面板的端口、波特率、输出电压、输出电流、最大电压进行初始化。点击保留当前数据,会将更改过的输出电压、输出电流、最大电压数据写进COMConfig.ini,覆盖上次数据。CAPL脚本中对应初始化数据、保留当前数据模块。

3.2 端口设置

这里选择对应com口和波特率,以IT6832电源为例,默认9600,CAPL脚本对应端口设置部分。

3.3 控制方式

PC端控制即远程模式控制电源,面板控制即只能通过电源上按钮控制。
输出控制选择打开即电源开,关闭即电源关闭。

3.4 脉冲程序

先按电压1停留设置时间,再按电压2停留设置时间

3.5 电压电流状态

红框部分电压电流会读取当前电源的实际电压电流显示。

3.6 运行设置的步骤电压

需先填写步骤,填写好后,点击运行程序的运行,会按步骤的顺序从小到大运行,输出相关电压电流并停留对应时间。如下图,先输出12V保持5s,再输出3V保持4s,再输出5V保持3s。

3.7 时间检测

起始电压\起始电流即要开始记录时间的时间点,截止电压\截止电流即要停止记录时间的时间点,点击检测即从起始电压\起始电流开始记录。

3.8 扫描

如下图,先以开始值11.5V输出,保持延迟值3s后,以步进值递减或递增,此处是递减,减了步进值后保持延迟值,直到递减等于停止值,完成一个扫描。

三、总结

知道在CANoe使用RS232的接口函数,以及将功能分模块进行设计,剩下的部分则是用CAPL语言编写脚本实现各部分功能的逻辑。本文暂时只对程控电源上位机面板框架部分进行描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352472.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio Gradle实践之多渠道自动化打包+版本号管理

转&#xff1a; Android Studio Gradle实践之多渠道自动化打包版本号管理 上次介绍了Android Studio的安装、配置和基本使用。这次讲一下Android Studio用到的打包工具Gradle。Gradle是一种构建项目的框架&#xff0c;兼容Maven、Ant&#xff0c;为Java项目提供了很多插件去实现…

【测试实践】搞定云网络系统性能测试

一、前言 在部署或管理网络系统时&#xff0c;我们更多的是关心网络的连通性&#xff0c;而对于其整体的性能往往考虑不多&#xff0c;或者即使考虑到性能、异常或稳定性的问题&#xff0c;但却发现没有合适的手段去测试或监控网络健康状况。在本文中&#xff0c;首先简单介绍…

树莓派做一个获取GPS时间的NTP服务器

由于单位用的是内部网络&#xff0c;机器时间无法与internet同步&#xff0c;导致内网的所有设备各自为政&#xff0c;对工作和管理带来的麻烦说不清&#xff0c;为解决这个问题&#xff0c;决定用手里的树莓派做通过GPS获取时间&#xff0c;然后提供NTP服务。在某宝逛了一圈&a…

自动(智能)驾驶 | 全网第一本激光雷达手册阅读指南(下)

接着从上篇继续说&#xff0c;本部分主要介绍激光雷达数据等内容&#xff0c;这个可以说是看懂激光雷达手册的重中之重&#xff0c;也就是关键问题的关键&#xff08;皮~&#xff09;。同样由于velodyne的手册比较难啃但是内容完整丰富&#xff0c;本期我们依然以velodyne 128&…

GEO-SPARK 2000X PPS使用记录(三)

最近单位突然要使用GeoSpark电火花&#xff0c;至少有4年没有用过了。我一直没有独立操作过&#xff0c;只是看同事操作过&#xff0c;碰巧的是会使用这个设备的同事去大洋了&#xff0c;悲剧的是他们把所有的采集狗都拿走了&#xff0c;留下一个巨大的坑让我来填。 1、首先看看…

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…

Kerberos从入门到精通以及案例实操系列(二)

5、安全集群使用说明 5.1、用户要求 具体要求以下使用说明均基于普通用户&#xff0c;安全集群对用户有以下要求&#xff1a; 集群中的每个节点都需要创建该用户该用户需要属于hadoop用户组需要创建该用户对应的Kerberos主体 实操&#xff0c;此处以atguigu用户为例&#x…

3.了解Spring Boot2自动配置原理

了解Spring Boot2自动配置原理 1、SpringBoot特点 1.1、依赖管理 1.父项目做依赖管理 依赖管理 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEAS…

Docker搭建Elasticsearch方法及启动后服务自动关闭的问题

太长不看&#xff0c;一句话总结 内存太小&#xff0c;启动命令中添加参数修改虚拟机大小即可 docker run -e ES_JAVA_OPTS"-Xms256m -Xmx256m" -e "discovery.typesingle-node" -d -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:7.6.0配…

NTP自动退出问题排查

为什么80%的码农都做不了架构师?>>> 问题现象:ntp进程运行一段时间后自动退出 排查过程: 查看/var/log/message ntp异常信息如下 Feb 20 22:54:41 xnu_1 ntpd[2187]: 0.0.0.0 0617 07 panic_stop -28777 s; set clock manually within 1000 s. Feb 20 22:54:57 …

Docker部署Elasticsearch及安装后自动关闭的问题

Docker搭建Elasticsearch方法 前往dockerhub官网&#xff1a;dockerhub 可查看elasticsearch相应版本 拉取镜像 选取一个版本拉取镜像&#xff0c;如docker pull elasticsearch:7.9.2 不输入版本默认拉取最新版 启动容器 映射端口为9200和9300 docker pull elasticsearch:…

自动化基础笔记--元素操作

元素操作&#xff08;附带鼠标悬停&#xff09; 一些课程回顾&#xff0c;问题原因总结 函数只有在return的时候&#xff0c;才会返回一个数据。返回数据了才可以赋值的 报错&#xff1a; 等待时间不够返回的元素不是你想要的确实是你表达式写错了有句柄未切换或者有iframe未…

服务器设置了自动校时但是,同步时钟配置电脑自动校时

同步时钟配置电脑自动校时 一、同步时钟操作和指示灯说明。 同步时钟可接收全球定位系统GPS、北斗卫星信号。当GPS/北斗天线架设到屋顶时&#xff0c;天线的高度必须低于房屋顶避雷天线的高度&#xff0c;防止被雷击。 先关闭电源后再连接或者去掉天线。 电源指示灯&#xff1a…

计算机怎么关闭开机自启应用,如何关闭电脑开机自动启动的软件程序

如何关闭电脑开机自动启动的软件程序 我们在电脑中安装软件的时候,不小心设置了开机启动,该怎么取消呢?今天就跟大家介绍一下如何关闭电脑开机自动启动的软件程序的具体操作步骤。 1. 首先打开电脑,找到桌面上的【360安全卫士】软件,双击打开: 2. 进入主页面后,点击上方…

Latex使用algorithm2e包写伪代码

用Latex写伪代码我们需要用到一个包&#xff0c;Algorithm2e&#xff0c;这个工具包的使用手册下载地址为&#xff08;http://mlg.ulb.ac.be/files/algorithm2e.pdf&#xff09;CSDN的链接为&#xff08;&#xff09; 准备 导入该包 \usepackage[ruled,linesnumbered]{algor…

【复杂网络建模】——基于微博数据的影响力最大化算法(PageRank)

&#x1f935;‍♂️ 个人主页&#xff1a;Lingxw_w的个人主页 ✍&#x1f3fb;作者简介&#xff1a;计算机科学与技术研究生在读 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4a…

【Markdown小技巧】 整理小图标和表情符号

&#x1f40b;作者简介&#xff1a;博主是一位.Net开发者&#xff0c;同时也是RPA和低代码平台的践行者。 &#x1f42c;个人主页&#xff1a;会敲键盘的肘子 &#x1f436;座右铭&#xff1a;总有一天你所坚持的会反过来拥抱你。 &#x1f308;写在前面&#xff1a; 让博客变得…

工信部—高级软件开发工程师认证

工业和信息化部教育与考试中心是工业和信息化部直属事业单位&#xff0c;承担计算机技术与软件专业技术资格考试、通信专业技术人员职业水平考试、电子通信行业职业技能鉴定、全国信息技术人才培养工程、产业工人网络平台建设等人才培养选拔工作。 软件工程师(Software Enginee…

EasyCVR视频汇聚智能边缘网关在多平台级联及上下级对接中的应用说明

一、行业背景 近年来&#xff0c;在政务数据共享平台的建设上&#xff0c;对国家、省数据、市数据及区县对接上要求打破“信息孤岛”&#xff0c;拔掉“数据烟囱”&#xff0c;全面打通数据“脉络”的主通道。省市平台“级联对接”工作&#xff0c;由国家数据共享平台、省级数据…

水球图的使用

水球图的使用 注意&#xff1a; echarts-liquidfill3 版本匹配 echarts5 版本&#xff0c;echarts-liquidfill2 版本匹配 echarts4 版本 npm install echarts-liquidfill2.0.2 --savevue代码演示&#xff1a; <template> <div class"com-container">…