CN110442076A - 基于st语言指针变量的可编程控制的方法 - Google Patents
基于st语言指针变量的可编程控制的方法 Download PDFInfo
- Publication number
- CN110442076A CN110442076A CN201910596022.1A CN201910596022A CN110442076A CN 110442076 A CN110442076 A CN 110442076A CN 201910596022 A CN201910596022 A CN 201910596022A CN 110442076 A CN110442076 A CN 110442076A
- Authority
- CN
- China
- Prior art keywords
- pointer variable
- data
- pointer
- array
- plc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13138—High level language HLL, structured text ST, resembles pascal
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本发明公开了一种基于ST语言指针变量的可编程控制的方法,包括串行数据收发流程,串行数据收发流程包括:定义类型为pointer的第一指针变量pdata1和第二指针变量pdata2;定义数组长度为N、类型为byte型的第一数组data1和第二数组data2;将第一数组data1的地址赋值给第一指针变量pdata1,将第二数组data2的地址赋值给第二指针变量pdata2;将第一指针变量pdata1指向的N个数据通过串口发送出去;接收串口的数据至第二指针变量pdata2指向的地址。本发明能大大减少代码量,无需定义固定地址的M区或定义内部数据块,动态实现,编写程序灵活性大大加强,执行效率大大提升。
Description
技术领域
本发明涉及可编程控制领域,特别涉及一种基于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]of byte;data2:array[1..100]of byte。在实际应用中,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]of byte。
步骤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区或定义内部数据块,动态实现,编写程序灵活性大大加强,执行效率大大提升。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于ST语言指针变量的可编程控制的方法,其特征在于,应用于可编程控制系统,包括串行数据收发流程,所述串行数据收发流程包括如下步骤:
A)定义类型为pointer的第一指针变量pdata1和第二指针变量pdata2;
B)定义数组长度为N、类型为byte型的第一数组data1和第二数组data2;所述N为大于1的整数;
C)将所述第一数组data1的地址赋值给所述第一指针变量pdata1,将所述第二数组data2的地址赋值给所述第二指针变量pdata2;
D)将所述第一指针变量pdata1指向的N个数据通过串口发送出去;
E)接收所述串口的数据至所述第二指针变量pdata2指向的地址。
2.根据权利要求1所述的基于ST语言指针变量的可编程控制的方法,其特征在于,所述N的大小为100。
3.根据权利要求2所述的基于ST语言指针变量的可编程控制的方法,其特征在于,所述步骤D)通过如下程序实现:sersend(EN:=1,CON:=1,DATA:=pdata1,LENGTH:=100);其中,sersend为串口数据发送功能块,EN为使能状态,CON为串口,DATA为数据指针,LENGTH为发送的字节数。
4.根据权利要求3所述的基于ST语言指针变量的可编程控制的方法,其特征在于,所述步骤E)通过如下程序实现:SerRecv(EN:=1,CON:=1,DATA:=pdata2);其中,SerRecv为串口数据接收功能块,EN为使能状态,CON为串口,DATA为数据指针。
5.根据权利要求1所述的基于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数据块。
6.根据权利要求5所述的基于ST语言指针变量的可编程控制的方法,其特征在于,所述步骤D′)通过如下程序实现:NW_NeNCopy(DEST:=pdest,SRC:=psrc,LENGTH:=100);其中,NW_NeNCopy为数据复制功能块,DEST为目标地址,SRC为源地址,LENGTH为PLC数据块的长度。
7.根据权利要求3所述的基于ST语言指针变量的可编程控制的方法,其特征在于,当EN为1时,开启使能状态,当EN为0时,关闭使能状态。
8.根据权利要求3所述的基于ST语言指针变量的可编程控制的方法,其特征在于,当CON为1时,所述串口为串口1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910596022.1A CN110442076A (zh) | 2019-07-03 | 2019-07-03 | 基于st语言指针变量的可编程控制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910596022.1A CN110442076A (zh) | 2019-07-03 | 2019-07-03 | 基于st语言指针变量的可编程控制的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110442076A true CN110442076A (zh) | 2019-11-12 |
Family
ID=68429361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910596022.1A Pending CN110442076A (zh) | 2019-07-03 | 2019-07-03 | 基于st语言指针变量的可编程控制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442076A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1160671A2 (en) * | 2000-05-30 | 2001-12-05 | Matsushita Electric Industrial Co., Ltd. | Host interface circuit |
CN102395172A (zh) * | 2011-11-16 | 2012-03-28 | 武汉大学 | 一种工业无线网状网络的数据传输方法 |
CN103123598A (zh) * | 2011-11-18 | 2013-05-29 | 中国科学院沈阳计算技术研究所有限公司 | 一种编译型软plc的在线调试实现方法 |
CN108932137A (zh) * | 2018-07-17 | 2018-12-04 | 西安航空学院 | 一种基于推测多线程的汇编级过程间指针分析方法 |
CN109358902A (zh) * | 2018-10-18 | 2019-02-19 | 南京海桐环境科技有限公司 | 一种在simatic s7-200 smart中能够快速便捷创建数组的程序 |
-
2019
- 2019-07-03 CN CN201910596022.1A patent/CN110442076A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1160671A2 (en) * | 2000-05-30 | 2001-12-05 | Matsushita Electric Industrial Co., Ltd. | Host interface circuit |
CN102395172A (zh) * | 2011-11-16 | 2012-03-28 | 武汉大学 | 一种工业无线网状网络的数据传输方法 |
CN103123598A (zh) * | 2011-11-18 | 2013-05-29 | 中国科学院沈阳计算技术研究所有限公司 | 一种编译型软plc的在线调试实现方法 |
CN108932137A (zh) * | 2018-07-17 | 2018-12-04 | 西安航空学院 | 一种基于推测多线程的汇编级过程间指针分析方法 |
CN109358902A (zh) * | 2018-10-18 | 2019-02-19 | 南京海桐环境科技有限公司 | 一种在simatic s7-200 smart中能够快速便捷创建数组的程序 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754329B2 (en) | Automatic distribution of device parameters for commissioning portions of a disconnected process control loop | |
US7098771B2 (en) | Method for offline-parametering of a field device of the process automation technology | |
CN101882812B (zh) | 一种数字化变电站智能电子设备面向对象的实现方法 | |
CN106371847B (zh) | Windows xp系统下CPCI总线RS422通信驱动方法及系统 | |
CN110968052A (zh) | 离散现场设备的智能功能和信号 | |
CN104268074A (zh) | 一种基于dcs系统应用软件在线调试方法 | |
CN103984791A (zh) | 对fpga在运行时的信号值的随机访问 | |
CN107479531B (zh) | 嵌入式plc的接入设备通信协议帧格式信息远程确定方法 | |
CN107992390A (zh) | 一种基于片上总线的芯片调试方法 | |
CN109918081A (zh) | 一种编译方法及编译器 | |
US20050071522A1 (en) | Method for operating a field device | |
CN201075248Y (zh) | 一种usb接口实时数据采集控制器 | |
CN110168456B (zh) | 控制系统、控制装置以及计算机可读存储介质 | |
CN103793263A (zh) | 一种基于PowerPC处理器的DMA事务级建模方法 | |
Wall et al. | Incorporating plug and play technology into measurement and control systems for irrigation management | |
CN103376777A (zh) | 控制器的Modbus通讯接口的测试方法及上位机 | |
CN101178653A (zh) | 一种支持多种处理器的嵌入式系统及方法 | |
CN110442076A (zh) | 基于st语言指针变量的可编程控制的方法 | |
CN105740579A (zh) | 一种连接uvm验证平台的搭建方法 | |
CN116257037B (zh) | 控制器测试程序的生成方法、系统、电子设备及存储介质 | |
Li et al. | An embedded CAN-BUS communication module for measurement and control system | |
Laucelli et al. | WDNetXL: hydraulic and topology analysis integration and features | |
Cámara et al. | Complete IEEE-1451 node, STIM and NCAP, implemented for a CAN network | |
CN110674623A (zh) | 模型化埋件定位信息的读取系统及其方法 | |
CN116074397A (zh) | 一种数据共享系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191112 |