加载中…

加载中...

第二讲TAP下的C脚本编程概述

转载 2018-07-11 19:18:38

小龙:   你好!今天我们开始一起学习编程

工艺师编程一直觉得是件很神秘很高深的事啊.

小龙:   哈哈!对我这个程序员来说,你的专业也很神秘很高深啊

工艺师隔行如隔山,还真是这样

小龙:   是啊,不过我一直觉得编程与其说是种行业,不若说是种技能

工艺师哦?为什么?

小龙:   因为计算机的应用越来越广泛,越来越深入啊。就拿工业领域来说吧,自动化技术普及程度越来越高工艺过程的在线优化模型也开始普及,这些模型都需要编程来实现.

工艺师嗯,确实是这样.那我们工艺师也要编程吗?

小龙:   是的,因为工艺师才是开发工艺模型的最佳人选.

工艺师这个我同意.前面也和你探讨过这个问题.不过编程似乎还是件挺神秘的事

小龙:   可是实际上你每天都在编程啊

工艺师哦?我怎么不知道?

小龙:   你每天都用电饭煲做饭吧?

工艺师是啊,这和编程有什么关系呢?

小龙:   你每次用电饭煲做饭前都要设置煮饭模式和时间,然后按下开始键,是吧?

工艺师是啊,这难道也算编程吗?

小龙:   当然其实每个电饭煲里都有一个小型电路,相当于一个小电脑,你做的这些操作其实就是在给它定义操作流程,这就是编程啊。

工艺师你的意思是说编程就是告诉电脑该做哪些操作,按什么顺序做吗?

小龙:   是的编程的本质其实就是用程序把一个完整的操作流程讲给电脑听,让它按着这个流程完成你需要的任务.

工艺师原来如此,不过我还是觉得电脑编程和我操作电饭煲完全不同啊.

小龙:   嗯,本质相同,但用途和描述流程的方式不同。电饭煲编程是用来做饭,电脑编程是用来处理数据电饭煲编程用按键电脑编程要用专门的编程语言.

工艺师编程语言?

小龙:   是的.所谓编程语言,就是一种描述数据处理流程的方式,程序员用编程语言定义出一个流程,再提交给计算机去执行计算机会严格的按这个流程来处理数据因为这种描述流程的方式采用了类似人类语言的形式所以被称作编程语言.

工艺师好像有一点点理解了。虽然不懂编程,但对编程语言倒是有所耳闻.经常听说什么C语言,C++,C#,Basic, JAVA什么的,这些都是编程语言吗?

小龙:   是的

工艺师为什么要弄出那么多编程语言,不能大家只用一种语言呢?

小龙:   这个问题说起来还挺复杂的.有些语言是针对特定应用领域设计的专门用来描述该领域的处理流程,这方面最典型的是用于数据库操作的SQL语言和开发人工智能的Prolog语言还有一些语言用来描述一般性的处理流程,可用来开发几乎所有类型的应用程序,所以一般被称为通用语言典型的如你刚才提到的C语言,C++,C#, Basic,JAVA。这一类语言之所以种类很多大多是历史和商业因素造成的很多公司都希望占据编程工具市场,所以会推出自己的编程语言,结果就形成了现在这种百花齐放的局面了.

工艺师原来如此.那我该学哪种语言呢?

小龙:   我觉得通用语言一般学一两种就足够了,如果是定义特定领域的流程,还是用专用语言好一些.

工艺师TAP编程是用那种语言呢?

小龙:   TAP是一种基于脚本的编程方式,采用了C语言的语法

工艺师什么是脚本编程方式和一般的编程有什么不同吗?

小龙:   一般的编程方式我叫它软件编程”, 因为这种编程的结果是产生一个可以独立运行的软件或程序要运行这个软件只需把它安装或者拷贝到硬盘上,然后双击这个程序的图标就可以了。我们经常使用的Windows下的各种应用软件都是软件编程的结果.

工艺师明白了,所谓软件编程就是能产生可以独立运行的程序,那脚本编程有什么不同吗?

小龙:  脚本是指由用户编写的执行特定功能的一小段代码这些代码从功能上说附属于某个独立软件该软件提供一个运行环境,并且在满足特定条件时调用脚本.所以用脚本编程编出的程序不能独立运行,只能依附于特定软件提供的运行环境。

工艺师: TAP也是这种提供运行环境的独立软件呢?

小龙:   是的,TAP是一个用脚本编程方式开发工艺模型的编程工具,也为工艺模型提供了运行环境工艺人员用TAP开发模型其实就是用TAP编写 多个脚本,然后在TAP下运行这些脚本.

工艺师懂了采用C语言的语法又是怎么回事呢?

小龙:   脚本也是一段小程序自然也要有用编程语言来写每种语言都有自己的语法, TAP下的脚本采用了C语言的语法.

工艺师那和C语言编程有什么差别吗?

小龙:   如果把C语言编程比作用中文写小说, TAP下的C脚本编程则像是用中文写下的一些文字片段两者都用同一种语言,同一种语法,但规模和结构的完整性有很大差别.

工艺师那用TAP编程实际上就是写一段一段的脚本了?

小龙:   是的.

工艺师这些段落式的脚本如有组成一个完整的工艺模型?TAP如何调用这些脚本程序呢?

小龙:   TAP实现了一个统一的工艺过程框架,在这个框架下包含了各种各样的事件”,每个事件都可以与一段脚本对应起来当该事件被触发时, TAP就会调用与其对应的脚本这就是所谓事件驱动”.

工艺师:  事件驱动?

小龙:    是的,后面介绍TAP编程时会详细介绍TAP下事件的涵义和事件驱动机制,这里只需要记住:不同片段的脚本是通过事件驱动机制连接为一个完整的工艺模型就可以了.

工艺师:  好的。是否可以这样理解我在TAP下开发工艺模型,不需要学习完整的C语言编程只需学习一小部分C语言的语法,再加上一些TAP 的支持功能就可以了呢?

小龙:   没错,其实C语法部分只需要学习变量”,”函数”,”代数运算逻辑分支这四个最基本的要素就可以了。

工艺师只要学这么少的内容吗?

小龙:   是的.足够了。

工艺师这四个要素都是做什么的呢?

小龙:   我们先来看一小段TAP下的模型脚本吧,

工艺师好的。

小龙为方便工艺人员学习TAP编程,TAP在安装时自带了一个名为Demo的示例项目,下面就是该项目中的一段脚本代码.

工艺师哦,这就是TAP下的C脚本吗?

小龙:  是的,我们先不管这段脚本的功能,先看脚本的内容.我把代码先列出来.

        int main()

     {

          int var1=0;

          char buf[50];

    

          var1=100*2+20;

        

          //获取当前数据对象名

          DataGram_Get_Name(buf,20); 

 

          //如果名称为opc-vars则触发事件

          if(strcmp(buf,"opc-vars")==0)

              return 1;

          else

              return 0;

     }

工艺师第一次看到C语言写的程序,有点像天书.哈哈!

小龙:   第一次嘛,看不懂正常其实能看懂这几行代码,就基本掌握了TAP下编程所需的C语言语法了,

工艺师哦?就把这几行代码看懂就行了? 这么简单?

小龙:   是啊。下面我先做个概念性的介绍后面几讲会就其中的每个语法要素做单独讲解

工艺师好啊!

小龙:   还记得前面我们提到的关于编程本质的讨论吗?

工艺师记得,你说过编程就是用特定的语言描述一个数据处理流程然后把这个流程提交给计算机执行.

小龙:   没错!如果把这句话作为编程的定义这里面就包含了编程所需的最核心的一些细节.

工艺师哪些细节呢?

小龙:  请注意这里的几个关键词: <</span>数据>, <</span>处理流程>,<</span>提交>, <</span>执行>

工艺师这几个关键词说明了什么呢?

小龙:   这个词揭示了编程的核心步骤我们先以这几个关键词做参照试着读一下上面列出的TAP脚本代码吧.

工艺师好的.

小龙:   先来看<</span>数据>. 你在工作中也会处理各种工艺数据,在处理数据前你先要做哪些工作呢?

工艺师当然是先收集数据,然后把他们按一定的格式记录在纸上或者电脑中啊.

小龙:   嗯!我们可以把这称作对数据的预处理”, 其任务就是收集和存储数据.

        正如前面介绍的,编程就是给计算机描述一个数据处理流程,所以和你自己处理数据一样这个流程的第一步也要告诉计算机把数据存在哪里.

工艺师哦,那程序里是怎么存储数据的呢?

小龙:   程序里用<</span>变量>来存储数据,

工艺师变量?

小龙:  是的,让我们看上面程序中的第三行:

      intvar1=0;

工艺师这里的var1就是你说的程序中存储数据的变量吗?

小龙:  是的你自己处理数据时先要做的就是要找到存储数据的容器比如纸张,或者电脑里的一个Word文档而编程时第一件要做的事也是要定义出所有用来存储数据的变量就像上面这一行程序所展示的那样在程序的起始处先定义了一个名字为”var1”

