【问题标题】:C# and Siemens PLC communicationC#与西门子PLC通讯
【发布时间】:2022-08-13 05:50:15
【问题描述】:

有谁知道 C# 读取数据命令将发生在 PLC 循环的哪一步?

PLC处理步骤是:

  1. 操作系统启动扫描周期监视时间。
  2. CPU 将过程映像输出表中的值写入输出模块。
  3. CPU 读取输入模块的输入状态并更新过程映像输入表。
  4. CPU 按时间片处理用户程序并执行程序中指定的操作。
  5. 在循环结束时,操作系统会执行挂起的任务,例如加载和清除块。
  6. CPU 在配置的最小循环时间后根据需要返回到循环的开始,并再次启动循环时间监控。

    我的目的是找出 C# 应用程序如何影响 PLC CPU 扫描周期时间。

  • 你是在让人们猜猜是什么您的代码或库会做或将做。没有C# read data command,这是您自己的应用程序或 SDK 会做的事情。一个应用程序可能从文件中读取,另一个从套接字中读取,另一个从 HTTP 流中读取
  • The operating system starts the scan cycle monitoring time.你指的是什么操作系统?因为那不是 Windows 或 Linux 通常会做的事情。可能有一些嵌入式版本,但西门子拥有无数具有不同软件的产品。较小的不会运行操作系统
  • @PanagiotisKanavos:我的 C# 应用程序正在从 Siemens S7-300 PLC 读取 I/O。
  • @PanagiotisKanavos:我的 C# 应用程序在 Linux 上运行。
  • 我提到的步骤是从西门子文档中收集的,这意味着 PLC 在内部执行这些步骤。

标签: c# cycle plc siemens


【解决方案1】:

这实际上取决于您如何从 PLC 读取值,但是 - 通常 - 这无关紧要:无论何时读取,您都会将值存储在 PLC 内存中当时。

根据我的经验,连接到 PLC 的客户端应用程序对扫描周期时间没有可测量的影响。顺便说一句,我强烈建议您使用OPC UA订阅以最大限度地提高读/写效率并让 PLC 固件在内部管理任务。

可能有更详细的答案可能还有其他详细信息(PLC 类型、用于连接/数据读写的库、ecc)。

【讨论】: