研选课堂
HOME
研选课堂
正文内容
qt 联合plc编程 基于Qt的PLC板级工装测试方法研究与实现
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

基于Qt的PLC板级工装测试方法研究与实现

杨志明,傅一帆,闵晓霜,赵德政

(华北计算机系统工程研究所,北京100083)

PLC板级工装测试系统主要对N系列全国产化PLC单板模块的硬件连通性及其基本功能进行测试,为简单硬件设计及问题查找定位提供软件支持与验证。一般的板级工装测试产品,不同板卡测试环境不同,操作复杂,且大部分是手动测试,人力物力成本太高。提供一种基于Qt的跨平台PLC板级工装测试方法与系统,是对PLC单板模块功能及接口的自动化测试系统。实际测试表明,该系统可以大幅度提高测试效率,节约测试成本。

电路板工装测试;测试方法;PLC;Qt

中图分类号: TP311.1

文献标识码: A

DOI: 10.16157/j.issn.0258-7998.170986

中文引用格式: 杨志明,傅一帆,闵晓霜,等. 基于Qt的PLC板级工装测试方法研究与实现[J].电子技术应用,2018,44(1):114-117.

英文引用格式: Yang Zhiming,Fu Yifan,Min Xiaoshuang,et al. Research and implementation of PLC board-level testing method based on Qt[J]. Application of Electronic Technique,2018,44(1):114-117.

0 引言

随着“两化融合”的深度发展,工业控制系统已经成为国家关键基础设施的重要组成部分。数字电路板作为PLC(Programmable Logic Controller)的重要组成部分,其质量好坏直接关系到国家的战略安全。因此,对于PLC电路板的工装测试方法进行研究,保证电路板的质量具有重要意义[1]。

随着微电子技术、封装技术、印制板技术的不断发展,印制电路板密度变得越来越大,复杂程度也越来越高,传统的“探针”测试方法[2]使用万用表、示波器测试芯片已经不能满足要求。目前有一些利用IDE工具[3](例如SPE)进行工装测试,这种方法存在需要人工参与、效率低、不能实现自动化测试[4-5]等问题。基于LabVIEW的自动化测试系统[6]成本较高,而且对于PLC的电路板部分测试不能满足要求,所以开发一款成本低、操作简单、测试覆盖率高的电路板自动化测试软件很有必要[7-8]。

1 PLC板级工装测试软件总体设计

板级工装测试软件主要为目标板的测试程序下装以及测试提供人机界面,发送测试指令至目标板并接收返回的测试结果,为模块的硬件连通性、各器件的基本功能好坏以及故障查找定位提供软件支持与验证。

图1描述了板级工装测试系统的外部输入输出。

1.1 模块划分

按照板级工装测试软件需求,软件所需要实现的功能划分为8个模块,模块划分及模块功能概述如表1所示。

1.2 模块交互关系

板级工装测试软件各模块之间的交互关系如图2所示。

1.3 系统处理流程图

系统主要处理流程如图3所示。

2 测试方法研究与选取

PLC电路板测试的测试项包括:串口测试、网口测试、SDRAM测试、Flash测试、LED灯测试、拨码测试、RTC时钟测试、MAC_EEPROM测试、ComX测试、DI通道测试、DO通道测试、A/D转换测试、D/A转换测试等。以下对各个测试项的测试方法进行研究并选取最合适的测试方法。

2.1 串口测试

串口测试分为3项,分别对UART_1、USER、OS 3个通道进行测试,以下是3个通道的检验方法:将一根串口线一端连接在UART_1串口,另一端连在辅助测试模块的串口1上;将一根串口线一端连接在USER串口,另一端连在辅助测试模块的串口2上;再将一根串口线一端连接在OS串口,另一端连在辅助测试模块的串口3上。辅助测试模块将收到的待测串口的测试数据原样返回给该串口,下位机接收数据后判断返回数据是否与发送的数据相同。如果相同,则测试通过,如果不相同,或者在限定的超时时间内没有接收到数据,则测试不通过。

2.2 网口测试

