存储PLCNext社区PLCNext. on LinkedInPLCNext. on Instagram  PLCNext. on YouTube github plcnext社区存储PLCNext社区

 

 如何创建博客条目

制造商博客
Hits: 539

改装REST API - 设置反向代理

PLCNext REST接口是一个奇妙的工具,既可以从后端系统呈现和接收数据。休息,或代表国转移,是 一种软件架构风格,包括创建可扩展Web服务的指南和最佳实践。已经有很多很好的信息 PLCNext. infoportal,一定要查看它!如果您可以从下面构建系统,PLCNext固件提供的URI是完美的。但是,如果要在PLCNext上改装现有的REST接口,它们并不理想。此博客将向您展示如何设置自己的URI并将其与变量与反向代理连接。我们从建立一个小小的例子和那里工作!

先决条件

我正在使用带有FW2020.6和PLCNext Engineer 2020.6的AXC F 2152控制器。但是以前的版本稍后,应该可以使用同样的可能性2020.0。我将使用Putty设置一个SSH连接和邮递员来处理我的HTTP请求。我禁用了开发目的的身份验证,您不应该在生产中做同样的事情! PLCNext工程师的说明将获得非常高的级别,不确定该怎么办?看看PLCNext Infoportal和指令视频和/或与示例项目进行比较!我正在使用的控制器拥有IP地址192.168.10.10,请将其更改为您正在使用的IP地址。

例子

在此博客中,我将使用简单的泵UDT作为示例。您可以从中下载示例程序 GitHub页面,或当然创建自己的。转向 在EHMI设置中使用“用户管理”并创建一个全局变量。在EHMI页面上使用此变量,以便我们可以在API中使用它。

第一个API呼叫

也许我们应该首先发现我们在几个时刻更换了什么!
让我们发送GET请求以获得第一个泵的价值。

使用邮递员将GET请求发送到以下URI:

GET //192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1

(您可以将pump1更改为您自己的变量)

结果是:

{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"采用rAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}

设置自定义端点

打开shell会话,创建root密码作为root用户身份登录。
接下来,在终端中键入以下命令,转到终端的“底部”,并注意不要在同时输入某些内容!

nano /etc/nginx/nginx.conf

将下一个部分复制到终端中并使用Ctrl + S保存并使用Ctrl + x关闭。

location /Pump1 {
proxy_pass //127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}

向新终点发送请求

用邮递员发送新的Get请求,这次是下一个URI:

GET //192.168.10.10/Pump1

收到了相同的答案?祝贺您的代理人成功了!

设置多个泵

好的,但如果我有多个泵怎么办?嗯,一种方法可以做到这一条阵列是房屋是泵UDT。您可以通过调用变量或仅通过指定右括号之间所需的索引来获取整个数组,例如,在右括号之间的索引,例如pump2 [1]将为您提供名为pump2的数组中的索引1的元素。

但这是这个博客的主题。我们还可以以可以通过我们可以访问多个泵的方式设置代理。
修改以前步骤中粘贴的文本以匹配下一个方案:

location /pumps {
proxy_pass //127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}

向第一个URI发送邮递员的GET请求将为您提供相同的。向第二个URI发送Get请求将为您提供相同数据类型的数组。

//192.168.10.10/pumps/Pump1
//192.168.10.10/pumps/Pump2

现在,您应该拥有所有符合您遇到的API方案并在PLCNext设备中集成的一切!

进一步读物

//www.howtogeek.com/343877/what-is-an-api/

//www.w3schools.com/tags/ref_httpmethods.asp

//medium.com/@TebbaVonMathenstien/what-is-an-api-and-why-should-i-use-one-863c3365726b

//restfulapi.net/rest-api-design-tutorial-with-example/