基于ST语言指针变量的可编程控制的方法与流程

文档序号:19127356发布日期:2019-11-13 02:15阅读:2306来源:国知局
基于ST语言指针变量的可编程控制的方法与流程

本发明涉及可编程控制领域,特别涉及一种基于st语言指针变量的可编程控制的方法。



背景技术:

可编程控制系统在我国已经有超过20年的应用,控制系统简称plc。plc控制系统采用可编程的标准语言,通常依据iec61131-3标准,对控制器进行标准的语言开发应用。可编程控制器在机械、流程工业、工用工程、楼宇自控等等领域都有广泛的应用。随着plc控制系统应用越来越广,控制系统的核心芯片性能需求也越来越高。在处理速度提升、控制器功耗降低、存储容量扩充、接口数量补充等方面,每年都有提高。因此,除了常规的输入输出点位以外,数据接口集成能力,也成了plc控制系统的一大特色。

对于plc控制系统来说,编程语言早期普遍采用梯形图,适合电气工程师将二次电路图转换成梯形图。但是,近几年来,st(结构化文本)语言基本被年轻工程师们接受。因为st语言具有可读性强,方便加入注解,方便注释调试,方便写功能块函数等特点。

通常中型规模的plc控制系统,就要接入各种带通讯接口的设备,比如温湿度传感器、led显示屏、电表、水表、空调主机、变频器等等设备,都需要通过串行接口接入。plc在接入这些设备的时候,往往需要有一定的快速计算能力和数据存储能力。通常采用数组、连续地址变量和内部数据块组合的形式,对数据进行计算处理。但是,对于plc语言来说,梯形图处理这些数据,基本没法看,又长又难读懂。一般采用st语言来实现。但是st语言规定的编程方法,对于数组、连续地址变量、内部数据块的复制、处理,也有一定的不足。比如数组与连续地址变量的转换,需要一个一个变量编写,代码量特别多,容易出错。采用内部数据块处理时,也要定义很多种类数据块。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种能大大减少代码量,无需定义固定地址的m区或定义内部数据块,动态实现,编写程序灵活性大大加强,执行效率大大提升的基于st语言指针变量的可编程控制的方法。

本发明解决其技术问题所采用的技术方案是:构造一种基于st语言指针变量的可编程控制的方法,应用于可编程控制系统,包括串行数据收发流程,所述串行数据收发流程包括如下步骤:

a)定义类型为pointer的第一指针变量pdata1和第二指针变量pdata2;

b)定义数组长度为n、类型为byte型的第一数组data1和第二数组data2;所述n为大于1的整数;

c)将所述第一数组data1的地址赋值给所述第一指针变量pdata1,将所述第二数组data2的地址赋值给所述第二指针变量pdata2;

d)将所述第一指针变量pdata1指向的n个数据通过串口发送出去;

e)接收所述串口的数据至所述第二指针变量pdata2指向的地址。

在本发明所述的基于st语言指针变量的可编程控制的方法中,所述n的大小为100。

在本发明所述的基于st语言指针变量的可编程控制的方法中,所述步骤d)通过如下程序实现:sersend(en:=1,con:=1,data:=pdata1,length:=100);其中,sersend为串口数据发送功能块,en为使能状态,con为串口,data为数据指针,length为发送的字节数。

在本发明所述的基于st语言指针变量的可编程控制的方法中,所述步骤e)通过如下程序实现:serrecv(en:=1,con:=1,data:=pdata2);其中,serrecv为串口数据接收功能块,en为使能状态,con为串口,data为数据指针。

在本发明所述的基于st语言指针变量的可编程控制的方法中,还包括plc数据块复制流程,所述plc数据块复制流程包括如下步骤:

a′)定义类型为pointer的第三指针变量pdest和第四指针变量psrc;

b′)定义数组长度为n、类型为byte型的第三数组data3和第四数组data4;所述n为大于1的整数;

c′)将所述第三数组data3的地址赋值给所述第三指针变量pdest,将所述第四数组data4的地址赋值给所述第四指针变量psrc;

d′)将所述第四指针变量psrc指向的长度为n的plc数据块复制到所述第三指针变量pdest指向的plc数据块。