网口测试分为2项,分别对ETH0和ETH1两个通道进行测试,以下是两个通道的检验方法:将一根网线一端连接在ETH0,另一端连在辅助测试模块的网口1上;将另一根网线一端连接在ETH1,另一端连在辅助测试模块的网口2上。下位机首先初始化相应测试网口,然后发送目的IP为辅助测试模块网口IP的ARP请求包,并等待辅助测试模块发送的ARP返回包,判断在限定的超时时间内是否接收到正确的ARP返回包。

2.3 SDRAM测试

SDRAM[9]常见的故障[10]通常有以下几种:固定开路故障(Stuck open fault)、状态转换故障(Transition fault)、数据保持故障(Data maintaining fault)、状态耦合故障(Coup-

lingfault)。目前对于SDRAM的测试大多采用March-C算法[11],这种方法对以上故障具有很高的故障覆盖率[12],本文就采用这种方法。值得注意的是,由于测试程序也运行在SDRAM上,所以SDRAM测试起始地址预留1 M空间。

2.4 Flash测试

Flash测试[13]分两步来执行,首先将Flash全擦除,往Flash的每一个地址空间写数据,然后再读出来与写入的数据比较,看是否相同。如果测试地址空间的数据读写都正确,则测试通过。

2.5 LED灯测试

LED灯亮灭由相应GPIO口控制,测试时将相应GPIO口都配置为输出,采用流水亮灭的形式来进行测试,最终点亮所有灯,观察灯是否全亮。

2.6 拨码测试

拨码数据通过GPIO口来采集,相应的GPIO配置为输入,通过拨动硬件拨码来改变采集到的数据,然后通过通信口将数据发送到上位机,比对采集到的数据与硬件拨码当前的码值是否相同。

2.7 RTC时钟测试

RTC时钟芯片通过I2C总线来连接,首先需要初始化I2C相关寄存器,正确设置时钟分频值。然后给时钟芯片设置一个时间,设置完成后芯片自动运行,同时开启定时器,定时10 s后,再从时钟芯片中读取时间,查看读取的时间是否比设置时间多10 s,以此判断芯片走时是否正确。

2.8 ComX测试

Ethercat主站采用赫优讯工业以太网模块ComX 100CN-RE,并下装Ethercat Master主栈固件,将ComX 100CN-RE模块与CPU相连,实现Ethercat主站功能主任务。由于ComX模块中DPM结构由模块自己的操作系统RCX控制,上电后自动维护,所以测试过程主要是通过读取DPM中固定地址的一些常量值来验证。

2.9 MAC_EEPROM测试

MAC_EEPROM测试首先需要初始化MAC控制器芯片,然后在EEPROM固定地址空间写入一个MAC地址值,然后再读出来,如果相同则测试通过。

2.10 DI通道测试

DI通道数据采集通过GPIO口控制,开始测试前,给每通道(DI0~DI7)输入不同的高低电平,GPIO口采集到相应的数据后通过通信口将数据发送到上位机,比对采集到的数据与实际各通道输入的电平高低是否吻合。

2.11 DO通道测试

DO通道数据输出通过GPIO口控制,开始测试后,上位机往下位机发送一个输出值,下位机控制相应GPIO口控制各通道(DO0~DO7)输出,然后观察DO通道电平指示灯,比对数据与各通道测量值是否吻合。

2.12 A/D模数转换测试

使用辅助测试模块的高精度AI/AO检测模块,对4路通道分别输入4~20 mA恒定电流,A/D芯片采集到相应数据后进行转换,然后将转换数据通过串口发送给下位机,下位机计算采集误差在±0.3%内则测试通过。

2.13 D/A数模转换测试

通过上位机设定4路通道对外输出的电流值(4~20 mA),然后转换为相应的数字量数据并发送到下位机,下位机使用这个数据来设置D/A芯片,然后使用辅助测试模块的高精度AI/AO检测模块测量每路信号输出的电流值,通过串口返回给下位机,判断是否符合要求,误差在±0.1%内。

3 基于Qt的PLC板级工装测试软件实现

以CPU模块为例介绍板级工装测试软件的测试过程,图4是CPU模块的测试连接关系示意图。

