标签: siemens

将 PLC Siemens S7-1500 连接到 SQL Server 数据库

连接指南在这里。我跟踪指南并做了很多事情。PLC和SQL服务器连接正常,我已经成功登录SQL。
我可以insert到表update,并执行store procedures

但是当我运行select查询时,我不知道如何检索数据和读取值。

传送门

我使用 TIA PORTAL v16。

PLC:S7 1200西门子

我有一个简单的表,我想简单地读取一个整数,首先是一行!然后扩展我的工作。

这是我的表结构:

CREATE TABLE MyTable(
[id] [int] IDENTITY(1,1) NOT NULL,
[value] [int] NOT NULL,
)
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

这是我的select查询:

SELECT [value]
FROM [dbo].[MyTable]
WHERE id = 12033
Run Code Online (Sandbox Code Playgroud)

预期结果:

20
Run Code Online (Sandbox Code Playgroud)

SQL 镜头

https://support.industry.siemens.com/tf/ww/en/posts/connecting-an-plc-siemens-s7-1500-to-an-sql-server-database/239392/?page=0&pageSize=10 #post939400

更新

我回答了我自己的问题,请注意,西门子最近 (11/20/2020) 发布了直接将 S7-* 系列连接到 Microsoft SQL Server 数据库的文档。所以经过验证的 anwser 是将 PLC 连接到 SQL Server 的经典和正常方式,下一个答案是最新的本机解决方案。玩得开心

c# sql-server plc tia-portal siemens

14
推荐指数
1
解决办法
6066
查看次数

如何在Siemens S7-1200和python之间进行通信?

我正在S7-1200 plc上运行一个进程,我需要它向我的python脚本发送一个启动信号,在脚本运行完毕后需要将一些东西发送回plc以启动下一阶段.哦,它必须在梯子上完成.

是否有一种快速而肮脏的方式将内容发送到profibus或者我最好只使用RS232的东西?

python plc s7-1200 siemens

8
推荐指数
2
解决办法
3万
查看次数

通过C#应用程序访问Siemens S7-1200

我正在尝试访问西门子S7-1200数据库,通过我将在Windows上运行的C#可执行文件设置和读取标签.目的是建立一个可以通过Wi-Fi /以太网与PLC建立连接的桌面应用程序.然后,应用程序将允许用户读出装置的数据(并保存在SQL数据库或.csv等),并且将命令发送到所述设备(经由设置某些标签,然后将PLC执行指令).

西门子S7-1200和S7-1500设备托管一个Web服务器,允许用户通过它创建网站和设置/读取数据.我已经成功地工作了.我打算绕过网站并直接从设备中提取数据.而不是不断从网站上提取数据.

我已经看过以下内容了:

以及很多西门子的教程和手册.

有关如何在C#中建立此连接的任何想法将不胜感激.

c# web-services plc s7-1200 siemens

8
推荐指数
1
解决办法
2604
查看次数

从Siemens S7 1500 PLC上的Web服务器页面读取JSON结构

我一直在使用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值,这也是有用的.

提前致谢.

html javascript json plc siemens

6
推荐指数
1
解决办法
5067
查看次数

通过 C# 读/写 S7-1200 位存储器

我正在尝试在 S7-1200 CPU 中的布尔内存上设置值,我使用了 SNAP7 库,但我无法成功使用它:

Result result = new Result();
byte[] Buffer = new byte[26];
Client.DBRead(1, 0, 2, Buffer); 
result.bArret = S7.GetBitAt(Buffer, 0, 1);
result.bMarche = S7.GetBitAt(Buffer, 0, 2);
Client.DBWrite(1, 0, 10, buff);
Run Code Online (Sandbox Code Playgroud)

我的目标是能够在内存上写入值: 在此输入图像描述

这是数据块 1 :

在此输入图像描述

我需要在不使用 OPC 或其他第三方软件的情况下完成此任务。

c# plc s7-1200 siemens

5
推荐指数
1
解决办法
4733
查看次数

使用 S7netplus 在 C# 中读取西门子 PLC s7 字符串

我在使用 S7netplus 读取西门子 PLC S7 1500 的 DB 中的数据时遇到问题。

情况:

  • 我正在运行一个 C# 应用程序。
  • 我在PLC上连接得很好。
  • 我可以读取Boolean、UInt、UShot、Bytes等数据

但我不知道如何读取字符串数据(见下图)

PLC数据

要读取布尔值等其他数据,我使用以下调用:

plc.Read("DB105.DBX0.0")
Run Code Online (Sandbox Code Playgroud)

我了解到,在数据块 105 (DB105) 中读取数据类型为布尔值 (DBX),偏移量为 0.0 我想对字符串应用相同类型的读取。所以我在我的示例中尝试了“DB105.DBB10.0”。但它返回一个字节类型的值“40”(我应该有别的东西)

我看到还有另一种阅读方法

plc.ReadBytes(DataType DB, int DBNumber, int StartByteArray, int lengthToRead)
Run Code Online (Sandbox Code Playgroud)

但我很难了解如何将其应用到我的示例中(我知道之后必须将其转换为字符串)。