在本发明所述的基于st语言指针变量的可编程控制的方法中,所述步骤d′)通过如下程序实现:nw_nencopy(dest:=pdest,src:=psrc,length:=100);其中,nw_nencopy为数据复制功能块,dest为目标地址,src为源地址,length为plc数据块的长度。

在本发明所述的基于st语言指针变量的可编程控制的方法中,当en为1时,开启使能状态,当en为0时,关闭使能状态。

在本发明所述的基于st语言指针变量的可编程控制的方法中,当con为1时,所述串口为串口1。

实施本发明的基于st语言指针变量的可编程控制的方法,具有以下有益效果:由于定义类型为pointer的第一指针变量pdata1和第二指针变量pdata2;定义数组长度为n、类型为byte型的第一数组data1和第二数组data2;将第一数组data1的地址赋值给第一指针变量pdata1,将第二数组data2的地址赋值给第二指针变量pdata2;将第一指针变量pdata1指向的n个数据通过串口发送出去;接收所述串口的数据至第二指针变量pdata2指向的地址,本发明是基于可编程控制器的st编程语言内,设计了st语言的指针变量,应用于可编程控制系统,iec61131-3标准规定了可编程控制器语言的规范。本发明在规范的基础上,将指针变量应用在st语言系统内。本发明的指针变量的类型为pointer,是标准以外的定义,本发明能大大减少代码量,无需定义固定地址的m区或定义内部数据块,动态实现,编写程序灵活性大大加强,执行效率大大提升。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明基于st语言指针变量的可编程控制的方法一个实施例中串行数据收发流程的流程图;

图2为所述实施例中plc数据块复制流程的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明基于st语言指针变量的可编程控制的方法实施例中,该基于st语言指针变量的可编程控制的方法应用于可编程控制系统,该基于st语言指针变量的可编程控制的方法包括串行数据收发流程,该串行数据收发流程的流程图如图1所示。图1中,该串行数据收发流程包括如下步骤:

步骤s01定义类型为pointer的第一指针变量pdata1和第二指针变量pdata2:本步骤中,定义类型为pointer的第一指针变量pdata1和第二指针变量pdata2。具体可以通过如下方式定义第一指针变量pdata1和第二指针变量pdata2:pdata1,pdata2:pointer。

步骤s02定义数组长度为n、类型为byte型的第一数组data1和第二数组data2:本步骤中,定义数组长度为n、类型为byte型的第一数组data1和第二数组data2,其中n为大于1的整数。本实施例中,n的大小为100。本步骤具体可以通过如下方式定义第一数组data1和第二数组data2:data1:array[1..100]ofbyte;data2:array[1..100]ofbyte。在实际应用中,n的大小可以根据具体情况进行相应调整,也就是n的大小可以根据具体情况进行相应增大或减小。

步骤s03将第一数组data1的地址赋值给第一指针变量pdata1,将第二数组data2的地址赋值给第二指针变量pdata2:本步骤中,将第一数组data1的地址赋值给第一指针变量pdata1,将第二数组data2的地址赋值给第二指针变量pdata2。可以通过如下程序实现:pdata1:=&data1;pdata2:=&data2。

步骤s04将第一指针变量pdata1指向的n个数据通过串口发送出去:本步骤中,将第一指针变量pdata1指向的n个数据通过串口发送出去。具体通过如下程序实现:sersend(en:=1,con:=1,data:=pdata1,length:=100);其中,sersend为串口数据发送功能块,en为使能状态,con为串口,data为数据指针,length为发送的字节数。当en为1时,开启使能状态,当en为0时,关闭使能状态。当con为1时,串口为串口1。上述程序实现的是将第一指针变量pdata1指向的100个数据通过串口1发送出去。

步骤s05接收串口的数据至第二指针变量pdata2指向的地址:本步骤中,接收串口的数据至第二指针变量pdata2指向的地址,可以通过如下程序实现:serrecv(en:=1,con:=1,data:=pdata2);其中,serrecv为串口数据接收功能块,en为使能状态,con为串口,data为数据指针。上述程序实现的是接收串口1的数据至第二指针变量pdata2pdata2指针指向的地址。通过上述步骤s01至步骤s05,实现了串行数据的收发。

