Jump to content
  • PLC programming technology and HMI interface design Simplified Chinese database

    PLC, DCS, HMI and SCADA product application technical articles

    leikang
    常见问题
     1、如何判断 Modbus TCP 连接是否建立?
    答:进行 Modbus TCP 通信,需要建立连接,
    S7-200 SMART CPU 作为 Modbus TCP 客户端时:通过 Modbus TCP Client 指令 MBUS_CLIENT 的符号表中的 mConnected 参数来判断,如图 1 所示
    mConnected=1 表示已经建立连接,mConnected=0 表示尚未建立连接

    图 1. mConnected 判断连接状态
    S7-200 SMART CPU 作为 Modbus TCP 服务器时:通过 Modbus TCP Server 指令 MBUS_SERVER 的符号表中的 mConnected 参数来判断,如图 2 所示
    mConnected=1 表示已经建立连接,mConnected=0 表示尚未建立连接.

    图 2. mConnected 判断连接状态
    注意:当 PLC 内存在多个客户端或者多个服务器时,不建议参考该状态点。
     2、如何查看错误代码?
    答:出现错误时,MBUS_CLIENT 指令输出参数 Done 会为 1,但是,Done 在连接建立完成,连接断开,响应完成时都会出现置位为 1 的情况。
    出现错误时,还有 Error 字节会显现出错误代码,仅保留一个周期时间。
    综上所述,查看错误代码,可以按照图 3 所示的方法进行。

    图 3. 查看错误代码
     3、进行 Modbus TCP 通信寄存器类型数据,数据量大超过 120 个字如何处理?
    答:如果数据量超过 120 个字,可以进行如下两种方法操作:
    A、建立多个连接,不同连接之间,可以并行操作,因为占用的通信资源不同;
    B、建立一个连接,进行多个操作,不同操作之间需要进行轮询,同一时刻只有一个操作在进行。
     4、Modbus TCP 通信时,如何访问地址范围大于 49999 的保持寄存器?
    Modbus 保持寄存器地址在 40001 到 49999 这一范围内。该范围足以满足大多数应用的要求,但有些 Modbus 从站设备将数据映射到地址范围更大的保持寄存器中。 MBUS_CLIENT 指令允许参数 Addr 的附加范围,以支持 400001 至 465536 的保持寄存器地址的扩展范围。例如,要访问保持寄存器 16768,请将 MBUS_CLIENT 的 Addr 参数设置为 416768。 扩展寻址允许访问 Modbus 协议支持的全部 65536 个可能地址。此扩展寻址仅适用于保持寄存器。
     5、S7-200 SMART 作为 Modbus TCP 客户端, 服务器为网关模块,连接多个 Modbus RUT 设备时如何区分 Modbus RTU 从站地址能?
    答:S7-200 SMART CPU 作为 Modbus TCP 客户端与 Modbus TCP 服务器通信,当尝试访问比 Modbus TCP 服务器更低端的串行子网中的设备,会有报错 "无法建立连接"。如果 Modbus TCP 服务器用于 Modbus RTU 协议的网关,则 MB_UNIT_ID 可用于识别串行网络上连接的从站设备。MB_UNIT_ID 用于将请求转发到正确的 Modbus RTU 从站地址。一些 Modbus TCP 设备可能要求 MB_UNIT_ID 参数在限制范围内。该参数所在位置,如图 4 所示
    mModbusUnitID 默认值为 255(16#FF),如果从站设备有多个,可以 S7-200 SMART 和网关模块建立一个连接,在这个连接上通过修改 UnitID 的值进行 UnitID 的轮询。

    图 4 mModbusUnitID
     6、对于一些服务器不支持写单个数字量输出位(功能码 5)/单个保持寄存器(功能码 6),S7-200 SMART 如何实现写单个位/字。
    答:一些 Modbus 服务器设备不支持 Modbus 功能写入单个离散输出位(Modbus 功能 5)或写入单个保持寄存器(Modbus 功能 6)。相反,这些设备只支持多位写入(Modbus 功能 15)或多寄存器写入(Modbus 功能 16)。如果服务器设备不支持单个位/字 Modbus功能,则 MBUS_CLIENT 指令将返回错误代码 1。Modbus 客户端协议允许强制 MBUS_CLIENT 指令使用多个位/字 Modbus 功能,而非使用单个位/字 Modbus 功能。可通过在 Modbus 客户端符号表中查找符号 mModbusForceMulti,并在程序执行 MBUS_CLIENT 之前更改此值,来强制多个位/字指令。将 mModbusForceMulti 设置为 TRUE,可在写入单个位或寄存器时强制使用多个位/字功能。如图 5 所示。

    图 5. mModbusForceMulti

    leikang
    S7-200 SMART CPU 与 S7-1200 CPU 集成 PN 口的 ISO on TCP 通信 (S7-200 SMART 作为客户端)
    S7-200 SMART CPU 与 S7-1200 CPU 通过 ISO on TCP 通信,需要在双方都建立连接。在 S7-1200 调用 T-block 指令 (TCON, TDISCON, TSEND, TRCV) 、在 S7-200SMART 调用 Open User Communication库指令 (ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV),来实现。通信方式为双边通信,因此双方的发送和接收指令必须成对出现。
    注意:
    S7-200 SMARTPLC V2.2 版本才开始支持 ISO on TCP 通信,早期版本的 CPU 需要升级固件后方可支持 ISO on TCP。
    硬件:
    ① S7-1200 CPU (IP地址: 192.168.0.203 子网掩码: 255.255.255.0)
    ② S7-200 SMART CPU (固件 V2.5) (IP地址: 192.168.0.223 子网掩码: 255.255.255.0)

    软件:
    ① STEP7 V15
    ② STEP 7 Micro/WIN SMART V2.5

    所完成的通信任务:
    ① S7-200 SMART 将 VB 3000 开始的 5 个字节发送到 S7-1200 通信数据区 DB11中 ;
    ② S7-200 SMART 读取 S7-1200 中的数据区 DB12 的 5个字节 的数据存放到 VB3100 开始的 5 个字节中。
    S7-200 SMART 侧编程
    1.调用 ISO_CONNECT 指令建立连接,伙伴 TSAP (RemTsap) 与本地 TSAP (LocTsap) 必须与 S7-300 中的连接配置交叉对应,如图 1 所示。

    图 1. 调用 ISO_CONNECT 建立连接指令
    2. 调用 TCP_SEND 指令发送数据,如图 2 所示。

    图 2. 调用 TCP_SEND 发送指令
    3. 调用 TCP_RECV 指令接收数据,如图 3 所示。

    图 3. 调用 TCP_RECV 接收指令
    4. 为通信指令分配库存储器,如图 4 所示。

    图 4. 为库存储器分配地址
    S7-1200 侧硬件组态和编程
    1. 使用 STEP7 V15 软件新建一个项目,添加 1 个 S7-1200 站点并为其分配网络和 IP 地址,如图 5 所示。

    图 5. 组态 S7-1200 并分配 IP 地址
    为编程方便,使用 CPU 属性中定义的时钟位,在设备视图双击 CPU 设置 "系统和时钟存储器",如图 6 所示。

    图 6. 启用时钟位
    2. 在 S7-1200 中调用建立连接指令,进入 "项目树" > " PLC_1" > "程序块" > "OB1" 主程序中,从右侧窗口 "指令"> "通信">"开放式用户通信" 下调用 "TCON" 指令,配置连接参数,如图 7 所示。

    图 7. 调用 "TCON" 指令并配置连接参数
    3. 创建发送数据块 DB11(接收区数据块 DB12 类似),数据块中定义 100 个字节的数组,数据块的属性中需要取消 "优化的块访问" 选项,如图 8 所示。

    图 8. 创建发送数据块 DB11
    4. 在 OB1 中调用 TSEND 指令来发送数据,如图 9 所示。

    图 9. 调用 TEND 发送指令
    5. 在 OB1 中调用 TRCV 指令来发送数据,如图 10 所示。

    图 10. 调用 TRCV 发送指令
    通信测试
    分别下载控制器和智能设备的程序,在状态图表中添加相应的地址区域观察数据交换情况,如图 11 所示。

    图 11. 通信测试
    应用案例例程,如下所示:
     S7-200 SMART 程序:ISO-on-TCP_Client_V2.5
     S7-1200 程序:ISO-on-TCP_Server_V15
    免责声明
    本例程仅供参考,程序中的CPU版本、类型可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。

    leikang
    S7-200 SMART CPU 与 S7-1200 CPU 集成 PN 口的 ISO on TCP 通信
    S7-200 SMART CPU 与 S7-1200 CPU 通过 ISO on TCP 通信,需要在双方都建立连接。在 S7-1200 调用 T-block 指令 (TCON, TDISCON, TSEND, TRCV) 、在 S7-200SMART 调用 Open User Communication库指令 (ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 来实现。通信方式为双边通信,因此双方的发送和接收指令必须成对出现。
    注意:
    S7-200 SMARTPLC V2.2 版本才开始支持 ISO on TCP 通信,早期版本的 CPU 需要升级固件后方可支持 ISO on TCP。
    硬件和软件需求及所完成的通信任务

    硬件:
    ① S7-1200 CPU (IP地址: 192.168.0.3 子网掩码: 255.255.255.0)
    ② S7-200 SMART CPU (固件 V2.2) (IP地址: 192.168.0.2 子网掩码: 255.255.255.0)
    ③ PC(带以太网卡)
    ④ TP 以太网电缆

    软件:
    ① STEP7 V13 SP1
    ② STEP 7 Micro/WIN SMART V2.2

    所完成的通信任务:
    ① S7-1200 将通信数据区 DB11 中的 200 个字节发送到 S7-200 SMART 的 VB 数据区。
    ② S7-1200 读取 S7-200 SMART 中的 VB 数据区存储到 S7-1200 的数据区 DB12

    S7-1200 侧硬件组态和编程
    1. 使用 TIA V13 软件新建一个项目,添加 1 个 S7-1200 站点并为其分配网络和 IP 地址 ,如图 1 所示

    图 1. 组态 S7-1200 并分配 IP 地址
    为编程方便,使用 CPU 属性中定义的时钟位,在设备视图双击 CPU 设置 "系统和时钟存储器",如图 2 所示。

    图 2. 启用时钟位
    2. 在 S7-1200 中调用建立连接指令,进入 "项目树" > " PLC_1" > "程序块" > "OB1" 主程序中,从右侧窗口 "指令"> "通信">"开放式用户通信" 下调用 "TCON" 指令,配置连接参数,如图 3 所示。

    图 3. 调用 "TCON" 指令并配置连接参数
    表 1. TCON 指令参数说明
    REQ // 为 1 时,开始建立连接 ID // 连接号,在组态窗口配置后自动生成 CONNECT // 连接数据,在组态窗口配置后自动生成 DONE // 为 1 时,表示已成功建立连接 BUSY // 为 1 时,正在建立连接 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 3. 创建发送数据块 DB11(接收区数据块 DB12 类似),数据块中定义 200 个字节的数组,数据块的属性中需要取消 "优化的块访问" 选项。如图 4 所示。

    图 4. 创建发送数据块 DB11
    4. 在 OB1 中调用 TSEND 指令来发送数据,如图 5 所示

    图 5:调用 TEND 发送指令
    表 2. TSEND 指令参数说明
    REQ // 在检测到上升沿时启动发送作业 ID // 连接号,要与 TCON 连接参数中的连接 ID 一致 LEN // 发送的字节数 DATA // 发送区,包含地址和长度 DONE // 为 1 时,发送完成 BUSY // 为 1 时,发送作业仍未完成,此时无法启动新作业 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 5. 在 OB1 中调用 TRCV 指令来接收数据,如图 6 所示

    图 6:调用 TRCV 接收指令
    表 3. TRCV 指令参数说明
    EN_R // 为 1 时,开始接收 ID // 连接号,要与 TCON 连接参数中的连接 ID 一致 LEN // 接收长度 DATA // 接收区,包含地址和长度 NDR // 为 1 时,接收完成 BUSY // 为 1 时,正在进行接收作业 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 RCVD_LEN // 实际接收到的数据量(以字节为单位) S7-200 SMART 侧编程
    1. 调用 ISO_CONNECT 指令建立连接,伙伴 TSAP (RemTsap) 与本地 TSAP (LocTsap) 必须与 S7-300 中的连接配置交叉对应。如图 7 所示

    图 7:调用 ISO_CONNECT 建立连接指令
    表 4. ISO_CONNECT 指令参数说明
    Req // 为 1 时,开始建立连接 Active // 是否主动建立连接,必须与 S7-300 中的连接配置相反。 ConnID // 连接 ID RemTsap // 伙伴 TASP LocTsap // 本地 TSAP DONE // 为 1 时,表示已成功建立连接 BUSY // 为 1 时,正在建立连接 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 2. 调用 TCP_RECV 指令接收数据。如图 8 所示

    图 8:调用 TCP_RECV 接收指令
    表 5. TCP_RECV 指令参数说明
    ConnID //连接号,要与 ISO_CONNECT 指令中填写的的连接 ID 一致 MaxLen // 接收长度 (超出此长度的消息无法接收) DataPtr // 接收区,包含地址和长度 Done // 为 1 时,接收完成 Busy // 为 1 时,正在进行接收作业 Error // 为 1 时,有故障发生 Status // 状态代码 Length // 接收到的数据长度 (字节) 3. 调用 TCP_SEND 指令发送数据。如图 9 所示

    图 9:调用 TCP_SEND 发送指令
    表 6. TCP_SEND 指令参数说明
    Req // 在检测到上升沿时启动发送作业 ConnID // 连接号,要与 ISO_CONNECT 指令中填写的的连接 ID 一致 Datalen // 作业要发送的最大字节数 DataPtr // 发送区,包含地址和长度 Done // 为 1 时,接收完成 Busy // 为 1 时,发送作业仍未完成,此时无法启动新作业 Error // 为 1 时,有故障发生 Status // 状态代码 4. 为通信指令分配库存储器。如图 10 所示

    监控通信结果

    图 11 监控结果

    leikang
    S7-200 SMART CPU 与 S7-300 CPU 集成 PN 口的 ISO on TCP 通信
    S7-200 SMART CPU 与 S7-300 CPU 集成 PN 口通过 ISO on TCP 通信,需要在双方都建立连接。在 S7-300 调用 T-block 指令 (TCON, TDISCON, TSEND, TRCV) 、在S7-200SMART 调用 Open User Communication 库指令 (ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 来实现。通信方式为双边通信,因此双方的发送和接收指令必须成对出现。
    注意:
    S7-200 SMARTPLC V2.2 版本才开始支持 ISO on TCP 通信,早期版本的 CPU 需要升级固件后方可支持 ISO on TCP。
    硬件和软件需求及所完成的通信任务
    本文采用 1 个 S7-300PN CPU,1 个 S7-200SMART CPU 为例,介绍它们之间的 ISO on TCP 通信。

    硬件:
    ① S7-300PN CPU (IP地址: 192.168.0.4 子网掩码: 255.255.255.0)
    ② S7-200 SMART CPU (固件 V2.2) (IP地址: 192.168.0.2 子网掩码: 255.255.255.0)
    ③ PC (带以太网卡)
    ④ TP以太网电缆

    软件:
    ① STEP7 V13 SP1
    ② STEP 7 Micro/WIN SMART V2.2

    所完成的通信任务:
    ① S7-300 将通信数据区 DB11 中的 200 个字节发送到 S7-200 SMART 的 VB 数据区。
    ② S7-300 读取 S7-200 SMART 中的 VB 数据区存储到 S7-1200 的数据区 DB12。
    S7-300 侧硬件组态和编程
    1. 使用 TIA V13 软件新建一个项目,添加 1 个 S7-300 站点并为其分配网络和 IP 地址 ,如图 1 所示

    图 1. 组态S7-300 并分配 IP 地址
    为编程方便,使用 CPU 属性中定义的时钟位,在设备视图双击 CPU 设置时钟存储器,如图 2 所示。

    图 2. 启用时钟位

    2. 在 PLC_1 的 OB1 中调用建立连接指令,进入 "项目树" > " PLC_1" > "程序块" > "OB1" 主程序中,从右侧窗口 "指令"> "通信">"开放式用户通信"下调用 "TCON" 指令,配置连接参数,如图 3 所示。

    图 3. 调用 "TCON" 指令并配置连接参数
    表 1. TCON 指令参数说明
    REQ // 为 1 时,开始建立连接 ID // 连接号,在组态窗口配置后自动生成 CONNECT // 连接数据,在组态窗口配置后自动生成 DONE // 为 1 时,表示已成功建立连接 BUSY // 为 1 时,正在建立连接 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 3. 在 PLC_1 中创建发送数据块 DB11(接收区数据块 DB12 类似),数据块中定义 200 个字节的数组,如图 4 所示。

    图 4. 创建发送数据块 DB11
    4. 在 PLC_1 的 OB1 中调用 "TSEND" 指令来发送数据,如图 5 所示

    图 5:调用 TEND 发送指令
    表 2. TSEND 指令参数说明
    REQ // 在检测到上升沿时启动发送作业 ID // 连接号,要与 TCON 连接参数中的连接 ID 一致 LEN // 发送的字节数 DATA // 发送区,包含地址和长度 DONE // 为 1 时,发送完成 BUSY // 为 1 时,发送作业仍未完成,此时无法启动新作业 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 5. 在 PLC_1 的 OB1 中调用 TRCV 指令来接收数据,如图 6 所示

    图 6:调用 TRCV 接收指令
    表 3. TRCV 指令参数说明
    EN_R // 为 1 时,开始接收 ID // 连接号,要与 TCON 连接参数中的连接 ID 一致 LEN // 接收长度 DATA // 接收区,包含地址和长度 NDR // 为 1 时,接收完成 BUSY // 为 1 时,正在进行接收作业 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 RCVD_LEN // 实际接收到的数据量(以字节为单位)
    S7-200 SMART 侧编程
    1.调用 ISO_CONNECT 指令建立连接,伙伴 TSAP (RemTsap) 与本地 TSAP (LocTsap) 必须与 S7-300 中的连接配置交叉对应。如图 7 所示

    图 7:调用 ISO_CONNECT 建立连接指令
    表 4. ISO_CONNECT 指令参数说明
    Req // 为 1 时,开始建立连接 Active // 是否主动建立连接,必须与 S7-300 中的连接配置相反。 ConnID // 连接 ID RemTsap // 伙伴 TASP LocTsap // 本地 TSAP DONE // 为 1 时,表示已成功建立连接 BUSY // 为 1 时,正在建立连接 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 2. 调用 TCP_RECV 指令接收数据。如图 8 所示

    图 8:调用 TCP_RECV 接收指令
    表 5. TCP_RECV 指令参数说明
    ConnID //连接号,要与 ISO_CONNECT 指令中填写的的连接 ID 一致 MaxLen // 接收长度(超出此长度的消息无法接收) DataPtr // 接收区,包含地址和长度 Done // 为 1 时,接收完成 Busy // 为 1 时,正在进行接收作业 Error // 为 1 时,有故障发生 Status // 状态代码 Length // 接收到的数据长度 (字节) 3. 调用 TCP_SEND 指令发送数据。如图 9 所示

    图 9:调用 TCP_SEND 发送指令
    表 6. TCP_SEND 指令参数说明
    Req // 在检测到上升沿时启动发送作业 ConnID // 连接号,要与 ISO_CONNECT 指令中填写的的连接 ID 一致 Datalen // 作业要发送的最大字节数 DataPtr // 发送区,包含地址和长度 Done // 为 1 时,接收完成 Busy // 为 1 时,发送作业仍未完成,此时无法启动新作业 Error // 为 1 时,有故障发生 Status // 状态代码 4. 为通信指令分配库存储器。如图 10 所示

    监控通信结果

    图 11 监控结果

    leikang
    S7-200 SMART CPU 与 S7-300 CP343 进行 ISO on TCP 通信
    S7-200 SMART CPU 与 S7-300 CP343 通过 ISO on TCP 通信,需要在双方都建立连接。在 S7-300 通过网络组态创建连接并调用 AG_SEND 和 AG_RECV 指令、在 S7-200S MART 调用 Open User Communication 库指令 (ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 来实现。通信方式为双边通信,因此双方的发送和接收指令必须成对出现。
    注意:
    S7-200 SMARTPLC V2.2 版本才开始支持 ISO on TCP 通信,早期版本的 CPU 需要升级固件后方可支持 ISO on TCP。
    硬件和软件需求及所完成的通信任务

    硬件:
    ① S7-300 CPU 和 CP343 (IP地址: 192.168.0.5 子网掩码: 255.255.255.0)
    ② S7-200 SMART CPU (固件 V2.2) (IP地址: 192.168.0.2 子网掩码: 255.255.255.0)
    ③ PC(带以太网卡)
    ④ TP 以太网电缆

    软件:
    ① STEP7 V13 SP1
    ② STEP 7 Micro/WIN SMART V2.2

    所完成的通信任务:
    ① S7-300 将通信数据区 DB11 中的 200 个字节发送到 S7-200 SMART 的 VB 数据区。
    ② S7-300 读取 S7-200 SMART 中的 VB 数据区存储到 S7-1200 的数据区 DB12。
    S7-300 侧硬件组态和编程
    1. 使用 TIA V13 软件新建一个项目,添加1个 S7-300 CPU 以及 CP343 ,并为 CP343 分配网络和 IP 地址 ,如图 1 所示

    图 1. 组态 S7-300 和 CP343 并分配 IP 地址
    为编程方便,使用 CPU 属性中定义的时钟位,在设备视图双击 CPU 设置时钟存储器,如图 2 所示。

    图 2. 启用时钟位
    2. 在 S7-300 中添加 ISO on TCP 连接,打开 "设备组态" > "网络视图" ,在窗口左上角选中 "连接",然后右键点击 CPU 建立新连接,类型选择 "ISO-on-TCP" 如图 3 所示。

    图 3. 在网络视图建立新连接
    3. 在 "常规" 和 "地址详细信息" 页面配置详细连接参数如 IP 地址、TSAP 等,如图 4 所示。

    图 4. 配置连接参数
    4. 创建发送数据块 DB11(接收区数据块 DB12 类似),数据块中定义 200 个字节的数组,如图 5 所示。

    图 5. 创建发送数据块 DB11
    5. 在 OB1 中,在 "指令树" > "通信" > "通信处理器"> "Simatic NET CP" 下,调用 AG_SEND 指令发送数据,如图 6 所示

    图 6:调用 AG_SEND 发送指令
    表 1. AG_SEND 指令参数说明
    ACT // 为 1 时,启动发送作业 ID // 连接号,要与图 3 中的连接 ID 一致 LADDR // CP 卡硬件地址,必须填写 16 进制数据 SEND // 发送区,包含地址和长度 LEN // 发送的字节数 DONE // 为 1 时,发送完成 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 6. 在 OB1 中,在 "指令树" > "通信" > "通信处理器"> "Simatic NET CP" 下,调用 AG_RECV 指令接收数据,如图 7 所示

    图 7:调用 AG_RECV 接收指令
    表 2. AG_RECV 指令参数说明
    ID // 连接号,要与 TCON 连接参数中的连接 ID 一致 LADDR // CP 卡硬件地址,必须填写 16 进制数据 RECV // 接收区,包含地址和长度 NDR // 为 1 时,接收完成 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 LEN // 实际接收到的数据量(以字节为单位) S7-200 SMART 侧编程
    1.调用 ISO_CONNECT 指令建立连接,伙伴 TSAP (RemTsap) 与本地 TSAP (LocTsap) 必须与 S7-300 中的连接配置交叉对应。如图 8 所示

    图 8:调用 ISO_CONNECT 建立连接指令
    表 3. ISO_CONNECT 指令参数说明
    Req // 为 1 时,开始建立连接 Active // 是否主动建立连接,必须与 S7-300 中的连接配置匹配。 ConnID // 连接 ID RemTsap // 伙伴 TASP LocTsap // 本地 TSAP DONE // 为 1 时,表示已成功建立连接 BUSY // 为 1 时,正在建立连接 ERROR // 为 1 时,有故障发生 STATUS // 状态代码 2.调用 TCP_RECV 指令接收数据。如图 9 所示

    图 9:调用 TCP_RECV 接收指令
    表 4. TCP_RECV 指令参数说明
    ConnID //连接号,要与 ISO_CONNECT 指令中填写的的连接 ID 一致 MaxLen // 接收长度(超出此长度的消息无法接收) DataPtr // 接收区,包含地址和长度 Done // 为 1 时,接收完成 Busy // 为 1 时,正在进行接收作业 Error // 为 1 时,有故障发生 Status // 状态代码 Length // 接收到的数据长度 (字节) 3. 调用 TCP_SEND 指令发送数据。如图 10 所示

    图 10:调用 TCP_SEND 发送指令
    表 5. TCP_SEND 指令参数说明
    Req // 在检测到上升沿时启动发送作业 ConnID // 连接号,要与 ISO_CONNECT 指令中填写的的连接 ID 一致 Datalen // 作业要发送的最大字节数 DataPtr // 发送区,包含地址和长度 Done // 为 1 时,接收完成 Busy // 为 1 时,发送作业仍未完成,此时无法启动新作业 Error // 为 1 时,有故障发生 Status // 状态代码 4. 为通信指令分配库存储器。如图 11 所示

    监控通信结果

    图 12 监控结果

    leikang
    ISO-on-TCP 协议
    ISO-on-TCP 是一种使用 RFC 1006 的协议扩展。ISO-on-TCP 的主要优点是数据有一个明确的结束标志,可以知道何时接收到了整条消息。S7 协议 (Put/Get) 使用了 ISO-on-TCP 协议。ISO-on-TCP 仅使用 102 端口,并利用 TSAP(传输服务访问点)将消息路由至适当接收方(而非 TCP 中的某个端口)。
    S7-200 SMART 与之间的 ISO-on-TCP 通讯可以通过两边调用 OUC (开放式用户通讯) 指令库中的 ISO_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT 指令来实现。

    图 1. 开放式用户通讯库
     
     开放式用户通信库需要使用 50 个字节的 V 存储器。
     开放式的用户通讯连接资源包括 8 个主动连接和 8 个被动连接。
      只可从主程序或中断例程中调用库函数,但不可同时从这两个程序中调用。
    所需条件:
    1、软件版本:STEP 7-Micro/WIN SMART V2.2
    2、SMART CPU 固件版本: V2.2
    3、通讯硬件:TP 电缆(以太网电缆)
    4、PC (带以太网卡)
    所完成的通讯任务:
    将作为服务器端(192.168.0.102)的 V3000-VB3003 的数据传送到客户端(192.168.0.101)的 VB3000-VB3003 内。
    S7-200 SMART 客户端编程
    1、设置客户端的 IP 地址
    设置 IP 地址为 192.168.0.101

    图 2. 设置IP地址
    2、建立 ISO-on-TCP 连接
    调用 ISO_CONNECT 指令建立 ISO 连接。设置连接伙伴地址为 192.168.0.102,连接标识 ID 为 1,本地和远端的 TSAP 要交叉对应。TSAP 不能少于三个字符。
    利用 SM0.0 使能 Active,设置为主动连接。

    图 3. 建立 ISO-on-TCP 连接
    指令的参数
    输入参数:
    EN :使能输入
    Req:沿触发
    Active : TURE=主动连接(客户端)FALSE = 被动连接(服务器)
    ConnID:连接 ID 为连接标识符,可能范围为 0-65534
    IPaddr1 ... IPaddr4 :IP 地址的四个八位字节。IPaddr1 是 IP 地址的最高有效字节,IPaddr4 是 IP 地址的最低有效字节。
    RemTsap:RemPort 是远程 TSAP 字符串。
    LocTsap :LocPort 是本地 TSAP 字符串。
    输出参数:
    Done:当连接操作完成且没有错误时,指令置位 Done 输出。
    Busy:当连接操作正在进行时,指令置位 Busy 输出。
    Error:当连接操作完成但发生错误时,指令置位 Error 输出。       
    Status:如果指令置位 Error 输出,Status 输出会显示错误代码。具体错误代码对应详见手册 。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。
    3、接收数据
    将数据接收缓冲区设为 4 个字节,接收数据缓冲区以 VB3000 起始。

    图 4. 调用 TCP_RECV 指令
    指令的参数
    输入参数:
    EN :使能输入
    ConnID:连接 ID (ConnID) 是此发送操作的连接 ID 号。
    MaxLen :接收的最大字节数(1 到 1024)。
    DataPtr :指向接收数据存储位置的指针。
    输出参数:
    Length :实际接收的字节数。仅当指令置位 Done 或 Error 输出时,Length 才有效。如果指令置位 Done 输出,则指令接收整条消息。如果指令置位 Error 输出,则消息超出缓冲区大小 (MaxLen) 并被截短。
    4、终止通讯连接
    用户可通过 DISCONNECT 指令终止指定 ID 的连接。

    图 5. 调用 DISCONNECT 指令
    参数说明:
    输入参数:
    EN : 使能
    Req:沿触发。
    输出参数:
    Done:当连接操作完成且没有错误时,指令置位 Done 输出。
    Busy:当连接操作正在进行时,指令置位 Busy 输出。
    Error:当连接操作完成但发生错误时,指令置位 Error 输出。       
    Status:如果指令置位 Error 输出,Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。
    5、分配库存储区
    开放式用户通信库需要使用 50 个字节的 V 存储器,用户需手动分配 。在指令树的程序中,以鼠标右键单击程序块,在弹出的快捷菜单中选择库存储器。如图所示:

    图 6. 库存储器
    在弹出的选项卡中设置库指令数据区:

    图 7. 分配地址
    S7-200 SMART 服务器端编程
    1、设置服务器的 IP 地址
    设置 IP 地址为 192.168.0.102

    图 8. 设置 IP 地址
    2、建立 ISO-on-TCP 连接
    调用 ISO_CONNECT 指令建立 ISO 连接。设置连接伙伴地址为 192.168.0.101,连接标识 ID 为 1,本地和远端的 TSAP 要交叉对应。TSAP 不能少于三个字符。
    利用 SM0.0 常闭点使能 Active,设置为被动连接。

    图 9. 建立连接
    3、发送数据
    调用 TCP_SEND 指令将以 VB3000 为起始,数据长度为 4 字节的数据发送到连接 ID 为 1 指定的远程设备。
    利用 1HZ 的时钟上升沿触发发送请求。

    图 10. 调用 TCP_SEND 指令
    指令的参数
    输入参数:
    EN :使能输入
    Req:沿触发
    ConnID:连接 ID (ConnID) 是此发送操作的连接 ID 号。
    DataLen :DataLen 是要发送的字节数(1 到 1024)。
    DataPtr:DataPtr 是指向待发送数据的指针。
     
    输出参数:
    Done:当连接操作完成且没有错误时,指令置位 Done 输出。
    Busy:当连接操作正在进行时,指令置位 Busy 输出。
    Error:当连接操作完成但发生错误时,指令置位 Error 输出。       
    Status:如果指令置位 Error 输出,Status 输出会显示错误代码。具体的错误代码详见手册 。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。
    监控结果

    图 11. 监控结果
    ISO-on-TCP 通信例程
    为了更好地理解 ISO-on-TCP 的编程,可参考下面的例程。
     注意:
    1. 该例程使用 STEP 7-Micro/WIN SMART 编写。
    2. 在建立连接时需先触发服务器端的建立连接指令,再触发客户端。
     ISO-on-TCP_Clent 客户端程序
     ISO-on-TCP_Server 服务器端程序
     注意:
    此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为 此联系西门子技术支持与服务部门。

    leikang
    S7-200 SMART 之间 ISO-on-TCP 通信例程

    所需条件:
    1、软件版本:STEP 7-Micro/WIN SMART V2.2
    2、SMART CPU 固件版本: V2.2
    3、通讯硬件:TP电缆(以太网电缆)
    4、PC (带以太网卡)
    所完成的通讯任务:
    将作为服务器端(192.168.0.102)的 V3000-VB3003 的数据传送到客户端(192.168.0.101)的 VB3000-VB3003 内。
     注意:
    在建立连接时需先触发服务器端的建立连接指令,再触发客户端。
     ISO-on-TCP_Clent 客户端程序
    ISO-on-TCP_server 服务器端程序
    以上例程的详细描述可以参考:S7-200 SMART 之间 ISO-on-TCP 通信
    免责声明
    本例程仅供参考,程序中的 CPU 版本、类型可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。

    leikang
    S7-200 SMART CPU 与 S7-300 CPU 进行 MPI 通讯
    S7-200 SMART PLC 通过 EM DP01 模块与 S7-300 PLC 之间采用 MPI 通讯方式时,S7-200 SMART PLC 中不需要编写任何与通讯有关的程序,只需要将要交换的数据整理到一个连续的 V 存储区当中即可,而S7-300 PLC 中需要在组织块 OB1(或是定时中断组织块 OB35)当中调用系统功能 X_GET(SFC67)和 X_PUT (SFC68),以实现 S7-200 SMART PLC 与 S7-300 PLC 之间的通讯。
    S7-300 PLC 调用 SFC67 和 SFC68 时,该系统功能的 "VAR_ADDR" 参数需要填写 S7-200 SMART PLC 侧数据地址区。由于 S7-200 SMART PLC 的数据区为 V 区,如果这个参数填写为 P#DB1.DBX×× BYTE n 则对应的就是 S7-200 SMART PLC 侧 VB×× ~ VB(××+n -1)的数据区。 例如交换的数据存在 S7-200 SMART PLC 中 VB50 到 VB59 这 10 个字节当中,则“VAR_ADDR”参数应为 P#DB1.DBX50.0 BYTE 10。首先根据 S7-300 的硬件配置,在 STEP7 当中组态 S7-300 站并且下载,注意 S7-300 出厂默认的 MPI 地址是 2,需要保证 DP 01 模块站地址与 S7-300 地址不冲突。例子程序当中将 S7-300 MPI 地址设定为 2,DP01 地址通过外部拨码设定 3,另外 DP01 模块自支持自适应波特率,S7-300 侧可以根据实际需要设置波特率。
    S7-200 SMART 组态
    S7-200 SMART 系统中需根据 EM DP 01 模块所在的实际位置在系统块中添加 EM DP01 模块,但添加的 DP01 模块无需再进行其他设置,本例中 DP01 模块紧邻 CPU,MPI 地址通过 DP01 模块外部拨码开关进行调节。系统块设置如下图:

    S7-300 CPU 在 Step7 平台下组态
    S7-300 PLC 修改 MPI 地址可以参考下图:

    例子程序在 OB1 当中调用数据读写功能块:SFC67 和 SFC68,如下图所示:

    分别在 STEP 7-MicroWIN SMART 和 STEP7 当中监视 S7-300 PLC 和 S7-200 SMART PLC 当中的数据,数据监视界面如下:


    S7-300 CPU 在 TIA 平台下组态
    S7-300 PLC 修改 MPI 地址可以参考下图:

    例子程序在 OB1 当中调用数据读写功能块:X_PUT 和 X_GET。

    分别在 STEP 7-MicroWIN SMART 和 STEP7 当中监视 S7-300 PLC 和 S7-200 SMART PLC 当中的数据,数据监视界面如下:



    leikang
    DP01 模块简介
    使用 EM DP01 扩展模块可以将 S7-200 SMART CPU 做为 PROFIBUS-DP 从站连接到 PROFIBUS 通信网络,EM DP01 可作为 DP V0/V1 主站的通信伙伴。通过模块上的旋转开关可以设置 PROFIBUS-DP 从站地址。该模块支持 9600 波特到 12M 波特之间的任一 PROFIBUS 波特率, 最大允许 244 输入字节和 244 输出字节。 每个 S7-200 SMART CPU(仅限 ST 与 SR 型号)可扩展两个 PROFIBUS EM DP01。
    支持协议
    DP01 模块同时支持 PROFIBUS-DP 和 MPI 两种协议。EM DP01 PROFIBUS DP 模块的 DP 端口可以连接到网络中的 DP 主站,并且依然能够作为 MPI 设备与其它主站设备(例如,同一网络中的 SIMATIC HMI 设备或 S7-300/S7-400 CPU)通信。因 DP01 只能作为从站,所以两个 DP01 之间不能通信。作为 MPI 从站时, 连接资源共 6个,1 个预留给 OP,其余 5 个为自由资源,可以与 MPI 主站以及HMI设备通讯。
    DP01 模块使用前提条件
    编程软件版本:STEP 7-MicroWIN SMART V2.1 及以上版本。
    CPU 固件:V2.1 及以上版本
    数据一致性
    定义
    同步运行中无法修改的数据区称为一致性数据区,即在超出一致性数据区所允许最大空间的连续数据区中,可同时包含新数据和旧数据。
    示例
    如果中断通信块的执行过程(例如,由优先级更高的硬件中断程序中断),可能会出现不一致性现象。如果该中断程序中的用户程序对已由该通信块局部处理的数据进行更改,则传送数据开始于:
    部分开始于处理硬件中断之前,部分开始于处理硬件中断之后,这意味着,这些数据是不一致的(不连续)。
    PROFIBUS 支持三种类型的数据一致性:
    字节:确保字节作为整体传送。 字:确保字的传送过程不会被 CPU 中的其它进程所中断。 缓冲区:确保整个数据缓冲区作为一个单位传送,不会被 CPU 中的其它进程所中断。 EM DP01 在数据处理过程中始终利用缓冲区一致性。
    EM DP01 和 S7-200 SMART CPU 可确保整个传送的缓冲区一致性
    EM DP01 以一条消息的形式接收 DP 主站的输出。 EM DP01 将所有输出以一条消息形式传送到 S7-200 SMART CPU,并且传送过程不可中断。 S7-200 SMART CPU 一次性将所有输出传送到 V 存储器。传送不可受用户干扰而中断。 输入到 DP 主站时也会确保这种一致性
    S7-200 SMART CPU 一次性将所有输入从 V 存储器传出。传送不可受用户干扰而中断。 S7-200 SMART CPU 将所有输入以一条消息形式传送到 EM DP01。该传送不可被中断。 EM DP01 将输入以一条消息形式发送到 DP 主站。 DP 主站的一致性
    DP 主站 CPU 的一致性并非总是缓冲区一致。除非 DP 消息非常小,否则 DP 主站 CPU 不会将整个 DP 消息作为一个不可分割的对象进行处理。DP 主站 CPU 通常会以较小的单位移动 PROFIBUS 数据。既可以通过它们将数据移动到 I/O 区,也可以由用户使用 DPRD_DAT(读取 DP 设备的一致性数据)与 DPWR_DAT(写入 DP 设备的一致性数据)指令来控制移动。使用 DPRD_DAT 和 DPWR_DAT 指令,一次可获取一个组态 "插槽" 的信息。因为允许有两个组态插槽,这样就可以使用两条 DPRD_DAT 指令来获取所有数据。仅对每条 DPRD_DAT 指令保证一致性。
    支持的组态

    在 EM DP01 组态中,可以支持 2 个插槽,混用并匹配以上组态中的任意两种。EM DP01 最大允许 244 输入字节和 244 输出字节,如果对 EM DP01 使用两种组态,则所有的输入数据和所有的输出数据都是连续的。以下是两个示例:
    一个 32 字节输入输出的组态加上一个 8 字节输入输出的组态得到总计 40 输入字节以及 40 输出字节。 一个 122 字节输入输出的组态加上一个 122 字节输入输出的组态得到总计 244 输入字节以及 244 输出字节。 主站中与从站的通信数据区对应关系
    假设 DP 主站已定义一个 I/O 组态,其包含两个插槽且 V 存储器偏移量为 1000。将第一个插槽组态为 32 字节的输入输出,第二个插槽组态为 8 字节的输入输出。S7-200 SMART CPU 的输出与输入缓冲区均为 40 字节 (32 + 8)。输出数据(来自 DP 主站)缓冲区起始于 VB1000;输入数据(送入 DP 主站)缓冲区紧随输出缓冲区并起始于 VB1040。

    GSD 文件
    不同的 PROFIBUS 设备具有不同的性能特征。这些特点会因功能(例如 I/O 信号和诊断消息的数量)或总线参数(例如传送速度与时间监视)而不同。这些参数因设备类型和供应商不同而不同,通常记录在技术手册中。为帮助用户简化 PROFIBUS 的组态,可在一个称为设备数据库文件或 GSD 文件的电子数据表中指定具体设备的性能特征。基于 GSD 文件的组态工具可以将不同供应商的设备方便地集成在同一个网络中。GSD 设备数据库文件以精确定义的格式全面地描述设备的各项特征。供应商负责为每种设备都准备 GSD 文件并提供给 PROFIBUS 用户使用。组态系统使用 GSD 文件可读取 PROFIBUS 设备的特征并在组态网络时使用这些信息。
    DP01 作为一个特殊的 PROFIBUS-DP 从站模块,其相关参数(包括上述的数据一致性)是以 GSD(或 GSE)文件的形式保存的。在主站中配置 DP01,需要安装相关的 GSD 文件。
    EM DP 01 GSD文件
    Step7 平台下安装 GSD 文件
    首先,在 STEP 7 项目里插入一个 S7-300 的站:

    STEP7 的硬件组态窗口中的 "Options" 菜单中点击“Install GSD File..”,导入 EM DP 01 GSD 文件,安装 DP01 配置文件,如下图:

    选择 DP01 GSD 文件所在路径:

    导入 GSD 文件后,在右侧的设备选择列表中找到从站 EM DP01,(添加的 GSD 文件一般位于 PROFIBUS DP->Additional Field Device->PLC->SIMATIC->EM DP 01 PROFIBUS-DP) 并且根据通讯字节数,选择相应的配置:

    TIA 平台下安装 GSD 文件
    1. 启动 TIA Portal 软件。
    2. 新建项目。
    3. 在项目视图中,找到菜单栏并选择:"选项 > 管理通用站描述文件 (GSD)"(Options > Manage general station description files (GSD))

    4. 在 "源" (Source) 路径中,找到之前加载到计算机中的 EM DP01 GSD 文件。
    5. 选中相应 GSD 文件行的复选框。
    6. 单击 "安装" (Install) 按钮。

    7. 执行上述操作后,将在硬件目录中安装 EM DP01 GSD 文件,如下图所示:

    DP01 LED 指示灯
    EM DP01 PROFIBUS DP 模块的前面板上有四个状态 LED 用于指示 DP 端口的工作状态:
    DIAG LED:
    – 双色(绿色/红色)LED 指示 EM DP01 的工作状态和故障状态
    – 红色闪烁:自启动时开始闪烁,直到 CPU 完成 EM DP01 登录后停止闪烁,或在 EM DP01 出现故障时闪烁
    – 绿色闪烁:EM DP01 等待 S7-200 SMART CPU 传输组态和参数(登录后绿灯立即闪烁)期间或固件升级期间
    – 绿色常亮:无任何故障且 EM DP01 已组态
    POWER LED:
    – 绿色常亮:有用户 24 V DC
    – 灭:无用户 24 V DC
    DP ERROR LED:
    – 红色闪烁:DP 主站写入 EM DP01 的 I/O 组态或参数信息存在错误
    – 红色常亮:DP 通信被中断
    – 灭:无错误或从未建立数据交换
    DX MODE LED:
    – 灭:S7-200 SMART CPU 通电后,未尝试进行 DP 通信或 DP 通信被中断
    – 绿色常亮:成功发起 DP 通信后(EM DP01 已进入与 DP 主站交换数据的模式),该指示灯保持常亮,直至 EM DP01 退出数据交换模式
    下表总结了 EM DP01 状态 LED 指示的状态:
    LED 灭 红色 红色闪烁 绿色闪烁 绿色 DIAG - 模块内部故障 自启动时开始闪烁,直到 CPU 完成 EM DP01 登录后停止闪烁,或在 EM DP01 出现故障时闪烁 EM DP01 等待 S7- 200 SMART CPU 传输组态和参数期间或 固件升级期间 无任何故障; EM DP01 已组态 POWER 无 24 V DC 用户电源 - - - 24 V DC 用户电源正常 DP ERROR 无错误 DP 通信中断;数据交换模式停止 参数设置/组态错误(来自 DP 主站) - - DX MODE 数据交换模式未激活或数据通信中断 - - - 数据交换模式激活 常问问题
     是否可以通过 DP01 模块控制变频器?
    不可以。DP01 是 PROFIBUS-DP 从站模块,不能做主站;而变频器需要接受主站的控制。
     为什么重新设置 DP01 地址后不起作用?
    对 DP01 重新设置地址后,需断电后重新上电才起作用。或者检查 DP01 址拨码是否到位。
     主站中对 DP01 的 I/O 配置的数据通信区已经到了最大,而仍不能满足需通信的数据量怎么办?
    可以在传送的数据区中设置标志位,分时分批传送。
     DP01 所支持的通信速率和距离是多少?
    电缆长度 所支持的通信速率 1200m 93.75k 1000m 187.5k 400m 500k 200m 1M 到 1.5M 100m 3M 到 12M  DP01 的联网能力如何?
    联网能力 数据 站地址设置 0-99 (由旋钮开关设定) 每段最大站数 32 每个网络最大站数  126,最多 99 个 DP01 站 MPI 连接 一共 6 个,1 个保留给 OP 一个网络上只能有最多 99 个 DP01 站,是因为其地址设置开关的限制。
     S7-300 或 S7-400 的 PROFIBUS_DP 主站最多可以有多少个 DP01 从站?
    这与 S7-300 或 S7-400 的 DP 口或 DP 模板的能力有关,要根据它所支持的 DP 从站数而定。一个网上最多可以有 99 个 DP01。

    leikang
    S7-200 SMART CPU 与 S7-300 CPU 进行 DP 通讯
    S7-300 与 S7-200 SMART 通过 DP01 进行 PROFIBUS DP 通讯,需要进行 S7-300 站组态,在 S7-200 SMART 系统中不需要对通讯进行组态和编程,只需要将要进行通讯的数据整理存放到相应的 V 存储区,并且 S7-300 组态 DP01 从站时设置正确的地址即可。DP01 的地址,在模块本身上的拨码设置分为 X0(地址个位)和 X10(地址十位);DP01 是波特率自适应的,取决于 S7-300 的组态。
    注意:S7-200 SMART 系统虽然中不需要对通讯进行组态和编程,但是需要在 STEP 7-Micro/WIN SMART 系统块中组态 EM DP 01 模块。
    S7-300 站组态
    首先,在 STEP 7 项目里插入一个 S7-300 的站并建立 PROFIBUS DP 主站网络:

    导入 EM DP 01 GSD 文件后,在右侧的设备选择列表中找到 DP01 从站,PROFIBUS DP-Additional Field Device-PLC-SIMATIC-EM DP 01 PROFIBUS-DP,并且根据通讯字节数,选择相应的配置。本例中的插槽一包含 "4Bytes In/Out" 预组态 I/O 选项,插槽二包含 "8 Bytes In/Out" 预组态 I/O 选项。如下图:

    确定 S7-300 硬件组态中所设置 DP01 的 DP 从站地址,如下图红框标注,为 DP 从站 DP01 的站地址。

    如果使用的 S7-200 SMART 通信区域不从 VB0 开始,则还需要在“Parameter Assignment”选项卡中设置 "I/O Offset in the V-memory" 参数,
    该参数的设置如下图所示(本例中 S7-200 SMART 通信区域是从 VB0 开始,所以此参数设置为 0):

    组态完系统的硬件配置后,将编译下载到 S7-300 的 PLC 当中。 在 S7-200 SMART 侧断电的情况下,将 DP01 的拨位开关拨到与 S7-300 侧硬件组态的设定值一致。
    打开 STEP7 中的变量表和 STEP 7-MicroWIN SMART 状态表进行监控,它们的数据交换结果如下图:


    VB0-VB11 是 S7-300 写到 S7-200 SMART 的数据,VB12-VB23 是 S7-300 从 S7-200 SMART 读取的值。
    注:可以在固件版本 V2.5 以上的 S7-300 CPU Properties 的“Cycle/Clock Memory”标签下修改过程映像区的大小,使 DP 通讯的数据区在过程映像区之内,这样设置的话就可以直接对过程映像区进行操作。在过程映像区中的数据是始终一致的,由操作系统对过程映像区进行自动更新。无需再通过 DPRD_DAT(读取 DP 设备的一致性数据)与 DPWR_DAT(写入 DP 设备的一致性数据)保证数据一致性。

    DP01 上拨位开关的位置一定要和 S7-300 中组态的地址值一致。
    TIA 中配置
    插入 CPU 315-2 DP 作为 DP 主站。

    插入 EM DP01 PROFIBUS DP 模块。如下图所示,在 DP 主站和设备之间创建 PROFIBUS 网络。

    设备视图中组态 DP01 的通讯区,本例中的插槽一包含 "4 Bytes In/Out" 预组态 I/O 选项,插槽二包含 "8 Bytes In/Out" 预组态 I/O 选项。在 "Properties"、"General" 选项卡区域,单击 "Device-specific parameters" 以显示 "I/O Offset in the V memory" 字段。在此处可分配为该操作预留的那部分 V 存储器的启动地址。

    注意:VB0-VB11 是 S7-300 写到 S7-200 SMART 的数据,VB12-VB23 是 S7-300 从 S7-200 SMART 读取的值。
    打开博图软件中的监控表和 STEP 7-MicroWIN SMART 状态表进行监控,它们的数据交换结果如下图:




    leikang
    EM DP01 与 SIMATIC NET 进行 S7 通信
    硬件:
    ① S7-200 SMART 以及 EM DP01 模块(CPU 固件版本 V 2.1 以上才可以使用 EM DP01)
    ② PC 机 (PCI-E 插槽) 
    ③ CP 5624 卡
    软件:
    ① STEP 7-Micro/WIN SMART V2.1
    ② STEP 7 Professional(TIA Portal V13 SP1 Upd 9)
    ③ SIMATIC NET V13 SP2
    ④ 操作系统  Windows 7 Professional 64 位 SP1
    在 TIA Portal 平台中配置 PC station

    1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中,创建新项目
    2. 添加 PC 系统并命名设备名称
    进入“项目视图”,在“项目树”下双击“添加新设备”,在对话框中选择 PC 系统>常规 PC,命名为 PC station 如图1 所示

    图 1. 添加新设备
    3. 添加 OPC 服务器及 CP 5624 卡
    进入设备视图>硬件目录>用户应用程序> OPC 服务器,双击,添加 OPC 服务器;
    进入设备视图>硬件目录>通信模块> PROFIBUS> CP5624,找到相应的 CP 卡双击,添加 CP 5624 卡 ,结果如图 2 所示


    图 2. 添加 OPC 服务器及 CP5624
    4. 为 CP 5624 卡通信口分配 DP 地址
    在“设备视图”中点击 CP5624 上代表 PRIBUS 通信口的紫色方块,在下方会出现 PROFIBUS 接口的属性,在“PROFIBUS 地址”下,点击“添加新子网”,建立 PRFIBUS_1 网络;分配 CP5624 的接口类型为 PROFIBUS ;地址设置为 3 ,如图 3 所示

    图 3. 添加子网并分配 DP 地址
    5. 在网络视图中,点击代表 PROFIUBS_1 网络的紫色实线,属性>常规>网络设置,可以设置传输率,此处设定传输率为 1.5 Mbps,如图 4 所示。

    图 4. 设置传输率
    6. 建立 S7 连接并且设置连接参数
    打开网络视图,点击连接,选择S7 连接,默认连接为HMI连接,需要修改;点击 OPC server,右键添加新连接;创建新连接对话框选择未指定,本地接口选择 CP5624,点击添加;
    属性>常规>常规,伙伴站点及接口设置为未知;伙伴地址设置为 4(为 EM DP01 的地址);
    属性>常规>地址详细信息,伙伴 TSAP 设置为 03.00 。
    设置步骤如图 5 所示。






    图 5. 建立 S7 连接及参数配置
    7. 生成 XDB 组态文件
    网络视图中,点击 PC station 站点,属性> XDB 组态,勾选“生成 XDB 文件” 然后将项目进行编译。如图 6 所示。


    图 6. 生成 XDB 文件
    STATION CONFIGURATOR 中导入 XDB 组态文件
    在计算机“开始”菜单中 ,搜索,输入关键字 STATION CONFIGURATOR,双击找到的软件,打开;
    在打开的 Station Configuration Editor 中点击“Import Station”,选择 XDB 存储路径导入
    导入过程及结果如图 7 所示。


    图 7. 导入 XDB 文件
    S7-200 SMART 侧设置 DP01 的地址
    使用 EM DP01 要保证 CPU 的硬件固件在 V2.1 及其以上;编程软件的版本在 V2.1 以上
    1、打开STEP 7-MicroWIN SMART > 项目树 > 系统快,组态 EM DP01 模块,如图 8 所示,然后编译,下载。

    图 8. 系统块组态 EM DP01
    2、设置 EM DP01 模块地址为 4,设置完需要断电重启,如图 9 所示。

    图 9. 设置 EM DP01 地址
    3、使用 DP 总线和 DP 总线连接器连接 EM DP01 的 RS485口 和电脑上安装的 CP5624 的 RS 485 口, EM DP01 模块波特率自适应,不用单独设定。
    使用 OPC SCOUT 测试
    在计算机“开始”菜单中,搜索 SIMATIC NET 的 OPC Scout V10 ,双击打开,建立变量:MB10,MB11 ,MD20, MD24 ,MD28。
    打开 STEP 7-MicroWIN SMART,在状态图表中赋值。
    如图 10 所示


    图 10. 通信结果
    常见问题
     如何理解建立的变量的起始地址,数据类型及个数
    以建立 M 区变量为例说明,如下图所示

     S7-200 SMART 要交换 V 区数据,OPC scout 中无法添加 DB 块的变量怎么办?
    S7-200 SMART 要通信 V 区数据,需要在 OPC SCOUT 中建立 DB1 的数据
    如果在 OPC Scout 中无法建立 DB 块数据,可以先插入 M 变量,然后进行修改,修改方法如下:


    注意!OPC scout 如果无法建立 DB 块变量,在 M 区修改以后也只能用于测试 S7 通信是否成功,在客户端需要单独建立变量。

    leikang
    概述
    Simatic S7-200 SMART PLC 是全新的针对经济型自动化市场的自动化控制产品。该产品在中国进行研发和生产、凝聚了西门子中德工程师的丰富经验,以期满足不断增长的中国 OEM 市场,并为客户提供经济、便捷以及可靠的自动化控制产品。该产品具备机型丰富、选件多样、软件友好多种特点,并可无缝集成 SMART LINE 触摸屏及 V20 变频器。
    凭借西门子在华 140 年的电气工程领域的经验,S7-200 SMART PLC 设计精良且性能可靠。CPU 模块配备了标准型和经济型供用户选择,分别用于复杂和简单的工业领域。可扩展的标准型模块可处理更多 I/O 需求的复杂任务,最大可扩展到 188 点,可满足大部分小型自动化设备的控制需求。经济型 CPU 模块则直接通过单机本体满足控制需求。S7-200 SMART CPU 模块本体最多可集成3路高速脉冲输出,频率高达 100KHz,支持 PWM/PTO 输出方式以及多种运动模式,可自由设置运动包络。
    新颖的信号板设计可扩展通信端口、数字量通道以及模拟量通道。在不额外占用电控柜空间的前提下,信号板扩展能更加贴合用户的实际配置。高速处理芯片,基本指令执行时间可达 0.15μs。该产品还集成了 Micro SD卡 插槽,使用市面上通用的 Micro SD 卡即可实现程序的更新和 PLC 固件升级,极大地方便了客户工程师对最终用户的远程服务支持,也省去了因 PLC 固件升级返场服务所带来的不便。
    作为 SMART 解决方案的核心,Simatic S7-200 SMART PLC 可无缝集成西门子 SMART LINE 操作屏和 Sinamics V20 变频器,为 OEM 客户提供高性价比的小型自动化解决方案,同时满足客户对人机界面、控制和传动的一站式需求。
    创新一直是西门子不断进步的源动力之一,加之西门子坚持扩大本地化的投入,为其新产品在这个快速变化的市场带来了更多的竞争优势。同时,适应本地需求的 SMART 产品和解决方案不仅将提升中国 OEM 市场的自动化水平,也将助力加快中国工业化的发展进程。
    Simatic S7-200 SMART PLC 产品亮点
    机型丰富,更多选择
    S7-200 SMART PLC 提供不同类型、I/O 点数丰富的 CPU 模块,单体I /O 点数最高可达 60 点,可满足大部分小型自动化设备的控制需求。另外,CPU 模块配备标准型和经济性供用户选择,对于不同的应用需求,产品配置更加灵活,最大限度的控制成本。
    选件扩展,精确定制
    S7-200 SMART PLC 新颖的信号板设计可扩展通讯端口、数字量通道、模拟量通道、在不额外占用电控柜空间的前提下,信号板扩展能更加贴合用户的实际配置,提升产品的利用率,同时降低用户的扩展成本。
    高速芯片,性能卓越
    S7-200 SMART PLC 配备西门子专用高速处理器芯片,基本指令执行时间可达 0.15us,在同级别小型 PLC 中遥遥领先。一颗强有力的“芯”,能让您在应对繁琐的程序逻辑,复杂的工艺要求时表现的从容不迫。
    以太互动,经济便捷
    S7-200 SMART PLC 的 CPU 模块本体标配以太网接口,继承了强大的以太网通信功能。一根普通的网线即可将程序下载到 PLC 中,方便快捷,省去了专用编程电缆。通过以太网接口还可与其他 CPU 模块、触摸屏、计算机进行通讯,轻松组网。
    三轴脉冲,运动自如
    S7-200 SMART PLC 的 CPU 模块本体最多集成3路高速脉冲输出,频率高达 100KHz,支持 PWM/PO 输出方式以及多种运动模式,可自由设置运动包络。配以方便易用的向导设置功能,快速实现设备调速,定位等功能。
    通用SD卡,方便下载
    S7-200 SMART PLC 本机继承 Micro SD 卡插槽,使用市面上通用的 Micro SD 卡即可实现程序的更新和 PLC 固件升级,极大地方便了客户工程师对最终用户的远程服务支持,也省去了因 PLC 固件升级返场服务的不便。
    软件友好,编程高效
    S7-200 SMART PLC 在继承西门子变成软件强大功能的基础上,融入了更多的人性化设计,如新颖的带状式菜单,全移动式界面窗口,方便的程序注释功能,强大的密码保护等。在体验强大功能的同时,大幅提高开发效率,缩短产品上市时间。
    完美整合,无缝集成
    SIMATIC S7-200 SMART 可编程控制器,Smart Line IE 触摸屏和 SINAMICS V20 变频器完美整合,为 OEM 客户带来高性价比的小型自动化解决方案,满足客户对于人机交互、控制、驱动等功能的全方位需求。

    leikang
    说明
    S7-200 SMART PLUS 是由西门子技术支持工程师利用业余时间制作的,关于西门子小型自动化(S7-200 SMART)产品的技术参考文档。
                 读者必须在阅读《S7-200 SMART系统手册》的基础上参考本文档。
    S7-200 SMART PLUS 不能代替或部分代替西门子的任何正式出版物,如产品宣传样本,产品目录,产品手册,随同产品、软件发布的说明性文档和在线帮助文件等等。S7-200 SMART PLUS 也无意更改上述正式技术资料的任何内容,或提供勘误。在所有正式场合,一切应以西门子的正式出版物为准。
    S7-200 SMART PLUS 的内容来自西门子的技术资料,西门子的产品开发、维修、技术支持工程师的知识、经验,用户的知识和经验,以及其他技术资料。
    S7-200 SMART PLUS 包括对用户经常,甚至是必然遇到的问题、疑问的解答,以及隐含着其他许多问题答案的叙述性文字,还有一些作者认为有助于读者理解、解决问题的背景知识。S7-200 SMART PLUS 力争做到精简实用,几乎其中的每个段落、每句话都有一定的针对性。
                  虽然作者已经尽力保证其正确性,但疏漏难免。读者如欲采纳,风险自担。
     
    使用
    S7-200 SMART PLUS 是HTML Help 格式的文档。
    S7-200 SMART PLUS 以便于查阅为目的设计,没有一定的阅读顺序。各篇技术资料在 S7-200 SMART PLUS 窗口左侧的目录中归类。读者可以直接进入树型目录,寻找感兴趣的标题。文章中可能有超级链接,指向其他文章、其他文章的某部分,或者互联网网址。
    代表这是一个分类目录,同时其中有文字说明  代表这仅是一个分类目录  鼠标单击目录树的可打开下一级目录  文章中没有回退链接,可以用窗口工具栏上的“后退”、“前进”按钮  按住 Shift 键再用鼠标点击文档中的链接,可在新的浏览器窗口中打开链接  用工具栏“打印”按钮可以打印文章  在窗口左侧的“搜索”标签中,可以进行全文范围内的文本检索   
    下载
    S7-200 SMART PLUS 将会根据情况更新。读者可以从西门子(中国)自动化与驱动集团技术支持与服务首页,进入“下载中心”下载。
    http://www.ad.siemens.com.cn/download 文档编号 A0666 
    意见与建议
    欢迎读者就 S7-200 SMART PLUS 的内容、形式提出意见与建议。本文档当然不能涵盖全部的相关技术问题,如果读者认为有缺失的,或者难以理解的地方,尽请指出。

    leigehong
    在之前的文章中,我们讨论了 PLC 中的定时器、不同类型以及如何使用它们。计时器实际上并不需要实时工作,因为它们只是根据您的设置来计算秒或毫秒。
    但对于某些应用,您需要了解 PLC 程序的真实日期和时间,例如出于诊断目的。
    在这篇文章中,我们将讨论 PLC 的系统和本地时间。
    内容:
    为什么 PLC 需要实时性? 示例程序和模拟 什么是系统时间? 当地时间是几点? 结论。 为什么我需要 PLC 中的实时功能?
    在 PLC 的许多应用中,出于多种不同的原因,您需要了解进程运行时的实时情况。
    以下是其中一些原因:
    将 PLC 备份到主服务器。 对于 PLC 的诊断,需要有诊断的时间记录,以了解某一事件发生的时间,否则诊断信息就没有多大用处。 对于需要使用时间中断 OB10 的应用程序,您需要知道实际时间。 您可能需要在需要处理实时应用程序的逻辑部分中使用本地时间或系统时间。 对于数据记录,如果您有重要的数据要保存,并且需要每次数据记录的时间戳,那么您需要为 PLC 设置正确的时间,以便存储的数据有意义。 PLC 示例程序和仿真
    为了更好地理解什么是 PLC 中的系统时间和本地时间,我们将从创建一个非常简单的程序开始,并用它来解释 PLC 内部实时的概念。
    检查以下步骤:
    在本文中,我们不会创建任何 PLC 逻辑,但我们会展示 PLC 中与系统和本地时间相关的一些配置,如何设置它们,以及有什么区别。
    打开西门子 Tia Portal,添加一个新设备,这次我们将使用 CPU 1512C-1 PN。见图1。

    图 1 – 添加新 PLC
    编译并启动新的 PLC 仿真。打开在线&诊断页面,查看PLC的设定时间。见图2。

    图 2 - PLC 在线时间
    从上图可以看到有两个不同的时间:
    PG/PC 时间 – 这是您的 PC 本身的本地时间。 模块时间 – 这是 PLC 本身内部的实际时间。 这两个时间可以设置为相同的值,也可以设置为不同的值。最好使它们相同,最好使模块时间与您的本地时间相似,或者更具体地说与将使用 PLC 的地区的本地时间相似。见图3。

    图 3 - PLC 设定时间
    如果您希望模块时间与本地时间相同,请选择从 PG/PC 获取并按应用。
    在主 OB1 中,拖放 RD_SYS_T 和 RD_LOC_T 指令。
    这些是读取系统时间和读取本地时间指令。这些指令是 PLC 内部的内置功能 FC,用于将 PLC 的本地时间和系统时间写入指令输出 OUT 中选择的目的地。见图4。

    图 4 – 添加读取系统和当地时间指令
    添加一个新的全局数据块,并定义一些要使用的标签。见图5。

    图 5 – 创建一个新的全局数据块
    再次运行模拟并检查两次。见图6

    图 6 PLC 在线本地时间和系统时间
    从上图中可以看出,PLC 的本地时间和系统时间是相同的,但与 PC 机的实际本地时间不同。
    如果您还记得的话,我们已将 PLC 的模块时间设置为与 PG/PC 时间类似,即您的本地时间。见图7。

    图 7 – 模块时间和 PG/PC 时间
    如您所见,在设置时间页面上,模块时间选择从 PG/PC 时间获取。但在实际情况中,它们是不同的。为什么?
    为什么时代不同? 由于 PLC 本地时间的默认设置是 UTC+0 或 Zulu 时间(如果您熟悉该术语),因此您无需从在线和诊断页面更改它,而是从 PLC 本身的属性更改。见图8。

    图 8 – PLC 中的时间配置
    如您所见,PLC 时间的默认设置设置为 UTC+0 时间,这就是 PLC 模块时间与实际本地时间不同的原因。除非您实际上在伦敦,否则您不会遇到这个问题。
    为了更正 PLC 本地时间,我们必须在配置中更改它,我们需要将时区更改为我们拥有的时区,在我的例子中是 UTC+02:00。见图9。

    图 9 – 将 PLC 本地时间调整为您所在的时区
    您还可以看到夏令时选项已被停用,因为它在我的国家/地区没有使用。如果您所在地区使用它,则必须激活它。
    现在所有配置均已正确设置,返回并在模拟中再次查看本地时间和系统时间。见图10。

    图 10 – PLC 的本地时间现在与 PC 相同
    现在你看到调整 PLC 时区后,PLC 的本地时间和你所在地区的实际本地时间是一样的。
    正如我们之前所说,由于我们上面提到的许多原因,设置正确的 PLC 本地时间非常重要。您现在可以定义 PLC 的系统时间和本地时间吗?
    PLC 中的系统时间
    是 CPU 时钟的模块时间。
    CPU 时钟将模块时间解释为协调世界时 (UTC)。因此,模块时间的存储始终不包含 CPU 时钟中的“本地时区”或“夏令时”因素。然后 CPU 时钟根据模块时间计算 CPU 时钟的本地时间。
    CPU 时钟的模块时间用作从 CPU 开始的所有时间处理的模板。
    使用示例:
    根据模块时间计算 CPU 时钟本地时间 “在线与诊断” 下以当地时间表示模块时间 CPU 诊断缓冲区中的条目 PLC 当地时间
    有关时区以及夏令时和标准时间开始的信息(这些信息已在 CPU 时钟配置中设置)用于输出本地时间。
    本地时间是指您的电脑上或您所在国家/地区的时间,不同地区的时间会有所不同。
    结论
    许多应用要求 PLC 了解过程的实时或本地时间,以便能够执行某些任务,例如数据记录和诊断任务。在以后的文章中,我们将展示一些逻辑需要实时的应用程序
    应手动配置 PLC 的本地时间,以匹配 PLC 的使用区域。

    leigehong
    在之前的文章中,我们讨论了 SIEMENS TIA Portal 中的不同类型的块,其中讨论了功能块 FB、功能 FC 和数据块 DB。
    在本文中,我们将讨论西门子 PLC 中的另一种类型的块,这些是组织块,在本文中,我们将讨论其中最重要的组织块,即主组织块或 OB1。
    内容:
    什么是组织块? 不同类型的 OB。 什么是 OB1? 周期时间监控。 简单的程序示例。 结论。 什么是组织块 (OB)?
    组织块,您可以将它们视为功能 FC 或功能块 FB。但不同的是,你不调用它们,PLC 的操作系统调用这些组织块,无论操作系统将 OB 作为 OB1 循环调用还是在某个事件发生时调用,无论哪种方式,操作系统 照顾它。您只需要创建块并在块内添加您想要的任何逻辑。有时,您甚至不需要在 OB 中添加任何代码,只需创建 OB 本身就可以提供许多好处,我们将在讨论其中一些 OB 时看到这些好处。
    组织块是 PLC 操作系统和用户程序之间的接口。任何 PLC 都会有两个不同的程序,运行程序是 PLC 的操作系统,用户程序是 PLC 程序员编写的用于控制某个过程的逻辑或代码。这两个不同的软件需要相互通信,而组织块 OB 就是如何完成此操作的。
    组织块 OB 用于执行许多任务,下面列出了其中一些任务:
    自动化系统的启动特性 循环程序处理 中断驱动程序执行 错误处理。 不同类型的组织块
    因为组织块基本上是操作系统执行许多任务的工具。
    不同的任务需要不同的 OB,这就是为什么 PLC 内部有许多不同的 OB,有多少不同的 OB 将取决于您使用的 PLC 类型,但以下是您几乎可以在所有 PLC 中找到的一些最常见的 OB。西门子 PLC:
    主循环 OB1。 时间会中断 OB。 一天中的时间 OB。 软件错误 OB。 硬件错误 OB 还有更多的组织块可用于您的逻辑。见图1。

    图 1 – TIA Portal 中提供的不同组织块
    在本文中,我们将讨论其中最重要的组织块,即主循环中断 OB1。
    主循环中断 OB1
    主循环 OB1 是负责由 PLC 循环执行逻辑的组织块。每当您创建新项目并添加 PLC 时,软件都会自动创建主 OB1。这些是 PLC 代码所需的最少块。见图2。

    图 2 – 主OB1自动创建
    在此主 OB1 中,如果项目很小,您可以编写整个 PLC 程序。如果您的项目相当大,那么您可能需要执行一些功能块 FB 的功能 FC。在这种情况下,您将使用主 OB1 来调用它们。
    当然,您不必通过 OB1 调用每个 FC 或 FB,但如果您的 OB1 不是嵌套调用的第一个块,则它将不会被执行。见图3。

    图 3 – 通过 OB1 调用您的块
    PLC 代码的基本基础是循环行为,这意味着您需要连续执行代码。当逻辑处理完成后,操作系统将再次开始处理它。这是通过使用主 OB1 来完成的,您可以在该 OB1 中放置和调用所有逻辑和代码,操作系统将确保连续执行它。
    您应该知道,即使您无法创建 OB1 块(因为添加新 PLC 时会自动创建 OB1 块),您也可以创建多个循环中断块。
    OB1 是一个循环中断,操作系统会自动连续调用并执行里面的任何逻辑。然而,对于大型 PLC 项目,您的 PLC 逻辑中有如此多的功能和功能块,您可以使用多个循环中断 OB 来更好地构建代码,使其易于阅读和理解。
    在这种情况下,您将创建另一个循环中断,见图 4。

    图 4 – 创建多个循环 OB
    当创建了多个程序循环 OB 时,将按照 OB 编号的顺序依次调用这些 OB。
    首先调用具有最低 OB 编号的程序循环 OB。见图5。

    图 5 – 具有多个循环 OB 的程序循环
    循环程序完成后,操作系统按如下方式更新过程映像:
    它将过程映像输出中的值写入输出模块。 它读取输入模块的输入并将这些输入传输到过程映像输入。 前两步加上 PLC 程序的执行称为一个扫描周期。见图6。

    图 6 – 西门子 PLC 的扫描周期
    周期时间监控
    循环时间是指循环程序的运行时间,包括所有嵌套程序部分(例如 FC、FB 和更高优先级 OB)的运行时间。如果创建了多个程序循环 OB,则每个程序循环 OB 都会影响循环时间。
    操作系统监视循环时间是否仍然小于配置的最大循环时间。如果超过最大循环时间,PLC 将根据您的编程进入 STOP 模式或调用 OB80。
    除了监控最大循环时间之外,还可以保证最小循环时间。为此,操作系统会延迟新周期的开始,直到达到最小周期时间。
    您可以在 PLC 的配置属性中配置最小和最大循环时间。见图7。

    图 7 – 配置最小和最大循环时间
    PLC 中的简单程序示例

    图 8 – PLC 程序示例
    为了更好地理解 PLC 程序周期和 OB1 执行,让我们创建一个简单的程序。该程序将使用一条加法指令,每 1 个扫描周期将值 1 累加到存储区域中。请参阅以下模拟。

    从动画中可以看出,add 指令的执行速度非常快;这就是扫描周期的速度。这将取决于您的 PLC 的功能有多强大。但主要扫描周期在毫秒范围内。
    结论
    组织块是 PLC 操作系统和控制程序之间的接口。 主循环 OB1 由操作系统循环执行。 您可以通过将逻辑包含在一个或多个循环 OB 中来执行该逻辑。 扫描周期时间是执行逻辑 1 次所用的时间。

    leigehong
    在上一篇文章中,我们讨论了什么是组织块,并且谈到了一个非常重要的组织块,它就是主 OB1。
    在本文中,我们将继续讨论不同的 OB,这次我们讨论的是时间中断组织块或 OB10。
    内容:
    中断 OB10 是一天中的什么时间? 如何创建和使用 OB10? 简单的程序示例。 一天中中断时间的重要规则。 结论。 什么是当日时间中断 (OB10)?
    顾名思义,时间中断是一个组织块,它将在一天中的某个时间中断 PLC 程序主周期的执行。该中断时间(日期和时间)可以指定为在指定时间发生一次,或者以指定时间间隔定期发生,例如每分钟、每小时、每天、每周和一些其他选项。
    您可以在同一程序中拥有多个时钟中断,它们不必具有相同的逻辑或代码,每个中断都可以有自己的功能,并且每个中断都可以单独配置为在指定的时间发生 时间。
    如何创建和使用 OB10?
    要创建一天中的时间中断,请按照与需要在逻辑中添加任何新块时相同的步骤进行操作。见图1。

    图 1 – 添加一天中的时间中断
    按左侧项目树中的添加新块选项,选择组织块,然后选择一天中的时间中断,如上图所示。
    现在您可以打开 OB10 并添加调用此块时要执行的任何 PLC 逻辑,所谓调用是指中断事件或时间已经发生,因此操作系统将中断主周期并执行 OB10。
    我们将在 OB10 中编写一段非常简单的代码,以帮助我们更好地理解这个 OB10 块的工作原理。在此逻辑中,我们使用 add 指令将值 1 添加到称为 TimeOfDayInterruptCounter 的内存区域,然后将求和结果放回同一区域。这样我们就可以有一个用于执行 OB10 的计数器。
    每次调用并执行 OB10 时,TimeOfDayInterruptCounter 的值都会加 1。见图 2。

    图 2 – 将逻辑添加到 OB10
    现在我们已经创建了 OB10 并在其中编写了一些逻辑,我们需要配置 OB10 的设置时间以及我们希望它中断主周期的次数。
    要配置 OB10 的时间和间隔设置,我们需要进入 OB10 的属性页面。见图3。

    图 3 – OB10 的属性
    在 OB10 的属性中,您会发现许多可以配置的设置和属性。
    现在我们需要的是一天中的时间中断页面,以便我们可以设置何时调用 OB10 以及调用多少次。见图4。

    图 4 – 时间中断设置
    正如您从最后一张图片中看到的,您可以设置 OB10 的执行、开始日期以及执行 OB10 的时间。
    为了模拟方便,我们将执行间隔设置为每分钟,这样每分钟都会调用并执行 OB10。这意味着从 2023 年 3 月 23 日和时间 09:25 AM 开始,TimeOfDayInterruptCounter 的值将每分钟增加 1。
    您可以选择根据 PLC 系统时间或本地时间设置时间,如上图所示。在上一篇文章中,我们讲了 PLC 的系统时间和本地时间,各个时间的含义以及如何配置和使用它们。
    正如我们之前所说,当地时间是您现在在 PC 上看到的时间。所以是 PLC 使用地区的实际时间。
    您必须根据 PLC 的使用地点配置本地时间。见图5。

    图 5 – 设置 PLC 当地时间
    简单 PLC 程序示例
    我们在 PLC 程序中添加了时间中断 OB10,并对其进行了设置,以便每分钟执行一次。我们还配置了 PLC 的本地时间。
    我们创建了 ADD 指令的简单逻辑,以便在每次执行 OB10 时将 TimeOfDayInterruptCounter 的值累加 1。
    我们将添加另一条指令,但在主 OB1 中,该指令是 RD_LOC_T 或读取本地时间,因此我们可以看到本地时间的进展情况并将其与 OB10 的执行进行比较。见图6。

    图 6 – 简单程序示例
    编译您的 PLC 程序并开始新的模拟。
    请注意,我们将设置中断发生的时间,以便在模拟 PLC 逻辑时可以调用并执行 OB10。请参阅以下模拟。

    从动画中可以看到,TimeOfDayInterruptCounter 的值一开始为零,然后从 09:25 AM 开始每分钟增加 1,表示 OB10 每分钟执行一次。
    一天中的时间中断的重要规则
    如果设置时间中断以使相应的 OB 被处理一次,则启动时间不得是过去的时间(相对于 CPU 的实时时钟)。 如果设置时间中断以定期处理相应的 OB,但开始时间是过去的时间,则在下次到期时根据当前时间处理时间中断 OB。 周期性时间中断的日期必须与实际日期相对应。例如,开始日期为 1/31 的时间中断 OB 每月重复一次是不可能的。在这种情况下,仅在有 31 天的月份中启动 OB。 启动期间激活的时间中断只有在启动完成后才会执行。 启动会删除由用户程序中的指令设置和激活的所有时间中断。 结论
    OB10 是一个组织块,可配置为在特定日期和时间中断程序循环。该中断可以发生一次,也可以每隔一定时间定期发生。
    没有具体原因说明您需要 OB10,因为这取决于您的流程和逻辑。是的,您可以使用您的个人代码实现相同的功能,但它是一个可用且易于使用的内置函数。而且你知道如何使用它。

    leigehong
    在之前的文章中,我们讨论了不同类型的组织块,例如主 OB1 是主循环程序块,在本文中我们将讨论另一个循环组织块。OB30 或循环中断 OB。
    内容:
    什么是循环中断 OB30? OB1 的主周期是什么? 为什么需要 OB30? 如何配置循环中断? 如果我有多个循环中断怎么办? 结论。 什么是循环中断 OB30?
    循环中断 OB30 是一个组织块,它以指定且精确的时间间隔被调用和执行,与连续调用和执行的主循环 OB1 不同,循环中断将按照您在创建循环中断 OB 时配置的时间间隔被调用 。
    例如,如果我创建的 OB30 的时间间隔(也称为周期时间)为 20ms,则意味着操作系统将中断主周期 OB1 并每 20ms 调用 OB30。
    必须确保循环中断 OB 的运行时间必须小于其时间间隔。否则,当 OB30 的本次调用仍在执行时,仍有可能发生下一次 OB30 的调用到达。在这种情况下,操作系统会生成时间错误,可能导致 PLC 进入 STOP 模式。
    什么是主循环 OB1?
    主循环 OB1 是负责由 PLC 循环执行逻辑的组织块。每当您创建新项目并添加 PLC 时,软件都会自动创建主 OB1。
    PLC 代码的基本基础是循环行为,这意味着您需要连续执行代码。当逻辑处理完成后,操作系统将再次开始处理它。这是通过使用主 OB1 来完成的,您可以在该 OB1 中放置和调用所有逻辑和代码,操作系统将确保连续执行它。
    主 OB1 循环时间是指循环程序的运行时间,包括所有嵌套程序部分(例如 FC、FB 和更高优先级 OB)的运行时间。如果创建了多个程序循环 OB,则每个程序循环 OB 都会影响循环时间。
    操作系统监视循环时间是否仍然小于配置的最大循环时间。如果超过最大循环时间,PLC 将根据您的编程进入 STOP 模式或调用 OB80。
    为什么需要 OB30?
    有人可能会说,我可以将 OB30 内的任何功能放在主 OB1 中,并尝试摆脱它,这取决于当今大多数 PLC 的快速性能。有时这可能没问题,但并非每次都如此。
    根据 PLC 的性能,主循环时间可能在 1 到 150 毫秒之间;它可以不同,但这是标准配置,该循环时间取决于很多因素,例如 PLC 程序的大小、逻辑内部的中断以及其他因素,这些因素很可能会使循环的运行时间不稳定。
    现在,如果您需要精确地每 10 毫秒执行某些功能,而不是 9 毫秒或 11 毫秒。现在您不能依赖主 OB1,因为结果可能达不到预期。在这种情况下,您使用循环中断 OB30,将其配置为您想要的 10ms,操作系统将确保精确地每 10ms 调用并执行此函数。这就是为什么它被称为中断;因为它会中断主 OB1 的执行来调用并执行您的 OB30。
    需要 OB30 的功能示例
    PID 控制器处理。 安全电路监控。 监控机器之间的通信。 前面的所有示例都需要在特定时间连续监视和检查参数,因为它们与实际物理量或机器安全相关。不应延迟执行此类功能,因为它们会影响流程的安全性和连续性。
    如何配置循环中断?
    创建循环中断时,需要配置一些参数。请参见图 1 添加新 OB30。

    图 1 – 添加新的循环中断 OB30
    创建循环中断时,您可以在块的属性中找到许多可以设置的参数,请参见图 2。

    图 2——OB30的特性
    您需要考虑的最重要的参数如下:
    周期 使用参数“循环时间”设置循环中断 OB 两次调用之间的时间间隔。它是 1 µs 的整数倍。
    相位偏移 在此,您可以设置开始时间相对于循环时间的倍数偏移的时间段。
    有关周期时间和相位偏移配置,请参见图 3。

    图 3 – 设置 OB30 的循环时间和偏移量
    循环中断 OB 的优先级 这是配置循环中断时必须考虑的另一个重要参数,因为您可能有多个循环块,如果需要同时调用两个不同的 OB,操作系统将调用并执行该块 更高优先级的编号。
    您应该知道 PLC 主程序循环 OB1 的优先级编号为 1,这是块可以具有的最低优先级。这就是 OB1 可以被任何其他块调用中断的原因。见图4。

    图 4 – 设置 OB30 的优先级
    如果我有多个循环中断怎么办?
    在逻辑中出现多个循环中断的情况并不罕见。如果您的 PLC 逻辑中有两个 PID 控制器,那么您可能需要两个循环中断来处理每个 PID。在这种情况下,需要确保不同循环中断的调用和执行不会重叠。
    例如,如果 OB30 的间隔循环时间为 5ms,OB31 的循环间隔为 10ms,则意味着 OB30 的第二次调用也将是调用 OB31 的时间。这可能会导致逻辑错误,即使您将其中一个的优先级设置为高于另一个,也会扰乱较低优先级块的循环时间。见图5。

    图 5 – 调用不同循环中断的重叠
    在这种情况下,当您使用多个循环中断 OB 时,可能建议使用相位偏移。
    如果它们的周期时间具有公倍数,则可以使用相位偏移来防止同时启动时间。见图6。

    图 6 – 不同 OB 调用之间的偏移
    因此,为了避免这种重叠,我们将 OB31 的偏移时间设置为 1 ms。
    这意味着 OB31 时间间隔的计数将比 OB30 的起始时间偏移 1ms。见图7。

    图 7 – OB31 的偏移设置
    结论
    循环中断对于不应该面临任何延迟的时间关键任务非常有用。 您的逻辑中可以有多个循环中断。 使用循环中断的偏移设置来避免同时启动时间。 使用优先级设置来控制不同循环中断的执行顺序。

    leigehong
    在之前的文章中,我们开始讨论 TIA Portal PLC 的不同组织块,讨论了 OB 是什么,并讨论了一些 OB,例如 OB1 - 主循环、OB10 和 OB20,分别表示时间延迟和时间延迟中断。在本文中,我们将讨论西门子 Tia Portal 中的 OB100 或启动组织块。
    内容:
    什么是 OB100? 为什么需要 OB100? 启动期间的重要注意事项。 简单的程序示例。 什么是初创组织块(OB100)?
    OB100 或启动 OB 是一个组织块,在 PLC 启动时由操作系统调用并执行一次,即每次从 STOP 模式转换到 RUN 模式时一次。
    只有执行完 OB100 内部的所有启动函数后,主循环 OB1 才会被调用和执行。
    您的 PLC 逻辑中可以有多个启动 OB,如果发生这种情况,操作系统将从较低 OB 编号到较高编号开始一一调用并执行所有这些启动 OB。IE。如果您有 OB100 和 OB123,则将首先调用并执行 OB100,然后再调用并执行 OB123。
    执行 OB100 后,操作系统将输入模块读入 PII 并启动主循环程序 OB1。
    为什么需要 OB100?
    在启动循环逻辑之前,您可以使用 OB100 来执行许多您可能想要或需要执行的任务,原因如下:
    初始化变量。 重置系统模块。 重新校准传感器/执行器。 在开始流程之前检查警报和安全状况。 即使您尚未为逻辑创建启动 OB,操作系统在启动主逻辑之前仍然需要执行许多任务,其中一些任务是:
    清除非保留记忆 清除 PIQ 调用并执行启动 OB(如果有)。 更新个人身份信息 更改为 RUN 模式后启用输出。 您是否注意到启动例程的最后一个任务是启用输出? 这就是为什么执行主循环程序 OB1 的第一步是将 PIQ 写入输出模块。
    启动期间的重要注意事项
    关于 “STARTUP” 模式,请注意以下几点:
    模块上的输出被禁用。 过程映像被初始化。 过程映像未更新。 为了在“启动”期间从输入读取当前状态,您可以通过直接 I/O 访问来访问输入。 为了在启动期间初始化输出,可以通过过程映像或直接 I/O 访问写入值。 在转换到“RUN”模式期间,这些值在            输出端输出。 非保持性位存储器、定时器和计数器被初始化。 数据块中的非保持性标签被初始化。 在启动期间,尚未运行循环时间监控。 简单程序示例
    在此示例中,我们将向 PLC 逻辑添加一个启动 OB100,并查看 OB100 执行了多少次。请参阅图 1 添加新的 OB100。

    图 1 – 添加 OB100
    正如您从最后一张图片中看到的,您添加启动组织块的方式与我们添加功能块的功能相同。
    在我们刚刚创建的 OB100 中,我们将添加一个简单的 ADD 指令,以累计 OB100 被调用和执行的次数。见图2。

    图 2 – OB100的累计执行次数
    现在,编译并运行您的程序,看看会发生什么。请参阅以下动画来了解 PLC 程序的模拟。

    动画1
    从上面的动画中可以看到,OB100CycleCounter 为 1,并且当 PLC 模式从 STOP 转换为 RUN 时它不会改变。
    嗯,它确实发生了变化,但你看不到这种变化。每次 PLC 进入 STOP 模式,然后再次进入 RUN 模式。执行 OB100 后,计数器将重置为零,然后再次重置为 1。您还可以看到主 OB1 循环计数器发生变化,PLC 停止然后再次运行,OB1CycleCounter 将再次开始累加。
    为了看到启动计数器的变化,我们需要保留标签内存的值。见图3。

    图 3 – 保留 OB100CycleCounter 标签存储器
    我们保留 OB100CycleCounter 标签后,现在再次运行 PLC 仿真,看看会发生什么。参见模拟动画2。

    动画2
    现在,您可以从上面的动画中看到,每次我停止 PLC 然后再次启动它时,启动计数器都会增加。由于现在保留了标签内存,因此该值不会重置为零,这就是您看到 OB100CycleCounter 的值累加的原因。
    现在,我需要向启动 PLC 逻辑添加额外的功能,即了解 PLC 上次启动的时间。我们将通过一个简单的逻辑来实现这一点,在启动时读取 PLC 的本地时间并将日期和时间移动到某个存储区域。见图4。

    图 4 – 启动时读取当地时间
    添加逻辑后,再次编译并运行模拟。参见 PLC 仿真动画3。

    动画3
    从上面的动画可以看到,每次 PLC 启动时,启动日期和时间都会被记录在我们分配的内存区域中。现在我有了关于我的 PLC 启动了多少次以及上次启动时间是什么时候的信息。
    结论
    如果您想在运行循环过程之前评估某些功能,启动 OB 非常重要。您可以使用启动 OB 来初始化参数、校准传感器,甚至在允许流程运行之前检查安全条件。

    leizuofa
    当你使用 PLC 时,你需要知道它一般有哪些类型的电压;以便您可以进行相应的接线。不仅仅是电源,还必须与所需的输入输出电压有关。
    每个 PLC 制造商根据他们提供的模块和 CPU 都有自己的一组电压和电流范围。在本文中,我们将了解随处可见的 PLC 工作电压。
    PLC 电源
    标准情况下,PLC 可在四种电压下运行:24V DC、24V AC、110V AC 和 240V AC。在有些 PLC 中,只有 CPU 需要电源,IO 模块由 CPU 背板供电,而在有些 PLC 中,包括 CPU、输入和输出在内的所有模块都需要电源。

    无论如何,您都需要在 PLC 面板中安装 SMPS 或变压器来转换原始电源电压。在交流电源电压中,一些 PLC 提供 110-240V AC 的电压范围。
    PLC 中的每个电源点都有一个接地点,以在出现浪涌或短路时保证 PLC 的安全。当使用交流电源时,内部大多装有保护熔断器。
    直流电源内部也有保险丝,但对于交流电源,由于涉及高电压,因此必须使用保险丝。当 CPU 给出额定电压时,就意味着你提供的电压已经得到了很好的稳定和控制。
    但是,电压保持恒定在 24V 或 240V 是不切实际的。因此,PLC 有一个额定电压范围,如 20-28V DC 或 220V-245V AC。每个 PLC 中都预定义了该范围,以便您获得一个电源区域,以便高效地使用它们,而不会出现任何问题。
    IO 模块电源
    现在,让我们进入下一个主题:IO 模块所需的电源。如前所述,有两种类型的电源可用,一种是模块由 CPU 背板本身供电,另一种是模块需要外部电源。
    使用背板时,每个 CPU 都有一个 mA 额定值,它将作为所连接模块的负载提供。
    例如,如果 CPU 的额定值为 24VDC – 450mA,那么它还将指定 CPU 背板可以为 IO 模块提供这么多电流,并且您只能将该数量的模块连接到 CPU 机架。
    此外,每个模块都会指定连接到背板总线上时需要多少电流。这可以帮助您为特定应用选择适当的模块和 CPU。
    说到第二种供电方式,有一些模块需要外接电源。因此,在这种情况下,您必须相应地选择具有更高电流和额定负载的 SMPS 或变压器。反过来,这可以正确地为 CPU 和模块供电,也可以为需要相同电源的面板上的其他组件供电。
    现场仪表电源
    PLC 的现场接线也大多需要仪器仪表的直流电压和大功率设备的交流电压。因此,上述四种电压对于 IO 模块公共电源接线来说是相同的。
    另外,请记住,除了标准电源外,PLC 内部大多还有备用电池。这样可以确保 PLC 内存中的程序在断电时保持完整。
    PLC 电源选择
    因此,在选择电源时,一般需要考虑以下参数:额定电压、额定电流、额定功率、纹波和噪声、电压可调范围、电压容差、线路调整率和负载调整率。
    选择正确的电源后,您就可以连接 CPU 和模块以正确供电。
    这样,我们就了解了  PLC 工作电压的概念。

    leizuofa
    控制任何机器或系统中的过程一直是工程师的梦想。由于技术的出现,已经开发了许多控制器来灵活可靠地控制过程。
    控制器有两种通用类型,广泛应用于从小规模到大规模的许多过程中。它们是微控制器和 PLC。它们可以完成各种操作,从小型计算到复杂的算法、逻辑性能和数据处理。通过自动化流程,使任务变得更加容易。
    在这篇文章中,我们将了解微控制器和 PLC 之间的区别。
    什么是微控制器?
    让我们先了解基础知识。您有一个按钮和一盏灯。按下按钮 5 秒后,系统会要求您打开灯。从这些来看,我们需要什么来执行这个任务? 您将需要一个输入(按钮)、一个输出(灯)、一个用于执行此任务的控制器(处理器类型)、一个为电路供电的电源以及一个用于存储该逻辑以及输入和输出状态的存储器。当将其组合在单个封装中时,就形成了微控制器。
    简而言之,微控制器是一种小型计算机,它接受物理输入,根据它们处理逻辑,并打开或关闭物理输出。它是一个小型的芯片式器件,将所有这些电路嵌入其中,就像一个小封装一样,并完成所有的处理和控制工作。
    微控制器将处理少量的输入和输出。例如,考虑安装在手持设备上的小型显示电路,如 LED 或 LCD。如果按下其上的按钮,显示屏上就会显示相应的数字。
    当您按下另一个按钮时,它将显示根据处理器内部逻辑写入的其他数字。这意味着它首先被编程为显示一个数字,然后按下第二个按钮,就会显示计算出的数字。所有这些计算、变量的存储处理和 IO 处理都是在这个微控制器芯片内部完成的。

    什么是 PLC?
    让我们继续进行更高级别的处理。您有 50 个传感器,4-20 mA 或热电偶类型。您有 20 种不同类型的输出,0-10V DC 执行器或继电器输出。您已被分配相同的任务来根据其中写入的逻辑接受输入和控制输出。
    需要所有相同的 IO 组件、电源、处理器和内存。但是,您可以看到所有这些具有内存和处理器的 IO 板/引脚无法嵌入在小型单芯片上。这就是 PLC 发挥作用的时候。PLC 基本上是微控制器的扩展。它是一个柜箱式设备,有 IO 板、内存和处理器;所有这些都在不同的芯片上相互连接。所有这些芯片组成一个 PLC 机柜。
    IO 可以有不同的类型,从简单的数字信号到复杂的模拟信号。它们有特殊的通信板,可以与以太网、Modbus、CAN Open、Profibus、Profinet 等现实协议进行通信。
    微控制器也有通信板,但它们的接口很小,连接性有限。
    IO 模块要么嵌入在主 PLC 中,要么通过通信连接到远程模块。这很容易实现 IO 的扩展。各种高级工业传感器和执行器可以轻松与 PLC 连接。
    单片机和 PLC 的区别
    现在我们已经了解了它们的含义,让我们看看它们的区别:
    仅在定义中,我们就知道 PLC 可以处理大量进程和循环。这就是为什么它最适合工业应用。微控制器无法满足大量具有复杂接线和通信要求的 IO。它最适合小规模应用。 与微控制器相比,PLC 中的信号处理更加灵活。这意味着,模数转换、高速计数器输入和输出在 PLC 中比在微控制器中更容易配置。 由于微控制器提供的功能有限,因此其价格比 PLC 便宜。 PLC 的主要优点是其坚固性和稳定性。具有非常高的温度和环境顽固性,是关键、危险和恶劣环境的最佳产品。 与微控制器相比,PLC 更容易受到电磁噪声和其他类型的噪声的影响。 PLC 中的编程比微控制器中的编程要容易得多。微控制器使用 C 和 C++ 等复杂软件进行编程,这在 PLC 中要容易得多,因为它具有易于与电气绘图理解相关的语言。 微控制器需要嵌入式系统、VLSI 和软件方面的知识来设计,而 PLC 程序员则需要工业自动化、仪器仪表和网络方面的知识来设计。

    leizuofa
    顺序逻辑在 PLC 编程中非常有用。它有助于轻松整理事情。使用 PLC 的各种应用程序都写入了一些或其他顺序逻辑。
    两种最广泛使用的序列是 LIFO 和 FIFO。您一定听说过电子学中用于堆叠和排序的名称。这些类型的顺序逻辑在 PLC 中也可用。
    在本文中,我们将学习 PLC 编程中的 LIFO 和 FIFO 顺序概念。
    PLC 中的 FIFO 顺序
    FIFO 代表先进先出。从它的名字就可以很容易地理解这个序列的含义。先来的东西就会先出去。您输入一个元素;当您请求一个元素时,输入的第一个元素将提供给您。同样的逻辑也适用于 FIFO 序列的 PLC 编程。
    在编程中,分配一个逻辑块,称为 FIFO。它最多可以存储 16 个字或更多,具体取决于 PLC。它包含三种类型的输入——重置、存储和检索。
    在复位输入的上升沿,序列被复位并清空。在存储输入的上升沿,输入处存在的字被存储在块中。该模块将记住收到的单词序列。
    在检索输入的上升沿,首先输入的字将在 PLC 程序员配置的目标字中给出。它有两个输出——空的和满的。如果空位为真,则表示存储器为空,如果满输入为真,则表示存储器已满。

    PLC 中的 LIFO 顺序
    LIFO 代表后进先出。从它的名字就可以很容易地理解这个序列的含义。最后出现的东西将首先消失。您输入一个元素;当您请求一个元素时,最后输入的元素将提供给您。同样的逻辑也适用于 LIFO 序列的 PLC 编程。
    在编程中,逻辑块被指定为后进先出(LIFO)。它最多可以存储 16 个字或更多,具体取决于 PLC。它包含三种类型的输入——重置、存储和检索。在复位输入的上升沿,序列被复位并清空。
    在存储输入的上升沿,输入处存在的字被存储在块中。该模块将记住收到的单词序列。
    在检索输入的上升沿,最后输入的字将在程序员配置的目标字中给出。它有两个输出——空的和满的。如果空位为真,则表示存储器为空,如果满输入为真,则表示存储器已满。
    这些序列非常容易操作。程序员必须注意不要同时向存储块提供任何输入。在这种情况下,该块将不会执行任何操作。一次只需给出一个输入。还需要注意的是,不同的 PLC 在热启动或冷启动时的功能不同。
    一般来说,例如在 PLC 冷启动时,寄存器将被重置,而在热启动的情况下,寄存器将保持原样。这取决于制造商。

    leizuofa
    PLC 中有许多指令有助于以简化的方式执行逻辑。指令有多种类别,如算术、比较、逻辑、控制器等。例如,用于添加两个变量的简单加法指令就属于算术类别。因此,类似地,PLC 逻辑中可以使用多种类型的指令。
    PLC 编程中广泛使用的一种这样的指令是移位指令。它属于数值处理的范畴。
    在这篇文章中,我们将学习 PLC 编程中移位寄存器指令的概念。
    PLC 中的移位寄存器
    顾名思义,移位指令是将字的位移动某个预定义位置的命令。
    例如,您有一个 16 位的字。您想要将位号 3 从当前的第四位置移动到第七位置。因此,每当给出移位命令脉冲时,该位就会在每个触发器中从第四位置移位到第七位置。
    在这种连续性中,第五个位置的位将移动到第八个位置;第三位置的位将移动到第六位置。因此,在这里,您将按您定义的位置数移动组中的位。
    移位指令
    移位指令有两种类型——移位和循环。让我们看一下旋转指令。考虑语法 – %MW10:= SHL (%MW12, 4)。%MW10 是目标存储器字,%MW12 是源存储器字。
    请参阅下图。在 %MW10 中,当给出第一个左移触发时,位 0 移至位 1,依此类推。该结果存储在 %MW12 中。当这样的触发被给出四次时,最终,位0将最终转移到位4,依此类推。
    最终结果无论如何都存储在 %MW12 中,并且您会得到从源字移位四个位置的位的最终答案。但是,要记住的一件事是,每次移位时,前面的位都会填充值 0。您可以在图像中清楚地看到这一点。
    第一次移位后,%MW12 中的第一位为 0。因此,经过四次移位后,最终结果将为 – 0000 1101 1100 0000。因此,该移位可以是右移或左移。

    PLC 中还有另一种类型的转换;较早的类型从前一个位置添加了零,但第二种类型保持第一位的值(右侧的 MSB 和左侧的 LSB)不变。这称为算术移位。
    因此,如果移位前第一位(右端的 MSB 和左端的 LSB)的值最初为 1,则最后一位将仅保持为 1,并且将从前第二位开始添加零,最多添加多少次 给出了移位命令。需要注意的是,最后移位的位总是存储在进位位中。
    轮换指令
    第二种是循环指令。考虑语法 – %MW10:= ROL (%MW12, 4)。%MW10 是目标存储器字,%MW12 是源存储器字。我们将使用上面相同的图像作为参考。旋转指令,顾名思义,只是将位旋转您定义的位置。
    与移位指令相比,移位指令在每个前面的位后添加零;这里,位只是按照与左方向相同的顺序移位。因此,假设您的源词为 – 1100 1010 1100 0101;那么,触发 4 个位置后,最终结果将是 – 1010 1100 0101 1100。相同的逻辑在正确的方向上工作。最后移位的位也存储在进位位中。
    另一种类型属于旋转类别。这里,不是只移位 16 位,而是翻转进位位。这意味着,最后一位被移至进位位,然后进位位将被移至第一位,依此类推。在早期类型中,最后一位仅存储在进位位中。

    leizuofa
    S7-1200 PLC 是一种紧凑、模块化且经济高效的解决方案,为中小型自动化应用提供广泛的功能和灵活性。这些功能包括通信选项、内存、CPU 性能和 IO 配置。当您有需要控制的过程时,您应该选择 PLC 并对其进行配置,以最适合您的过程要求。
    在本文中,我们将讨论 S7-1200 PLC 的硬件配置,并举例说明如何在西门子 Tia portal 中对其进行配置。
    内容:
    PLC 的硬件配置是怎样的? 硬件配置的重要性。 简单的项目示例。 如何使用给定的示例配置我们的 PLC?                     CPU 的硬件配置。
                        IO 硬件配置。
                        人机界面配置。
    结论。 PLC 的硬件配置是怎样的?
    硬件配置是指 PLC 的特定组件,例如 CPU、内存、输入/输出 (I/O) 模块、通信端口、电源以及系统可能需要并添加的任何附加模块或附件 。
    PLC 的硬件配置还包括启用或禁用某些 CPU 功能,具体取决于设备、其功能以及过程的要求。
    PLC 的硬件配置步骤通常涉及以下内容:
    根据应用需求选择合适的 PLC 型号。 确定系统的输入/输出要求,包括传感器、执行器以及将连接到 PLC 的其他设备的类型和数量。 选择将用于将 PLC 连接到其他设备和系统的通信协议和网络拓扑。 确定 PLC 及其外围设备的电源要求。 将 PLC 安装在适当的位置并连接所有必要的电缆和电线。 配置 PLC 软件以与硬件组件进行通信并设置适当的逻辑和控制功能。 硬件配置的具体步骤可能会根据 PLC 型号和应用要求而有所不同,但这些是该过程中通常涉及的基本步骤。
    在本文中,我们将讨论在 TIA Portal 平台中完成的硬件配置。这意味着我们将假设您了解您的应用程序,并且您已经选择了 PLC 型号和为其供电的电源。您可以参考之前的文章,其中我们讨论了如何选择最适合您的应用的 PLC 和电源。
    PLC 中硬件配置的重要性
    正确的硬件配置可确保系统可靠且稳健。如果硬件组件配置不正确,它们可能无法按预期工作,从而导致系统故障或错误
    硬件配置影响系统的性能。通过选择正确的硬件组件并进行适当的配置,系统可以以最高的效率和速度运行,并可以处理大量的输入和输出。
    硬件配置影响系统的可扩展性和灵活性。硬件组件及其配置的选择应考虑到系统未来的扩展或修改,以确保系统能够轻松适应更改或升级。
    硬件配置影响系统的成本。通过选择合适的硬件组件和配置,可以避免不必要的成本,并使系统的总体成本最小化。
    S7-1200 硬件配置
    我们将假设一个简单的 PLC 项目,并在开始编写代码之前了解如何将 PLC 配置到我们的项目中。
    使用 PLC 的反应器温度控制系统
    该项目涉及使用 PLC 控制反应器的温度。该系统应测量反应器的温度并通过控制冷却液的流量来调节温度。
    该项目使用四个热电偶来测量温度,两个电磁阀来控制冷却液的流量,以及一个电机来驱动反应器的叶轮。
    输入/输出配置
    输入:
    热电偶 1 – 4:这些是 4 个模拟输入,用于测量反应器内不同位置的温度。
    紧急停止按钮:这是一个数字输入,用于在紧急情况下停止系统。
    温度设定点电位计:这是一个模拟输入,允许操作员设置所需的温度设定点。
    输出:
    电磁阀 1 和 2:这是 2 个数字输出,用于控制冷却液通过反应器管道的流量。
    电机控制:这是一个数字输出,用于控制驱动叶轮的电机的速度和方向。
    加热器控制:这是控制反应器加热系统的数字输出。
    系统操作:
    系统等待操作员使用电位计设置温度设定点。 PLC 读取温度设定值并将其与反应器的当前温度(由四个热电偶测量)进行比较。 如果反应器温度低于设定点,PLC 会激活加热器控制输出以升高温度。 如果反应器温度高于设定点,PLC 会激活电磁阀输出之一,以增加冷却液的流量并降低温度。 PLC 持续监控温度并调整加热器和冷却系统以维持所需的设定值。 PLC 还控制驱动叶轮的电机以混合反应器中的内容物。 如果按下紧急停止按钮,PLC 将禁用所有输出并停止系统。 PLC 项目可以进一步扩展和修改,以包含附加功能,例如报警、数据记录或远程监控,具体取决于项目的具体要求。但是,我们不会关心该系统的 PLC 逻辑编码,而是使用此示例来解释如何对 PLC 进行硬件配置以适合我们的项目。
    这包括:
    选择 PLC CPU。 选择 IO 模块。 将输入和输出标签分配给硬件模块。 为 PLC 分配 IP 以进行通信。 分配保护密码。 配置 PLC 的本地时间。 配置 HMI 并设置与 PLC 的连接。 如何根据给定的示例配置 PLC?
    下面我们将讨论使用所需硬件创建基本的 PLC 项目。
    CPU 的硬件配置:
    选择 CPU:
    在 TIA Portal 中启动新项目时,应配置新设备并将其添加到项目中。见图1。

    图 1. 为您的项目配置设备
    从上图中可以看出,TIA Portal 已经向您显示第一步应该是配置新设备。
    在上一篇文章中,我们讨论了如何选择适合您工艺的 PLC,所以这里不再提及,对于我们的项目,因为它是一个简单的项目,我们将选择 CPU 1214C AC/DC/RLY。见图2。

    图 2. 将新控制器添加到项目中
    中央处理器特性:
    根据您为项目选择的 CPU,将提供不同的 CPU 功能和属性。
    您可以根据需要启用或禁用这些功能。某些功能需要进行额外的配置。见图3。

    图 3 – CPU 特性
    正如您在上图中看到的,您可以在项目中为 CPU 设置许多属性。
    我们将提到您需要在创建的每个项目中配置的一些属性,其他一些属性仅在特殊情况下使用。
    沟通:
    这对于任何 PLC 项目来说都是非常重要的配置;您的项目很可能有不同的模块和设备需要相互通信。设置 PLC 和这些设备之间的通信对于您的项目非常重要。
    通过选择 CPU,您已经定义了通信方式。有些 CPU 仅适用于 Profinet,有些仅适用于 Profibus,有些则能够同时使用两者。本例中所选的 PLC 仅适用于 Profinet。
    从 Profinet 界面,您将为 PLC 设置 IP 地址,该 IP 在项目中应该是唯一的;您不能为两个不同的模块使用相同的 IP。见图4。

    图 4 – Profinet 接口
    周期:
    如您所知,这是 PLC 的另一个重要属性;程序的循环时间取决于您编写了多少代码以及 PLC 执行该代码需要多长时间。
    在循环时间属性中,可以设置循环监控时间,如果 PLC 执行程序的时间超过这个设置的时间,那么PLC 就会报错。见图5。
    通过此属性,您还可以确定 CPU 的最小循环时间,如果触发了 “启用循环 OB 的最小循环时间”,则可以执行此操作。
    然后,您可以写入所需的最小循环时间,PLC 将调整其性能以匹配该时间。当然这个时间受到 CPU 性能的限制,所以你不能把这个时间降低到一定的限制以下。

    图 5 – 周期时间属性
    系统和时钟存储器位:
    系统内存位和时钟内存位是 CPU 内部的内置位,操作系统用于指示 PLC 中的某些事件。
    例如,有一个内存位仅在第一次扫描时变为 TRUE,或者如果诊断状态发生变化,则内存位将变为 TRUE,还有一些专用时钟内存位,例如代表 10Hz 时钟的位或代表 10Hz 时钟的位。2Hz的时钟。
    这些位在某些应用中非常有用,并且可以节省大量编程代码以获得相同的功能。见图6。

    图 6 – 启用系统和时钟存储器位
    您可以启用一个或两个内存字节的使用;您还可以确定这些字节的地址,如图所示。
    一天中的时间:
    PLC 的另一个非常重要的属性是设置 PLC 内部的时间。在您制作的几乎所有项目中,您都需要了解实时情况,以便能够分配不同日期的某些操作。
    在上一篇文章中,我们讨论了 PLC 内部的本地时间和系统时间以及如何使用它们。CPU 的此属性允许您将本地时间设置为所需的时区。见图7。

    图 7 – 当地时间属性
    保护和安全:
    通过该属性,您可以确定 PLC 的访问级别和密码保护。见图8。

    图 8——保护和安全财产
    前面提到的属性是您要做的几乎所有 PLC 项目中最常配置的属性。还有一些其他属性不太可能与简单程序(例如 Web 服务器和 OPC UA)一起使用。
    项目硬件配置的下一步是配置 IO。
    IO 硬件配置:
    项目的另一个重要步骤是 IO 的配置,这意味着确定您需要多少个 IO 模块以及需要什么类型的 IO 模块。
    在决定 IO 时,您应该考虑一些关键点,例如拥有一些备用 IO 点以及选择适合项目内输入传感器和输出执行器的 IO 模块。见图9。

    图 9 – 添加模拟输入模块
    正如我们在示例项目中提到的,我们有 4 个热电偶用作 PLC 的模拟输入,因此我需要添加一个至少具有 4 个输入通道的模拟输入模块,因为所选的 PLC 只有 2 个模拟输入通道。
    另外,热电偶是一种特殊类型的模拟输入,需要专用的输入模块。这就是为什么我们选择 AI 8xTC 模块,它有 8 个输入通道,专用于与热电偶一起使用;我们选择 8 通道模块,4 通道模块有备用通道供将来需要扩展项目时使用。
    如果您转到 AI 8xTC 模块的属性,您将看到您可以单独配置每个输入通道,您可以选择热电偶类型、测量范围和其他属性。见图10。

    图 10 – 配置输入模块
    接下来,您需要定义 IO 标签,并将每个输入或输出分配给 PLC 或 IO 模块中的正确 IO 点。见图11。

    图 11 – 分配输入标签
    然后继续分配其余的输入和输出标签,见图 12 和 13。

    图 12 – 为 PLC 分配输入标签

    图 13 – 将输出标签分配给您的项目
    人机界面配置
    您的 PLC 项目可能需要 HMI,选择 HMI 后,您可以进行不同的配置。
    本文仅介绍如何配置 HMI 与 PLC 之间的通讯。从上图可以看出,您通过添加新设备来选择 HMI,然后选择 HMI。见图 14。

    图 14 – 选择 HMI
    设置 HMI 和 PLC 之间的通讯有多种方法,但最简单的方法是通过网络视图页面。见图 15。

    图 15 – 设置 HMI 连接
    在网络视图页面中,您只需从 HMI 上单击代表 Profinet 的绿色小方块并将其拖至 PLC 即可设置 HMI 和 PLC 之间的连接。
    然后,TIA Portal 将在两个模块之间绘制一条绿线,并自动为 HMI 提供 IP 地址以设置它们之间的通信。
    结论
    硬件配置是任何 PLC 项目中非常关键的一步。 PLC 的正确硬件配置将确保满足项目所需的功能。 硬件配置包括选择 IO 模块、启用或禁用某些 CPU 属性以及使用 PLC 配置不同的设备(例如 HMI)。

Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...