一体化工程和一体化运维的转变_第二章 以标准化思想设计程序基本单元(下)

文章摘要

说明专栏的内容规划和相关的技术发展趋势,针对一体化工程和一体化运维进行讲解和阐述。

课程简介

亮点介绍

介绍西门子过程自动化相关的前沿技术、发展方向、应用技巧等。

剖析西门子过程行业数字化工程实现及自动化技术探索,了解数字化工程中自动化技术的发展及应用。

介绍先进的自动化工程理念,开拓工程师思路,从设计、编程调试到运维的一体化工程思维。

用户收益

您将收获:

1.掌握PCS 7及 PCS neo相关使用技巧、经验及最新技术发展;

2..了解过程工业中数字化工程的实现方法以及建立数字化工程中工程师所需的技能等;

3.了解西门子过程控制系统的数字化发展方向

4.了解西门子过程控制系统如何适应数字化发展,如何挖掘过程控制系统潜力以满足现代化工厂需求。

适用人群

适用于自动化从业人员,如设计院设计人员,系统集成商编程调试人员,工厂操作维护人员,大中院校相关专业学生等

漫谈SCADA进阶之路15

会员

1091人已观看 2023-01-13

本文版权归西门子1847工业学习平台所有,未经允许,不得转载。
注册领体验会员

文章摘要

说明专栏的内容规划和相关的技术发展趋势,针对一体化工程和一体化运维进行讲解和阐述。

文章内容

15、REST接口初探之 REST

书接上文。

 

REST诞生于Roy Thomas Fielding的一篇博士论文中。在这篇论文中,首次提出了REST(Representational State Transfer)表述性状态转移。就像它的名字,不管是英文还是中文,都是那么拗口不好理解一样,其实它的理念同样不是那么容易理解。或许还有其它一些商业上的原因,导致这个术语及相关的概念很长一段时间里,并未被广泛地应用到实际中。

REST并不是一种全新的通信协议,也不是一种通信规范。作为HTTP协议(V1.0及V1.1两个版本)的主要设计者及Apache服务器作者之一,Roy 对Web应用有着深刻的理解。基于他的理解,他提出了一种软件架构的设计风格,命名为REST。REST提出了架构设计的一些约束条件和原则。主要包括无状态、缓存、统一接口、分层系统、客户端服务器等约束条件和原则。如果一个Web应用的架构符合这些条件,那么就可以称它是RESTful 的。通常Web应用都是通过一些API接口来暴露相应服务的,此时就称这些API是 RESTful 的。

本文不打算跟大家去讨论这些晦涩的约束条件和原则。如果你打算为自己的Web应用,增加对外提供访问的 RESTful API接口,那么建议你去仔细研究下这些约束条件和原则。以便你设计的 API 接口能被客户端顺畅地访问。

对于一种交互行为,SOAP的做法是先有动作,然后有参数。例如,对MP277的SOAP访问,是先定义了GetValue这个动作。为了执行这个动作,还需要为其提供一个参数,即动作是作用在哪个实体上的。类似的,OPC XML-DA 的数据交换中,也是先有 Read这个动作,然后再给出参数,要读哪个或哪些变量。并且大家可以看出,同样都是一个读的操作,就有GetValue和Read两个不同的名称。这种多样性其实给使用者带来了一定的麻烦。另外,SOAP是基于XML语言的。很明显,XML语言并不是一种简洁的表示语言。在描述性文本格式中,JSON格式因其结构轻巧,且与面向对象的Object更易结合,而越来越受欢迎。

同样对于一种交互行为,REST的做法是先有名词,而后有动词。这里面的名词,通常就是我们要访问的对象。这更符合面向对象的思考方式。而这些对象,通常就是我们要访问的网络资源。对于动词,即交互的动作,其实大部分应用就是创建新值、读取现值、更新旧值及删除旧值。

通过前面的HTTP讨论,大家应该看出来了,这四个动作其实就是HTTP的四种请求方法。对于要访问的对象,网络资源,可以通过URL来表示。而URL是HTTP请求的一部分,完全可以由HTTP来实现。对于向资源发起的动作,可以通过HTTP的请求方法来区分。这样,借助HTTP协议本身的特性,REST就可以完成数据交互的操作。由于HTTP的标准使用非常广泛,因此REST就变得更易于使用,而且更通用。

下面以WinCC V7.5 SP2的REST接口来说明。

为了读取WinCC变量tag01的值,访问REST接口的 HTTP 报文如下所示:

先分析下“请求行”中的内容。

 GET:这是REST中对资源的操作方式。GET表示获取,这里代表“读”操作。