本发明通过一句话复制输入、输出、内部固定地址区和数组数据,代码量大大减少。具体而言,当应用在串口数据收发时,采用本发明的pointer型指针变量前,需要通过内部数据块,定义数组下标数量相等的固定地址变量,同时编写数组下标数量相等的程序代码。采用本发明的pointer型指针变量后,一行或两行代码即可实现数据块的复制。对于串行数据收发程序,只要作个pointer型指针变量指向就可以了。因此,对于plc复杂应用来说,可以大大减少程序代码工作量。

本发明无需定义固定地址的m区或定义内部数据块,动态实现。具体而言,采用本发明的pointer型指针变量前,对于串行数据收发功能的使用,要先定义plc的m区作为变量收发存储区域。在收发程序处理数据时,要转化成数组,然后才能进行批量的计算。采用本发明的pointer型指针变量后,对于串口收发数据的计算,直接通过pointer型指针变量指向数组。因此,无需再通过内部固定m区定义,或者内部数据块的定义。这样编写程序,简洁、明了,减少了plc内存资源的占用以及大量内部m区的分配问题。

本发明编写程序灵活性大大加强,执行效率大大提升。具体而言,指针变量本身在c语言中有十分强大的应用。plc由于早期核心芯片速率底、内存小,在iec61131-3标准中,没有提到指针变量的应用。在近几年的plc开发中,由于核心芯片的不断升级换代,指针变量也得以在plc中实现应用。这样,对于高级语言编写plc程序时,可大大加强程序的灵活性,同时,也能提升plc程序的执行效率。通过对比,就串行通讯程序,可平均缩减50%以上代码量。

该基于st语言指针变量的可编程控制的方法,还包括plc数据块复制流程,该plc数据块复制流程的流程图如图所示。图2中,该plc数据块复制流程包括如下步骤:

步骤s01′定义类型为pointer的第三指针变量pdest和第四指针变量psrc:本步骤中,定义类型为pointer的第三指针变量pdest和第四指针变量psrc。可以通过如下方式定义:pdest:pointer;psrc:pointer。

步骤s02′定义数组长度为n、类型为byte型的第三数组data3和第四数组data4:本步骤中,定义数组长度为n、类型为byte型的第三数组data3和第四数组data4,其中,n为大于1的整数。本实施例中,n的大小为100。可以通过如下方式定义:data3:array[1..100]ofbyte;data4:array[1..100]ofbyte。

步骤s03′将第三数组data3的地址赋值给第三指针变量pdest,将第四数组data4的地址赋值给第四指针变量psrc:本步骤中,将第三数组data3的地址赋值给第三指针变量pdest,将第四数组data4的地址赋值给第四指针变量psrc。具体通过如下程序实现:pdest=&data3;psrc=&data4。

步骤s04′将第四指针变量psrc指向的长度为n的plc数据块复制到第三指针变量pdest指向的plc数据块:本步骤中,将第四指针变量psrc指向的长度为n的plc数据块复制到第三指针变量pdest指向的plc数据块。具体可以通过如下程序实现:nw_nencopy(dest:=pdest,src:=psrc,length:=100);其中,nw_nencopy为数据复制功能块,dest为目标地址,src为源地址,length为plc数据块的长度。上述程序实现的是将将第四指针变量psrc指向的长度为100的plc数据块复制到第三指针变量pdest指向的plc数据块。通过上述步骤s01′至步骤s04′实现plc数据块复制。

对于plc来说,通常编程语言都采用符合iec61131-3的标准来进行开发。对于指针变量,iec61131-3的标准中没有提到。从市场上各类国内外plc编程软件的比较来看,目前也没有替代方案可实现本发明的pointer型指针变量功能。

总之,由于cpu主芯片功能的提升,本发明设计了一种基于可编程控制器st语言的pointer型指针变量,应用于plc控制系统编程。本发明将c语言的指针变量应用于plc的st编程语言。是在符合iec61131-3标准的基础上,对plc编程语言的一个创造性移植应用。本发明能大大减少代码量,无需定义固定地址的m区或定义内部数据块,动态实现,编写程序灵活性大大加强,执行效率大大提升。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1