本发明涉及一种程序调试方法,以监控程序中变量的状态,尤其涉及一种逻辑控制器的程序调试方法。
背景技术:
C语言是一种通用的、过程式的编程语言,目前已应用于逻辑控制器中控制程序的开发,且由C语言变形的逻辑控制器控制程序具有高效、灵活、功能丰富、表达力强和较高的可移植性的特点。
发明人已知的逻辑控制器中,C语言编写的控制程序在运行时需打包成.so文件,无法对文件内的程序变量进行观测,亦无法对程序变量进行数据记录。当前对C语言编写的控制程序无法精确地调试,只能凭借编程工程师对于程序的熟悉程度,判断程序的运行结果,然后修改程序,这种方法大大浪费的工程调试时间,且无法精确判断问题点。
技术实现要素:
本发明的目的是提供一种逻辑控制器的调试方法,以便于监测C语言编写的控制程序中的程序变量。
本发明的一个方面提供了一种逻辑控制器的调试方法,其中逻辑控制器中运行有一个基于西门子的TIA-Portal工程软件平台的控制程序。调试方法包括在逻辑控制器的西门子编程框架下编写一个C语言控制程序,且C语言程序包括至少一个程序变量;基于西门子的TIA-Portal工程软件平台,编写一个使得控制程序连接于C语言控制程序的接口函数,接口函数能够读取程序变量且由控制程序生成一个对应于程序变量的数据文件;在逻辑控制器中定义一个能够被远程访问的网络服务器界面,网络服务器界面能够连接至TIA-Portal工程软件平台以读取数据文件,且网络服务器界面能够显示C语言控制程序的运行情况。
使用逻辑控制器的调试方法,用户不需对西门子编程有特殊的培训,只需简单编写接口函数既能实现对C语言控制程序的调试监控。通过网络服务器界面监控C语言控制程序的运行,能够实现多个逻辑控制器的协同工作。在C语言控制程序的调试中,不需要获得C语言控制程序的源程序即可查看程序变量的状态。
在逻辑控制器的调试方法的再一种示意性的实施方式中,C语言控制程序在Eclipse编程环境下开发,且接口函数由西门子的SCL语言编写。
在逻辑控制器的调试方法的另一种示意性的实施方式中,运行情况包括C语言控制程序的程序运行时间、C语言控制程序的函数身份信息、程序变量的数值、和经过函数运算后函数变量的返回值。
在逻辑控制器的调试方法的又一种示意性的实施方式中,网络服务器界面设置有一个第一触发按钮,当访问网络服务器界面的一个远程终端触发第一触发按钮时,调试信息以文本文件的形式下载至远程终端。上述方式能够方便远程终端监控C语言控制程序的运行
在逻辑控制器的调试方法的又一种示意性的实施方式中,通过接口函数,控制程序能够读取程序变量中的全局变量,并记录全局变量在复数个C语言控制程序的程序循环周期中的变量值,且生成一个用于存储这些变量值的监控文本文件。
在逻辑控制器的调试方法的又一种示意性的实施方式中,接口函数能够生成与全局变量相对应的复数个地址信息,且平台控制程序通过地址索引的方式由地址信息读取全局变量的变量值。
在逻辑控制器的调试方法的又一种示意性的实施方式中,平台控制程序包括一个数据记录函数,数据记录函数通过地址索引的方式由地址信息读取全局变量的变量值。
在逻辑控制器的调试方法的又一种示意性的实施方式中,网络服务器界面设置有一个第二触发按钮,当访问网络服务器界面的一个远程终端触发第二触发按钮时,控制程序读取全局变量的变量值并生成监控文本文件。
在逻辑控制器的调试方法的又一种示意性的实施方式中,平台控制程序包括一个能够连接于C语言控制程序中数据记录函数的历史记录函数,历史记录函数能够记录C语言控制程序中全局变量在多个C语言控制程序的程序循环周期中的变量值。
在逻辑控制器的调试方法的又一种示意性的实施方式中,平台控制程序能够通过西门子的TIA-Portal工程软件平台自带的Trace功能函数记录C语言控制程序中全局变量在多个C语言控制程序的程序循环周期中的变量值。
附图说明
以下附图仅对本发明做示意性说明和解释,并不限定本发明的范围。
图1用于说明逻辑控制器的调试方法的功能架构。
图2显示了逻辑控制器的调试方法的流程。
图3用于说明逻辑控制器的调试方法另一种示意性实施方式的功能框架。
标识说明
10 工作存储区
20 装载存储区
30 访问存储区
40 远程终端
50 互联网
60 SCL语言环境
62 地址数据库
70 C语言环境
72 数据缓存区
P1 C语言控制程序
P2 控制程序
P3 接口函数
F1 数据记录函数
F2 历史记录函数
F3 数据函数。
具体实施方式
为了对发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式,在各图中相同的标号表示相同的部分。
在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。
为使图面简洁,各图中的只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。
在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
在本文中,“第一”、“第二”等仅用于彼此的区分,而非表示它们的重要程度及顺序、以及互为存在的前提等。
图1用于说明逻辑控制器的调试方法的功能架构。如图1所示,逻辑控制器的系统平台包括一个工作存储区10、一个装载存储区20、和一个访问存储区30。由C语言编写的逻辑控制器的C语言控制程序P1,以及基于西门子的TIA-Portal工程软件平台的逻辑控制器的平台控制程序P2运行于工作存储区10。
其中,C语言控制程序P1是在西门子定义的编程框架下编写。在逻辑控制器的调试方 法一种示意性实施方式中,C语言控制程序P1是在西门子的Eclipse编程环境的框架下编写开发,从而使得C语言控制程序具有与西门子编程环境连接的接口。接口函数P3是基于西门子的TIA-Portal工程软件平台的框架下由SCL语言编写开发的。平台控制程序P2和C语言控制程序P1之间通过接口函数P3实现数据交换。
C语言控制程序P1和平台控制程序P2在运行中所生成的数据存储于装载存储区20。访问存储区30中存储有一个网络服务器(web server)界面,它能够被远程终端40远程访问。
图2显示了逻辑控制器的调试方法的流程。参见图2和图1,逻辑控制器的调试方法包括如下流程。
在步骤S10中,在西门子编程框架下,具体而言,基于西门子的Eclipse编程环境,使用C语言编写用于实现逻辑控制器控制的C语言控制程序P1。西门子编程框架的具体结构和要求可参见西门子全集成自动化软件平台的帮助文档。而后进入步骤S20。为了实现逻辑控制器的控制功能,C语言控制程序P1中涉及了多个程序变量,且这些程序变量的部分为全局变量。
在步骤S20中,基于西门子的TIA-Portal工程软件平台,使用SCL语言编写一个接口函数P3。接口函数P3使得C语言控制程序P1连接于平台控制程序P2,使得平台控制程序P2能够通过接口函数P3读取C语言控制程序P1的程序变量。另外,平台控制程序P2获取到C语言控制程序P1中程序变量的数值和参数后能够生成一个数据文件,且这个数据文件中存储有C语言控制程序P1中程序变量的数值和参数。这个数据文件反映了C语言控制程序P1执行到当前时间点的输出结果,从而可以达到对C语言控制程序的调试监视。这个数据文件存储于装载存储区20。而后进入步骤S30。接口函数P3的编写和使用可参见西门子全集成自动化软件平台的帮助文档,在此不再赘述。
在步骤S30中,在逻辑控制器中编辑定义一个网络服务器界面,这个网络服务器界面能够被远程终端40通过互联网50访问。网络服务器界面连接至TIA-Portal工程软件平台中运行的平台控制程序P2,具体的连接方法可参见西门子全集成自动化软件平台的帮助文档,在此不再赘述。通过网络服务器界面与平台控制程序P2的连接,网络服务器界面能够读取装载存储区20中存储的数据文件,从而使得远程终端40能够通过网络服务器界面显示C语言控制程序的运行情况。
使用逻辑控制器的调试方法,用户不需对西门子编程有特殊的培训,只需简单编写接口函数既能实现对C语言控制程序的调试监控。通过网络服务器界面监控C语言控制程序 的运行,能够实现多个逻辑控制器的协同工作。在C语言控制程序的调试中,不需要获得C语言控制程序的源程序即可查看程序变量的状态。
在逻辑控制器的调试方法一种示意性实施方式中,C语言控制程序的运行情况包括C语言控制程序的程序运行时间、C语言控制程序的函数身份信息、程序变量的数值、和经过函数运算后函数变量的返回值。另外,网络服务器界面设置有一个第一触发按钮,当远程终端40点击第一触发按钮时,即第一触发按钮被触发时,C语言控制程序的运行情况以文本文件的形式传输下载至远程终端40,以方便远程终端40监控C语言控制程序的运行。文本文件可以采用CSV格式以方便查看。
在逻辑控制器的调试方法一种示意性实施方式中,通过接口函数P3,平台控制程序P2读取C语言控制程序P1中的全局变量,由平台控制程序P2记录这些全局变量在多个C语言控制程序P1的程序循环周期中的变量值。通过这些变量值,全局变量的变化趋势能够得到监控。平台控制程序P2将这些变量值保存至一个监控文本件,并将监控文本文件存储至装载存储区20。监控文本文件可以采用CSV格式以方便查看。
基于TIA-Portal工程软件平台,平台控制程序P2可以通过TIA-Portal工程软件平台自带的Trace功能函数获得全局变量在多个C语言控制程序P1的程序循环周期中的变量值,具体的设置方法可以参见TIA-Portal工程软件平台的帮助文档。
图3用于说明逻辑控制器的调试方法另一种示意性实施方式的功能框架。如图3所示,在SCL语言环境60中,除了接口程序P3外,平台控制程序P2还包括一个数据记录函数F1、一个历史记录函数F2、和一个地址数据库62。在C语言环境70中,C语言控制程序P1包括一个用于记录C语言控制程序P1中程序变量的数据函数F3和一个数据缓存区72。
C语言控制程序的每个一个全局变量都存储于数据缓存区72,且对应于每一个全局变量都具有一个存储地址。为了方便平台控制程序读取C语言控制程序的全局变量,接口函数P3能够生成与全局变量对应的地址信息,这些地址信息表示C语言控制程序中各个全局变量的存储地址,且这些地址信息存储于地址数据库62。
数据记录函数F1通过接口函数P3连接于数据函数F3,数据记录函数F1通过地址索引的方式,将地址数据库62中的地址信息传递至数据函数F3,由数据函数F3获取得到数据缓存区72中全局变量的变量值后在传递至数据记录函数F1。另外,历史记录函数F2同样通过地址索引的方式读取全局变量,并且记录全局变量在多个C语言控制程序P1的程序循环周期中的变量值。
在逻辑控制器的调试方法一种示意性实施方式中,网络服务器界面还设有一个第二触 发按钮。当远程终端40点击第二触发按钮时,即第二触发按钮被触发时,平台控制程序P2开始记录全局变量在多个C语言控制程序P1的程序循环周期中的变量值,且监控文本件以文本文件的形式传输下载至远程终端40。
应当理解,虽然本说明书是按照各个实施方式描述的,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方案或变更,如特征的组合、分割或重复,均应包含在本发明的保护范围之内。