按图4所示连接搭建好测试环境后,从上位机上打开板级工装测试软件.exe程序。按照流程图3进行测试,得到如图5的测试结果画面。其中,绿色(图5中灰色圆形区域)表示测试通过,红色(图5测试全部通过,无红色显示)表示测试不通过。

4 结语

本文通过对PLC电路板上各器件的测试方法进行研究,并依据选取的测试方法设计了一种基于Qt的跨平台板级工装测试软件。经过实际验证,使用该软件对PLC电路板进行测试,测试覆盖率较高、测试时间短、故障定位准确率高。并且该软件相对以往的测试工装操作更加简单方便,生产人员只要经过简单培训,就可以熟练使用本软件,无需专业技术人员帮助就可以完成测试工作。本设计为开发电路板的工装测试软件提供了参考,可广泛用于电路板工装测试检验环节,对于提高产品质量与测试效率、节约人力物力成本具有很大促进作用。

参考文献

[1] 尤东妹,徐静.基于自动测试系统的数字电路板测试与故障诊断[J].SILICON VALLEY,2013(5):91-92.

[2] 刘杰,崔成旺.印刷电路板的功能检测[J].煤炭技术,2012(4):76-77.

[3] 朱振军,林明,宋月丽.基于边界扫描技术的板级测试分析[J].电子设计工程,2012,20(9):127-129.

[4] 霍晓磊,康霞,谭业双.电路板自动测试技术研究[J].测试技术学报,2013,27(5):411-414.

[5] 徐健茹.电路板通用自动测试系统设计与技术研究[D].西安:西北工业大学,2001.

[6] 王晓亮,谢朝辉,杨红官.基于LabVIEW和FPGA的存储器测试系统设计[J],计算机测量与控制,2012,20(7):33-35.

[7] 王秀霞,冉黎林,郭磊.基于故障诊断技术的电路板测试设备设计[J].计算机工程与应用,2015,51:295-299.

[8] 孙秀江.PCBA故障诊断系统的研究与开发[D].哈尔滨:哈尔滨工业大学,2006.

[9] 赵雪莲,杨新涛.SDRAM的测试方法研究与实现[J].国外电子测量技术,2008,27(5):12-15.

[10] 雷静.存储器测试方法的研究与测试程序的实现[D].成都:电子科技大学.2009.

[11] 于文考,高成,张栋.基于March-C算法的单片机存储器测试[J].现代电子技术,2010(6):19-21.

[12] 杜康保,王烈洋,魏爱香.基于SOPC的SDRAM测试技术研究[J].电子科技,2014(24):6-8.

[13] 柳玉波.SoC嵌入式Flash的内建自测试方法的研究与实现[D].成都:电子科技大学,2010.

工控前辈经验之谈 编写PLC程序我从做Excel表开始

作为在工控自动化行业侵淫已久的工程技术人员,无论在程序编写,抑或现场处理都会总结出自己的一套,本文作者周舟,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段,也总结出自己的一套PLC编程经验,与大家分享。

//////////

次看了邓李老师的文章《如何编写优质的PLC/PAC程序?大神的这份作业建议你抄一下》颇有些感受。工作快20年,多少写了些程序,大多是和机器相关的,记得本科的毕业设计是用VB+数据采集卡写了一个拖拉机发动机喷油嘴的弹簧测试,硕士课题用C在Linux下做了一些代码,而毕业后在海天,和师傅一起,继续在Linux下用C和QT堆了一台注塑机的控制器出来。

01

第一次接触PLC,是在海天公司给一台双色注塑机增加一个转轴功能,这个功能注塑机电脑上没有,所以外加了一个PLC,记得当时用的是三菱FX,这是我接触的第一个PLC,当时因为供应商提供了PLC、伺服电机、减速机等一套产品,所以程序也就让供应商写了。

到了倍福之后,由于整个办事处就我一个人,处于什么都干的状态,所以除了销售工作,也做技术支持。记得第一个项目是上海的同事写的代码,同事来现场一次,后面的维护我接过来。所幸TwinCAT2这软件比较简单,一来二去自己就上手了。

