西门子PLC-TIA-Portal17以上C# S7PLUS通讯驱动分享

发布于:2024-05-14 ⋅ 阅读:(224) ⋅ 点赞:(0)

西门子S7PLUS通讯示例: 西门子PLC PLUS通讯,基于符号地址进行通讯读写

有兴趣的小伙伴可以去下载测试,传统S7是基于DB地址非优化块偏移地址进行读取,PLUS驱动基于数据符号进行读取,不再依赖偏移。

S7commPlus驱动程序

用于与 S7-1200/1500 控制器进行数据交换的通信驱动程序。

发展阶段

目前,这处于一种发展状态,不用于生产用途。

其目的是开发一种通信驱动因素,使人们能够访问可变预算 S7 1200/1500 允许通过对所谓的“优化”区域的符号访问进行控制。

此实现完全是用 C# 编写的。OpenSSL 库用于 TLS 加密。

系统要求

中央处理器

通信驱动程序支持具有启用安全通信的固件的 CPU。 通过TLS协议。根据目前的知识水平,这将是

  • S7 1200 固件 >= V4.3(TLS 1.3 从 V4.5)
  • S7 1500 固件 >= V2.9

重要的是,不仅要有具有适当固件的 CPU,还要在开发环境中使用 使用相应的版本。这仅适用于 TIA-Portal 版本 >= V17。

OpenSSL的

OpenSSL 用于 TLS 通信。如果 OpenSSL 安装在相应的版本中,则相应的 安装目录的系统路径。但是,必要的 dll 也存储在项目中,并在生成过程中使用 在必要的版本(x86 或 x64)中进入输出目录。 根据您使用的操作系统,其文件名的必要 dll:

对于 32 位 (x86):

  • libcrypto-3.dll
  • libssl-3.dll

对于 64 位 (x64):

  • libcrypto-3-x64.dll
  • libssl-3-x64.dll

经过测试的通信