的变量

工艺师哦,变量都要有名字吗?那前面的int是什么意思呢?

小龙:   是的,变量必须要有一个名字这样后面的代码中才能使用这个变量。这里的int 是英语Integer的缩写说明变量用来存储整型数据变量定义的细节我会在后面详细介绍,这里只需记住一段程序首先要做的,就是定义出存储数据所需的变量,这样后面的数据处理流程才知道从哪里取数据,把处理的结果放到哪里.

工艺师嗯!明白了,那代码中的第4

char buf[50];

是不是定义了一个叫做buf的变量呢?

小龙:  是的,看来你已经学会变量定义了啊

工艺师哈哈!还早呢.不过概念上有一点理解了,编程第一步要做的就是定义存储数据用的变量,还要给变量起个名字.

小龙:   没错,变量定义好了下一步就要把要处理的数据放入变量中,在编程中这叫做变量赋值

工艺师int var1=0; 这一行是不是就是把数据0赋给了变量var1呢?

小龙:  是的,这是一种最简单的赋值方式,你看后面紧接着的一行

DataGram_Get_Name(buf,20);

这是给变量buf赋值但形式要比给var1赋值复杂了.

工艺师是的.

小龙:   这一行我后面在<</span>函数>部分也会详细解释,现在先了解它是给变量buf赋值就可以了

工艺师明白.

小龙现在回顾一下我们上面提到的编程的核心要素: <</span>数据>, <</span>处理流程>,<</span>提交>,  <</span>执行>, 在例子程序中我们通过定义变量变量赋值完成了第一个环节<</span>数据>部分的数据存储和收集工作下一步我们来看看程序里与<</span>处理流程>对应的内容。

工艺师好的.

小龙:   你处理工艺数据时,在完成数据收集和存储后会接着做些什么呢?

工艺师当然是对数据进行各种计算.

小龙:   嗯!就是上面四个要素中<</span>处理流程>要完成的工作。一般来说,程序中的处理流程包含了下面几个内容:

1.数学运算

2.逻辑判断

3.逻辑分支

4.函数

5.计算结果的输出

工艺师哦,感觉和我自己做工艺计算的过程差不多.数学运算和逻辑判断好理解,逻辑分支是什么?

小龙:   逻辑分支是指根据不同的计算结果对数据进行不同的处理.让我们再看一下例子程序中和<</span>处理流程>对应的部分

工艺师好的

小龙:   

var1=100*2+20;

                //获取当前数据对象名

          DataGram_Get_Name(buf,20); 

          //如果名称为opc-vars则触发事件

          if(strcmp(buf,"opc-vars")==0)

              return 1;

          else

              return 0;

 

工艺师:  var1=100*2+20,这一行就是数学运算吗?

小龙:   是的,计算结果被存储到了变量var1

工艺师后面的几行里有个if else组合,这就是你说的逻辑分支吗?

小龙:   没错

工艺师从字面上看,似乎是对变量buf的内容和”opc-vars”做了个比较,然后根据不同的结果return 了不同的值是这样吗?

小龙:  你已经基本看懂这段代码了。这就是C语言里常用的一个逻辑分支结构 ,后面我会对这个结构做详细解释,这里只需要对逻辑分支的基本概念和形式有个直观印象就可以了.

工艺师好的.是不是还有其它逻辑分支结构呢?

小龙:   有的,不过数量很少,形式也很简单,很容易掌握.后面也会详细介绍

工艺师嗯!下一个是函数,这里说的函数和数学里说的三角函数是一回事吗?

小龙:   不一样这里的函数是指工艺人员自己定义的一段代码,有时候我们希望把一段完成特定功能的代码独立出来,供程序的其它部分重复使用,就可以把这段代码定义为一个函数。关于如何定义和使用函数的细节,后面会有单独课时详细介绍

工艺师好的.

小龙:   例子程序中的代码虽然只有几行,却展示了数据<</span>处理流程>中的核心内容: <</span>数学运算>,<</span>逻辑判断><</span>逻辑分支>, 如果在加上前面提到的<</span>变量定义>, 只要掌握了C语言中和这四部分相关的基本语法,就可以自己编写TAP下的C语言脚本了,这部分知识的内容很少,形式也很直观,很容易掌握.

工艺师哦,除了这三部分外,还有一个<</span>计算结果的输出>,这部分在C语言中该怎么做呢?