/WinCCRestService/tagManagement/Value/tag01:这个URL路径是相对的。

“WinCCRestService”表示访问的是WinCC 的REST服务。

“tagManagement”表示是针对变量管理相关的访问。

“Value”表示对变量值相关的操作。因为请求方法是GET,可知应该是读变量的操作。同时由于Value使用的是单数形式,表明是读一个变量值的操作。读哪个变量呢?

“tag01”就是要读的变量名称。

这样,通过请求方法及请求URL就明确了本次操作是要读取tag01数值。

Authorization: Basic d2luY2M6c2llbWVucw==:因为通过REST接口访问WinCC的变量,WinCC需要客户端提供身份认证。这里的参数用于提供用户名及密码。

Host: cc75:34568:这里给出了要访问的主机名称及端口号。

我们可以将上述的报文与SOAP的读数据的报文比较一下,不难发现该报文的结构更小巧,语义上也更易于理解。如果要访问多个变量,那么“请求”报文会变为如下的样子。

请求URL中的 Value会写成 Values。这很好理解,复数表示要读的变量不只一个。既然要读多个变量,那自然需要告诉REST接口各个变量的名称。显然此时将各个变量名称列在请求URL中并不是一种好办法。所以,将多个变量名称放到 HTTP 的Body中就是顺理成章的事情。所以在Body中增加了一个由 { } 括起来的对象,该对象的名称是variableNames,值是一个列表。列表中包含了两个变量名称 tag01 和tag02。

不管是读单个变量,还是读多个变量,REST接口的响应看起来也更简洁些。如下是读取多个变量时的响应内容。

“响应行”及“响应头”完全符合HTTP的规范。“响应体”中的JSON格式内容,简洁且表达清晰。使用JSON解析功能很容易得到不同变量的类型、当前数值、时间戳、质量代码及错误代码等信息。

通过这些讨论,我们可以看出。所谓的REST架构,其实就是充分利用HTTP的请求URL来构成语义及逻辑更清晰的资源对象。针对这个资源对象,充分利用HTTP自有的请求方法,来完成对资源对象的常用操作。同时利用JSON数据格式的简洁与易操作性。从而实现以一种更便捷的形式,来对Web服务中各种资源的读写访问。

至此,以HTTP为基础,我们已经讨论了两种Web访问技术SOAP及REST的理念及实现的差异。我们无意评价其好坏,存在即合理,各有各的应用场合。本文的讨论只是基于技术的角度,试图去揭示这些技术之间的关联。目的是希望广大会员朋友能真正理解当下流行的 REST,到底是什么,怎么工作的。另外,通过对相关概念的理解,也方便大家在应用REST的时候,有的放矢地进行调试。

由于文章篇幅及个人能力的限制,作为一个OT工程师,我不敢保证文中所述之IT技术关键点绝对全面、绝对专业。谬误之处,欢迎不吝指正。若本文对你理解REST概念起到了抛砖引玉的效果,则足矣。

 

【声明:本文/视频版权归西门子1847工业学习平台所有,未经允许,不得转载。】

可试看部分内容,登录后可免费观看完整内容

学习中遇到技术问题,速点 ,最快2分钟有解决答案!
亮点介绍

介绍西门子过程自动化相关的前沿技术、发展方向、应用技巧等。

剖析西门子过程行业数字化工程实现及自动化技术探索,了解数字化工程中自动化技术的发展及应用。

介绍先进的自动化工程理念,开拓工程师思路,从设计、编程调试到运维的一体化工程思维。

用户收益

您将收获:

1.掌握PCS 7及 PCS neo相关使用技巧、经验及最新技术发展;

2..了解过程工业中数字化工程的实现方法以及建立数字化工程中工程师所需的技能等;

3.了解西门子过程控制系统的数字化发展方向

4.了解西门子过程控制系统如何适应数字化发展,如何挖掘过程控制系统潜力以满足现代化工厂需求。

适用人群

适用于自动化从业人员,如设计院设计人员,系统集成商编程调试人员,工厂操作维护人员,大中院校相关专业学生等

62

关注

7269

浏览

23

订阅

49

收藏

2

作品

漫谈过程自动化

已完结 共12集
1. 一体化工程和一体化运维的转变_前言
2. 一体化工程和一体化运维的转变_第一章
3. 一体化工程和一体化运维的转变_第二章

3.1 以标准化思想设计程序基本单元(上)

会员

3.2 以标准化思想设计程序基本单元(中)

会员

3.3 以标准化思想设计程序基本单元(下)

会员
4. 一体化工程和一体化运维的转变_第三章
5. 一体化工程和一体化运维的转变_第四章
注册领体验会员

相关推荐