后来慢慢地也给客户写一点DEMO,用来给客户解释为啥IEC61131-3是一个简单的东西,不像想象的那么难,不要一想到ST语言就想到高级语言,等等诸如此类的问题。写着写着,也有了一些心得。

在聊聊这些心得之前,先说点题外话。我做过两件和工作不太相关的学习,一次是读研究生时,一个培训班来学校推销ISO内审员的培训,当时因为好奇去报了名,花了几百块钱听了一堆ISO的知识,记得讲课的是一位老干部。另一次是刚上班时,去报了一个计算机高级程序员的考试,看了几个月书,离及格线差了那么一大点(不是一小点)。但这两个事情,对我的影响比较大,ISO的学习,让我理解了凡事要有流程,流程要有标准,标准要有数据,数据要可追溯,这为后来理解工业4.0打下了基础 ,而高级程序员的考试,让我学到不少IT的知识,尤其是软件工程方面的知识,对于构建一个大的程序,还是有帮助的。

下面的心得,和这两件事情,有比较大的关系,说穿了,就是多做纸面工作

02

在写代码之前,我会先建个EXCEL表格大约有这么几项 (这里我虚拟了一个立体车库的项目,因为每天到办公室都会和立体车库打交道):

1IO表 ,输入输出的模块型号,模块的位置,每个模块上每个点的定义,以及外面接的是什么元器件。对于一些电气CAD软件,会自动生成这个表,但我们还是建议用EXCEL做一份,以便存档。

2变量表 ,一部分变量是有地址的,比如需要和上面提到的IO表进行对应,比如Modbus通讯。Modbus通讯需要定义变量地址,而IO对应的不需要在程序中指定,只要在系统配置中和硬件进行连接。另一部分变量是没有地址的,但也不能随便定义,要有一定的规则,以便阅读。

3结构体 (Structure),结构体的设计,可以放在变量表之前,为了提高效率,我们会设计一些结构体来做数据类型,比如一个气缸,就可以设计一个结构体来表述,这个结构体会包含气缸的方向,磁性开关状态,以及两个方向的超时报警时间。在使用到气缸时,就可以用这个结构体类型来直接定义气缸,而无需去定义每个气缸设计的变量。

必要的话,可以设计枚举变量,用来表述机器的状态。

4POU名称 (Program Organization Unit程序组织单元)。POU有三种类型:程序(Program)、功能块(Function Block)、函数(Function)。在规划阶段,程序和功能块的构建是很重要的,功能块会降低很多重复工作,从而避免一些普遍性的错误(当然,错了也就都错了),程序的调用、状态的切换是否清晰可控,则决定了整个项目是否足够强壮,并可持久改进及维护。

5工艺说明 ,包括各个工作步骤、步骤的衔接、条件的转换等。这个步骤,可以在EXCEL中做,也可以用word、PPT,但相比之下,EXCEL可能是个更好的选择,因为EXCEL的纸面是没有限制大小的,而word和PPT很容易遇到编辑范围太小的问题。

当然,也可以在纸张上来画。我个人建议每个项目备一个A4的本子,和EXCEL配合使用。

做完这个表格之后,我习惯将变量表直接复制到TwinCAT中,因为在EXCEL中,很多重复工作可以直接选中表格单元进行拖拉复制,比如注释的“(* ”和“*)”,以及末尾的“;”,都是直接复制单元格的,而对于一些带序号的变量,如X0-X7,顺序复制即可,这会在大幅度减少工作量的同时,降低变量编写出错机率。

在程序编写过程中,除了用于for循环的累加数,以及用来调试时的一些标志之外,如果要增加有实际意义的变量名,必须先在EXCEL里增加,再复制到程序中。这有点强迫症,但事实证明,这个有用。

接下去就是建立各个POU,对于功能块,要写好输入变量和输出变量,而函数只需要有参数即可。写完了每个POU,记得在每个POU的主体敲个";",这样,即使我们一句代码也不写,也是可以编译通过的。如果这时候编译不通过,可以看看是不是哪里有手误了,因为这时候能错的地方都是系统保留字,或者是忘记敲";",注释的括号少了之类。