小龙:   这部分确实比较复杂,因为计算结果的输出对象可以有很多,比如电脑屏幕,文件,打印机,网络页面等等,输出形式 也多样既可以是文字也可以是图形图像声音或动画所以在一般的C语言编程中,这部分的内容是很庞杂的. TAP因为是用于工艺模型开发,计算结果的输出对象主要是到工艺画面所以比一般的C语言编程要简单很多,只要按照TAP的规范改变工艺画面的显示内容就可以了,很容易掌握这部分在后面TAP编程的介绍中会详细介绍.

工艺师知道了.

小龙:  现在我们已经介绍了编程的四个核心要素: <</span>数据>, <</span>处理流程>,<</span>提交>,  <</span>执行>中的前两部分即<</span>数据><</span>处理流程>,现在来看第三部分 <</span>提交>

工艺师这部分是做什么呢?

小龙:   在上两个步骤中我们已经编写了一段C语言脚本,它描述了一个完整的数据处理流程不过是用文本的方式描述的因为计算机本身理解不了这些文本的内容所以必须翻译成计算机能看懂的语言,这个翻译过程就是<</span>提交>, 专业的叫法是<</span>编译>.

工艺师哦,好像听专业程序员经常提起编译这个词,是不是可以理解成把我自己用文本编写的程序代码翻译成计算机的执行代码呢?

小龙:   完全正确不过TAP下的编译有一点点不同,翻译的结果不是计算机的执行代码,而是TAP运行环境下的执行代码.不过这个工艺人员知道就可以了,所有细节TAP会自己处理

工艺师那用TAP编译中需要我做些什么呢?

小龙:   编译是由TAP自动完成的不过在编译前,TAP会检查你的程序代码中是否有语法错误有的话会终止编译,并把错误提示给你,你只要改正这些错误后再次编译直到没有错误为止剩下的编译工作就交给TAP, 无需你做任何工作。其实用TAP之外的编程工具编译,过程也大体如此.下面我们可以看一下例子程序的编译画面截图:

              TAP建模工具的菜单中选择<</span>编译当前脚本>启动对例子脚本的编译

        编译完成后,结果就显示在截图下部所显示的窗口中.

工艺师明白了.

小龙:   <</span>提交>这个步骤也处理完了,下面就要最后一个阶段<</span>执行>

工艺师这好理解,就是运行我编写的程序.

小龙:   是的不过对程序的开发者来说,<</span>执行>阶段还有一个重要工作,就是对你的程序进行调试,看看程序中是否有错一般编程工具都会提供这方面的支持, TAP也提供了针对工艺模型的调试工具.这是很重要的一个步骤,编程中有句行话叫三分编,七分调”,就是说调试要占整个开发过程的七成时间对工艺模型来说这也是深入模型的算法内部,找出算法失效原因并进行改进的关键一步.

至于TAPC脚本的运行需要先启动TAP运行环境,然后加载并启动你的工艺优化项目项目中的C脚本会在适当的时候被调用运行.这个过程后面介绍TAP编程时也会详细介绍.

工艺师上面你不是说编译时TAP会自动找出程序的错误吗?

小龙:   编译时找出的是语法错误,调试是针对你的工艺算法本身可能存在的问题.

工艺师哦,就是说我的工艺算法是不是有效,要靠调试才能发现?

小龙:   是的.这就像我们写文章一样,语法可能没错,但意思表达错了,编译只能发现语法的问题但意思表达是否正确只能靠调试了

工艺师:  明白了.

小龙:    在本段课时的最后我们再回顾一下编程的四个核心要素及其对应的TAP下的C脚本知识。

工艺师:  我来试着总结一下,左面一列是编程的一般流程中的四个环节,右面分别列出了每个环节对应的语言知识:

<</span>数据à 变量,变量赋值

<</span>处理流程>à 数学运算逻辑判断逻辑分支函数计算结果输出

<</span>提交à 编译

<</span>执行à 调试运行

小龙:   非常棒!你总结的内容,其实就是TAPC脚本编程所需的知识框架了,从下一课时开始,我们围绕例子程序的内容循着这一框架,逐一介绍知识的细节下一课时我们讨论的主题是变量和变量赋值

工艺师好的。


阅读(0) 评论(0) 收藏(0) 转载(0) 举报/Report

评论

重要提示:警惕虚假中奖信息
0条评论展开
相关阅读
加载中,请稍后
灏忛緳
  • 博客等级:
  • 博客积分:0
  • 博客访问:29,505
  • 关注人气:0
  • 荣誉徽章:

相关博文

推荐博文

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有