我一直在使用HTML和javascript创建图形网页来显示来自Siemens S7 1500 PLC的数据.我一直在使用$ .getJSON命令成功读取PLC中的值,当请求信息的网页由PLC Web服务器提供时,并且与具有JSON结构和所有所需文件的文件位于同一目录中值.
我有一台PC通过以太网连接到我的PLC,并希望在PC上本地运行一个网页,并从PLC网络服务器读取页面提供的值.
当要读取的数据位于Web服务器上的同一目录中时,我当前用于读取值的代码如下所示:
<script type="text/javascript">
$(document).ready(function(){
$.ajaxSetup({ cache: false });
setInterval(function() {
$.getJSON("inputs.htm", function(data){
// Variable Declaration
engineSpeed = data.engineSpeed;
engineFuelLevelScaled = data.engineFuelLevelScaled;
powerEndDischargePressurePSI = data.powerEndDischargePressurePSI;
powerEndDischargeFlowRateBBLM = data.powerEndDischargeFlowRateBBLM;
powerEndSuctionPressurePSI = data.powerEndSuctionPressurePSI;
});
},1000);
});
</script>
Run Code Online (Sandbox Code Playgroud)
"inputs.htm"文件很简单:
{
"engineSpeed" : ":="WebData".engineSpeed:",
"engineFuelLevelScaled" : ":="WebData".engineFuelLevelScaled:",
"powerEndDischargePressurePSI" : ":="WebData".powerEndDischargePressurePSI:",
"powerEndDischargeFlowRateBBLM" : ":="WebData".powerEndDischargeFlowRateBBLM:",
"powerEndSuctionPressurePSI" : ":="WebData".powerEndSuctionPressurePSI:"
}
Run Code Online (Sandbox Code Playgroud)
其中"WebData"是使用PLC上的值更新的数据块.
我很高兴这是如何工作的,但当我尝试在本地运行一个页面来查看"inputs.htm"页面时,它没有用.
我的PLC的IP地址为172.17.2.11,我已将$ .getJSON更改为:
$.getJSON("http://172.17.2.11/awp/GeminiOnline/inputs.htm", function(data){
Run Code Online (Sandbox Code Playgroud)
和
$.getJSON("172.17.2.11/awp/GeminiOnline/inputs.htm", function(data){
Run Code Online (Sandbox Code Playgroud)
虽然都没有奏效.我知道这些是正确的网址,因为我可以去其中任何一个并阅读我想要访问的值.
我已经在我的PLC的Web服务器上设置了权限,允许所有用户完全访问,因此不再需要登录.我想知道是否有一个我缺少的步骤或$ .getJSON结构的一些限制阻止我这样读.
任何输入将不胜感激.如果您有任何其他方法可以在PC上本地托管的页面中读取当前的PLC值,这也是有用的.
提前致谢.