到目前为止,以下设备已成功通过测试:

  • S7 1211 固件 V4.5
  • TIA Plcsim V17(带 Nettoplcsim)
  • TIA Plcsim V18(带 Nettoplcsim)
  • PlcTag 类:将 PLC 数据类型转换为 PlcTag

    对于某些数据类型,需要提前知道类型,以便处理PLC的响应,以便将其转换为 有用的数据类型到 .Net。为此目的提供了 PlcTag 类。

    下表列出了 PLC (TIA V18) 中当前可能的所有数据类型,以及它们所在的数据类型 在 S7comm Plus 协议中的网络上,以及可以从中派生 PlcTag 类中的 .Net 数据类型。 导致。

    支持 PLC 数据类型 PLC类别 PLC 信息 网络数据类型 .Net 数据类型 PlcTag 其他
    AOM_IDENT 硬件数据类型 值DWord PlcTagDWord -> uint
    任何 指针 参数 值USIntArray[10] 字节[10]
    数组[n..m] 可直接访问单个元素
    Block_FB 类型 参数 值UInt PlcTagUInt -> ushort
    Block_FC 类型 参数 值UInt PlcTagUInt -> ushort
    布尔 二进制数 价值布尔 布尔
    字节 位序列 ValueByte 字节
    CONN_ANY 硬件数据类型 ValueWord PlcTagWord -> ushort
    CONN_OUC 硬件数据类型 ValueWord PlcTagWord -> ushort
    CONN_PRG 硬件数据类型 ValueWord PlcTagWord -> ushort
    CONN_R_ID 硬件数据类型 值DWord PlcTagDWord -> uint
    CREF公司 系统数据类型 ValueStruct / 打包 可直接访问单个元素
    字符串 值USInt 编码预设 ISO-8859-1 用于非 ASCII
    计数器 类型 参数 值UInt PlcTagUInt -> ushort
    日期 日期和时间 值UInt 日期时间 待办事项:仅日期有效!
    Date_And_Time 日期和时间 值USIntArray[8] 日期时间
    DB_ANY 硬件数据类型 值UInt PlcTagUInt -> ushort
    DB_DYN 硬件数据类型 值UInt PlcTagUInt -> ushort
    DB_WWW 硬件数据类型 值UInt PlcTagUInt -> ushort
    整数 值DInt 国际
    DTL公司 日期和时间 ValueStruct / 打包 DateTime + uint(用于 ns) 外部为纳秒,因为没有带有 ns 的 .Net 类型。实验的!
    DWord 位序列 值DWord uint
    EVENT_ANY 硬件数据类型 值DWord PlcTagDWord -> uint
    EVENT_ATT 硬件数据类型 值DWord PlcTagDWord -> uint
    EVENT_HWINT 硬件数据类型 值DWord PlcTagDWord -> uint
    错误结构 ValueStruct / 打包 可直接访问单个元素
    HW_ANY 硬件数据类型 ValueWord
    HW_DEVICE 硬件数据类型 ValueWord PlcTagWord -> ushort
    HW_DPMASTER 硬件数据类型 ValueWord PlcTagWord -> ushort
    HW_DPSLAVE 硬件数据类型 ValueWord PlcTagWord -> ushort
    HW_HSC 硬件数据类型 ValueWord PlcTagWord -> ushort
    HW_IEPORT Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_INTERFACE Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_IO Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_IOSYSTEM Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_MODULE Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_PTO Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_PWM Hardwaredatentypen ValueWord PlcTagWord -> ushort
    HW_SUBMODULE Hardwaredatentypen ValueWord PlcTagWord -> ushort
    IEC_COUNTER Systemdatentypen ValueStruct / packed 33554462, Zugriff auf Einzelelemente direkt möglich
    IEC_DCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_LCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_LTIMER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_SCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_TIMER Systemdatentypen ValueStruct / packed 33554463, Zugriff auf Einzelelemente direkt möglich
    IEC_UCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_UDCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_ULCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    IEC_USCOUNTER Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    Int Ganzzahlen ValueInt short
    LDT Datum und Uhrzeit ValueTimestamp ulong
    LInt Ganzzahlen ValueLInt long
    LReal Gleitpunktzahlen ValueLReal double
    LTime Zeiten ValueTimespan long Anzahl ns
    LTime_Of_Day (LTOD) Datum und Uhrzeit ValueULInt ulong Anzahl ns seit 00:00:00 Uhr
    LWord Bitfolgen ValueLWord ulong
    NREF Systemdatentypen ValueStruct / packed Zugriff auf Einzelelemente direkt möglich
    OB_ANY Hardwaredatentypen ValueInt PlcTagInt -> short
    OB_ATT Hardwaredatentypen ValueInt PlcTagInt -> short
    OB_CYCLIC Hardwaredatentypen ValueInt PlcTagInt -> short
    OB_DELAY 硬件数据类型 ValueInt PlcTagInt ->短
    OB_DIAG 硬件数据类型 ValueInt PlcTagInt ->短
    OB_HWINT 硬件数据类型 ValueInt PlcTagInt ->短
    OB_PCYCLE 硬件数据类型 ValueInt PlcTagInt ->短
    OB_STARTUP 硬件数据类型 ValueInt PlcTagInt ->短
    OB_TIMEERROR 硬件数据类型 ValueInt PlcTagInt ->短
    OB_TOD 硬件数据类型 ValueInt PlcTagInt ->短
    果仁 硬件数据类型 值UInt PlcTagUInt -> ushort
    指针 指针 参数 值USIntArray[6] 字节[6]
    港口 硬件数据类型 值UInt PlcTagUInt -> ushort
    实时转播 硬件数据类型 值UInt PlcTagUInt -> ushort
    真正 价值真实
    远程 指针 参数 值USIntArray[10] PlcTagAny -> 字节[10] 与任意指针相同
    S5时间 ValueWord 乌肖特,乌肖特 TODO:TimeBase、TimeValue。统一?
    整数 价值SInt 字节
    字符串 字符串 值USIntArray[stringlen + 2] 字符串 编码预设 ISO-8859-1 用于非 ASCII
    结构 可直接访问单个元素
    时间 值DInt 国际 签名号码 ms
    Time_Of_Day(死亡) 日期和时间 值UDInt uint 自 00:00:00 以来的毫秒数
    定时器 类型 参数 值UInt PlcTagUInt -> ushort
    UDInt 整数 值UDInt uint
    用户界面 整数 值UInt ushort
    ULInt 整数 值ULInt 乌龙
    US不见 整数 值USInt 字节
    变体 指针 参数 未获取地址
    WChar 字符串 值UInt
    WString 字符串 值UIntArray[stringlen + 2] 字符串
    位序列 ValueWord ushort


网站公告

今日签到

点亮在社区的每一天
去签到