继续: - 有没有一种简单的方法可以使用“DB105.DBX0.0”这样的字符串来读取西门子PLC中的字符串数据?- 如果不是,如何在我的示例中使用 ReadBytes 函数?

感谢您的帮助

c# plc siemens

5
推荐指数
1
解决办法
7857
查看次数

如何使用OPC UA和C#获取节点的值?

我有一个西门子 TP1200 Comfort 面板,我已将其配置为 OPC AU 服务器。该面板有一些标签(节点),我想从中获取 C# 应用程序的值。

我已阅读 OPC UA github 项目的示例: https: //github.com/OPCFoundation/UA-.NETStandard

我能够连接到面板并获取根,但是如果我调试并检查根的结构,我看不到该值的任何属性,也没有看到子节点的集合,所以我不知道如何通过名称查找节点。

有没有类似 GetNodeVale(NodeName); 的方法

我没有显示任何代码,因为我真的迷失了 OPC,这是我第一次尝试实现一个简单的客户端,我想在其中读取节点(标签)的代码,但我无法做到这一点。

谢谢。

c# opc opc-ua siemens

5
推荐指数
2
解决办法
4590
查看次数

从西门子s7-1200(0x8104)读取时出现libnodave错误

在检查s7nodave对S7-1200的EPICS设备支持时,我遇到了一个引用libnodave的问题.当我尝试读取PLC中的任何内存地址时,IOC控制台报告错误:

epics> 2014/05/19 14:20:41.964 Siemens-PLC error while reading 1 bytes from PLC address FB35. Status = context not supported. Step7 says:Function not implemented or error in telgram.
Run Code Online (Sandbox Code Playgroud)

这是libnodave状态代码0x8104.当我试图在网上搜索此错误代码时,所有结果都是参考S7-1500,而不是S7-1200.

我可以通过Siemens SDK访问这些内存块:它们存在并包含有效数据.

为什么S7-1200拒绝发送libnodave数据?有没有选项可以从网络中提供数据块?

我用EPICS版.3.14.12.4,s7nodave 1.03 build with asyn ver.4.11,boost ver.1.55.0.在PC和Virtualbox上尝试了各种版本.

plc libnodave s7-1200 siemens

3
推荐指数
1
解决办法
6356
查看次数

S7-1200、Snap7:异常:CLI:功能被 CPU 拒绝(未知错误)

使用西门子 S7-1200 PLC 在 python 的 snap7 客户端脚本下运行显示以下常见的 CLI 拒绝错误。这里的常见问题是什么以及如何解决?

脚本:

import snap7
from snap7.util import *
import struct
import snap7.client
from snap7.snap7types import S7AreaDB

plc=snap7.client.Client()

plc.connect('192.168.0.69',0,1)

area   = 0x84
start  = 0
length = 1
bit    = 0

byte= plc.read_area(area,0,start,length)
Run Code Online (Sandbox Code Playgroud)

追溯错误:

找不到记录器“snap7.common”回溯(最近一次调用最后一次)的处理程序:文件“”,第 1 行,文件“/usr/local/lib/python2.7/dist-packages/snap7/client.py ",第 242 行,在 read_area check_error(result, context="client") 文件“/usr/local/lib/python2.7/dist-packages/snap7/common.py”,第 69 行,在 check_error 中引发 Snap7Exception(错误) snap7.snap7exceptions.Snap7Exception: CLI : 函数被 CPU 拒绝(未知错误)

python plc tia-portal s7-1200 siemens

2
推荐指数
1
解决办法
4008
查看次数

需要澄清 opc ua 服务器和 opc ua 客户端

我想创建一个工业自动化应用程序来执行以下功能:

  1. 从 PLC、SCADA 和 DCA 读取值
  2. 处理这些值并将故障通知主管和技术人员

我是工业自动化行业和物联网的新手,我知道我们有 OPC UA 来救援。

我浏览了许多网站和 YouTube 视频来了解 OPC UA 及其前身(OPC DA、OPC A&E、OPC HDA)。我已经安装了 matrikon OPC 服务器和资源管理器(客户端)来探索更多。

假设我想从SIMATIC S7-1200 PLC读取信号,根据我的理解,OPC UA服务器是随PLC一起提供的,用于将OPC UA信息转换为Profinet信息。

所以,我的问题是:

  • 我应该在哪里编写逻辑来读取值?OPC 服务器还是客户端?
  • 我将使用 NODE-OPC-UA。有没有开源的 OPC 客户端 GUI?
  • 如何编写我们自己的没有OPC UA投诉的PLC OPC服务器?

如果有人分享一些资源,将不胜感激!

plc opc-ua tia-portal s7-1200 siemens

1
推荐指数
1
解决办法
2591
查看次数

西门子PLC编程最佳实践

我的问题很简单。有没有学习使用西门子 PLC 的有用地方?

plc siemens

-6
推荐指数
1
解决办法
1470
查看次数

标签 统计

siemens ×11

plc ×10

s7-1200 ×6

c# ×5

tia-portal ×3

opc-ua ×2

python ×2

html ×1

javascript ×1

json ×1

libnodave ×1

opc ×1

sql-server ×1

web-services ×1