接下来是不是写代码?不是的,是先写注释,而且是全面注释,即在各个功能块中,先写好注释。在TwinCAT中,一个程序块只需要一个“;”,即可编译通过,我们上面已经敲好了";",所以不用担心没有代码会造成程序不能编译。

我们回到前面第4点,如果流程图已经画好,那我们就把流程图搬到编程环境中,还是按照从大到小的原则,我们先把步骤编好,具体每一步里面做什么,可能远不如步骤之间怎么切换衔接来得重要。所以,在这个过程中,我们还可以用注释来替代代码,但别忘了在各种for、case中加上“;”。

最后一步,让我们在所有注释的地方,把代码写上。然后,编译一下。

如果有人可以把PackML的文档看一遍,会发现里面就有关于状态切换的图表,如果有兴趣,可以去找下PackML的文档。

如果你用的是TwinCAT或者Codesys的环境,我建议在写EXCEL表格和画流程图的时候,顺带把人机界面的草图也画了,我觉得集成人机界面的开发环境就是自动化工程师的大救星。人机界面和PLC在同一个环境内,意味着可以随时看到工程师想看到的内容,比如在调试时,需要看多个变量,那建在人机界面上会方便很多,不需要在程序中在线观察。

人机界面和PLC的集成,除了大大提高自动化工程师的幸福感之外,也会极大激发自动化工程师的创作欲望。比如有些DEMO,我会将逻辑动作的条件和输出状态都放在画面中,这样可以很清楚看到一个逻辑动作没有执行的原因,比如某几个动作有先后,那做个定时器或者多个定时器,将这些定时器的输出放在同一个画面,就可以明察秋毫了。

写完了程序,机器也动了,我们再来做一张表,就是修改记录 ,在这张表里,我们写下,某年某月某日,为了什么原因,我们改了哪个程序,怎么改的,修改后我们怎么测试的,测试的效果如何。

而修改的程序,不建议直接在原程序上改,可以建一个新的POU,也可以在POU里写一个新的action,在对应的调用处改掉调用名字即可。这样,即使新的程序出了问题,也很容易改回(RollBack)到原来的程序。而新的代码中,记得在头部写好注释。

03

至此,我们回过头来看看,我们获得了哪些好处:

1 、我们有了一个清晰的名字列表,包括变量的、IO的、程序的

2 、我们有了一个清晰的结构

3 、所有的问题会有据可查。

上面这几点是针对程序本身的益处,而对于项目和企业而言,则有更大的意义:

1通过分解 ,将代码部分的工作量比例降低了,这种逐步聚焦的方式,可以让工程师把精力放在最关键的地方。

2便于沟通 ,在代码之前的这些工作,都可以和其他人共享,比如IO表部分可以和电气工程师以及电工沟通,程序流程部分可以用来和工艺工程师沟通。

3便于维护 ,在移交给其他工程师,或者多人开发同一项目时会方便很多。如果没有注释,基本上工程师自己都会忘记原来写的什么。

4便于更换平台 ,当需要更换一个控制器平台时,会发现,大部分工作是相通共用的,这会在切换平台时节约大量的时间。

本文用了一些IEC61131-3的概念,关于IEC61131-3的书很少,推荐彭瑜老师和何衍庆老师的那本《IEC61131-3编程语言及应用基础》,机械工业出版社出版,这本书我买了应该不下三十本,用来送人。记得在倍福10周年庆典那天,公司邀请了彭瑜老师,恰好庆典在人民广场附近举办,席间跑步前进到福州路的上海书城,居然买到了那本《IEC61131-3编程语言及应用基础》,请彭瑜老师签了个名,留作纪念。

另外推荐林锐博士写的《高质量程序设计指南 C++/C语言》,这本书有人不喜欢,觉得这本书水份太多,干货太少,但读起来还是比较轻松的,这本书出到了第三版,目前在网上有很多二手的在销售,也有一些电子版的,建议找来读一读。

后记

写这篇文章的原因,一方面是看了邓李老师的文章,也想谈谈自己的心得,另一方面,也是看到随着工业4.0的普及,以及我国OEM制造业正在向高端发展,PLC程序方面,也慢慢向IT方向发展。

相比于PC或者网络软件,自动化程序有几个特点:

1、使用对象比较窄 ,这造成了对程序的质量要求、功能要求都不是太高,机器能开就行。

2、代码量小 ,因为1的原因,以及机器本身的特性,PLC的代码量是很小的。

3、协作性很低 ,很多公司只有一个自动化工程师负责PLC程序,而且对程序质量要求很低,只要求机器能跑。

这些特点,造成了自动化行业,尤其是离散自动化行业,对于代码的质量基本是没有要求的。我记得大学时候买过一本《软件工程》的书,开头有个例子,是一个科幻电影里的飞船计算机艾尔出了软件故障的故事,随着现在机械设备制造业的发展,机器的销售越来越多,客户的需求也变得越来越定制化,这种软件的故障,在将来会慢慢出现,如何应对这个事情,唯一的道路,只能是从计算机行业去借一些经验来。

我作为一个销售来写这个文章,会有很多漏洞,但还是期望我的文字可以引起自动化工程师的共鸣,起到抛砖引玉的作用,大家一起为未来做些事情。

--END--

作者简介

周舟,硕士,2003年毕业于河南科技大学,师从张洛平教授,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段。

声明: 本文由《工控百家谈》-工控参考独家发布,如需转载,请联系我们。

相关问答

我是搞PLC工控的,想学门编程语言,有走过的前辈给推介下?

刚开始我也是编写一些plc程序,做非标设备的。刚好10年时候公司有大量大族激光的设备要改造。都是固高运动卡,大恒图像之类...工业自动化多是plc控制,和你一...

中科ZHONGKE售后电话是多少?-一起装修网

[回答]中科电气主导产品“中科”牌系列电器:起重机通用电阻器,不锈钢电阻器,变频制动电阻器,大功率波纹电阻器,欧型起重机用电控箱,铝壳电阻器,QT5,TQK4联...

在座的朋友可以推荐一下,顺德性价比高的PLC编程公司,PLC编...

[回答]中山宇丰工业自动化成立于2001年,位于广东省中山市汽车总站后侧。宇丰通过轨迹转化成切割,画图、点胶、打孔等功能。宇丰传统人工检测,从工作效率的...

欧姆龙PLCCPM2AH与西门子触摸屏smart700能通讯吗?肿么通讯?...

欧姆龙的PLC可以配422/485的拓展口的,烦个鸟有用(0)回复展开查看全部6条讨...今天刚买的i6p型号是MGAK2CHA序号是C39NC2AUG5QT是不是正品77浏览3...

qt进程中开很多定时器会影响定时器精度吗?

您好,在Qt进程中开启很多定时器会影响定时器的精度。每个定时器都需要占用一定的系统资源,并且在定时器触发时需要进行一定的处理操作,这些操作都会消耗一定的...

威纶mt506显示PLC无响应为什么-ZOL问答

第一:PLC与MT506是否都上电,并且保证PLC是运行状态。第二:PLC与MT506的通信线是否接法正确。第三:下载MT506后,后面的拨码开关时候置位正确,从以上几个方面查...

精密仪器上位机软件开发有前途吗?

你好,我是做机器视觉上位机开发的工程师,你说的精密仪器上位机开发我认为很有前途,我也有接触过,精密仪器上位机开发需要你对相关行业有一定的认知,理解基本...

工控行业的上位机可以做出什么花样?

一.首先你得明确上位机的概念。什么上位机,上位机可以统一理解为发号施令的设备,不分种族,不分大小。比如触摸屏可以发出指令,控制PLC或其他智能仪表。比如...

用上位机控制单片机然后实现数据传输,学习哪种上位机好呢?

从我学习计算机、软件相关知识开始,十几年来,我曾经使用过的上位软件集成开发工具按时间顺序依次为(这些集成开发工具,有些我已不常使用,有些甚至完全被淘汰)...

冻肉切丁机技术参数有什么:

[回答]切丁机说明QD切丁机可加工各种生肉,全自动550型切丁机,具有切块、切丝、切条、切片功能。◇采用PLC程序控制设计,操作简便,设计合理,可调整刀速和自...

 死亡交响曲  美梦俱乐部zero 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部