浔之漫智控技术(上海)有限公司总部
主营西门子模块 , PLC模块 , 变频器模块 , 触摸屏模块
程序指令 通信
发布时间:2023-11-04
观看程序指令 通信视频:

通信

GET 和 PUT(以太网)

GET 和 PUT 指令适用于通过以太网进行的 S7-200 SMART CPU 之间的通信:

程序中可以有任意数量的 GET 和 PUT 指令,但在同一时间多只能激活共 16 个 GET  和 PUT 指令。

例如,在给定的 CPU 中可以同时激活八个 GET 和八个 PUT 指令,或六 个 GET 和十个 PUT 指令。

当执行 GET 或 PUT 指令时,CPU 与 GET 或 PUT 表中的远程 IP 地址建立以太网连 接。

该 CPU 可同时保持多八个连接。

连接建立后,该连接将一直保持到在 CPU 进入 STOP 模式为止。

针对所有与同一 IP 地址直接相连的 GET/PUT 指令,CPU 采用单一连接。

例如,远程 IP  地址为 192.168.2.10,如果同时启用三个 GET 指令,则会在一个 IP 地址为 192.168.2.10 的以太网连接上按顺序执行这些 GET 指令。 如果您尝试创建第九个连接(第九个 IP 地址),CPU 将在所有连接中搜索,查找处于未 激活状态时间长的一个连接。CPU 将断开该连接,然后再与新的 IP 地址创建连接。

GET 和 PUT 指令处于处理中/激活/繁忙状态或仅保持与其它设备的连接时,会需要额外 的后台通信时间(参见“组态通信” (页 123))。

所需的后台通信时间量取决于处于激活/繁 忙状态的 GET 和 PUT 指令数量、GET 和 PUT 指令的执行频率以及当前打开的连接数 量。如果通信性能不佳,则应当将后台通信时间调整为更高的值。

发送和接收(RS485/RS232 为自由端口)

可使用发送 (XMT) 和接收 (RCV) 指令,通过 CPU 串行端口在 S7-200 SMART CPU 和 其它设备之间进行通信。每个 S7-200 SMART CPU 都提供集成的 RS485 端口(端口 0)。标准 CPU 额外支持可选 CM01 信号板 (SB) RS232/RS485 端口(端口 1)。必须 在用户程序中执行通信协议。

使用自由端口模式控制串行通信

端口

可以选择自由端口模式以通过用户程序控制 CPU 的串行通信端口。选择自由端口模式 后,程序通过使用接收中断、发送中断、发送指令和接收指令来控制通信端口的操作。处 于自由端口模式时,通信协议完全由用户程序控制。SMB30 和 SMB130 用于选择波特率 和奇偶校验。 

向两个物理端口分配两个特殊存储器字节: 

● 向集成 RS485 端口(端口 0)分配 SMB30 

● 向 CM01 RS232/RS485 信号板 (SB) 端口(端口 1)分配 SMB130 CPU 处于 STOP 模式时,会禁用自由端口模式,并会重新建立正常通信(例如,HMI 设 备访问)。 在简单的情况下,可以只使用发送 (XMT) 指令向打印机或显示器发送消息。其它示例 包括与条形码阅读器、秤和焊机的连接。在各种情况下,都必须编写程序,以支持在自由 端口模式下与 CPU 进行通信的设备所使用的协议。

仅当 CPU 处于 RUN 模式时,才能进行自由端口通信。要启用自由端口模式,请在 SMB30(端口 0)或 SMB130(端口 1)的协议选择字段中设置值 01。处于自由端口模 式时,无法与同一端口上的 HMI 通信。

将 PPI 通信更改为自由端口模式

SMB30 和 SMB130 分别组态通信端口 0 和 1 以进行自由端口操作,并提供波特率、奇 偶校验和数据位数的选择。下图显示了自由端口控制字节。对于所有组态,都生成一个停 止位。

发送数据

发送指令用于对单字符或多字符(多 255 个字符)缓冲区执行发送操作。下图显示了 发送缓冲区的格式。

如果中断例程连接到发送完成事件,CPU 将在发送完缓冲区的后一个字符后生成中断 (对于端口 0 为中断事件 9,对于端口 1 为中断事件 26)。 您可以不使用中断,而通过监视 SM4.5(端口 0)或 SM4.6(端口 1)用信号表示完成发 送的时间来发送消息(例如,向打印机发送消息)。 将字符数设为零,然后执行发送指令,这样可产生 BREAK 状态。这样产生的 BREAK 状 态,在线上会持续以当前波特率发送 16 位数据所需要的时间。发送 BREAK 的操作与发 送任何其它消息的操作是相同的。BREAK 发送完成时,会生成发送中断,并且 SM4.5 或 SM4.6 会指示发送操作的当前状态。

说明 

如果出现组帧错误、奇偶校验错误、超限错误或断开错误,则接收消息功能将自动终止。 必须定义开始条件和结束条件(大字符数),这样接收消息功能才能运行。

接收指令的开始和结束条件

接收指令使用接收消息控制字节(SMB87 或 SMB187)中的位来定义消息开始和结束条 件。

说明 

执行接收指令时,如果通信端口上有来自其它设备的通信,则接收消息功能可能会从该字 符的中间开始接收字符,从而导致奇偶校验错误或组帧错误以及接收消息功能终止。如果 未启用奇偶校验,收到的消息可能包含错误字符。将开始条件指定为特定起始字符或任何 字符时,可能会发生这种情况,如下文中的第 2 项和第 6 项所述。 接收指令支持多种消息开始条件。指定与断开或空闲线检测相关的开始条件,并在将字符 放入消息缓冲区之前强制接收消息功能将消息开始与字符开始同步,这样可避免出现从字 符的中间开始消息的问题。

接收指令支持多种开始条件:

1. 空闲线检测:空闲线条件定义为传输线路上的安静或空闲时间。当通信线的安静或空 闲时间达到在 SMW90 或 SMW190 中指定的毫秒数时,便会开始接收。执行程序中的 接收指令时,接收消息功能将开始搜索空闲线条件。如果在空闲线时间过期之前接收 到任何字符,接收消息功能会忽略这些字符,并会按照 SMW90 或 SMW190 中指定的 时间重新启动空闲线定时器。请参见下图。空闲线时间过期后,接收消息功能会将接 收到的所有后续字符存入消息缓冲区。

空闲线时间应始终大于以指定波特率传送一个字符(包括起始位、数据位、奇偶校验 位和停止位)所需的时间。空闲线时间的典型值为以指定波特率传送三个字符所需要 的时间。 

对于二进制协议、没有特定起始字符的协议或指定了消息之间小时间间隔的协议, 可以将空闲线检测用作开始条件。

2. 起始字符检测:起始字符是用作消息个字符的任意字符。当收到 SMB88 或 SMB188 中指定的起始字符时,启动消息。接收消息功能会将起始字符作为消息的第 一个字符存入接收缓冲区。接收消息功能忽略在起始字符之前收到的任何字符。起始 字符以及在起始字符之后收到的所有字符都存储在消息缓冲区中。

通常情况下,对于所有消息均以同一字符开始的 ASCII 协议,可以使用起始字符检 测。

设置:il = 0,sc = 1,bk = 0,SMW90/SMW190 = 不相关,SMB88/SMB188 = 起始 字符

3. 空闲线和起始字符:接收指令可启动组合了空闲线和起始字符的消息。执行接收指令 时,接收消息功能会搜索空闲线条件。找到空闲线条件后,接收消息功能将查找指定 的起始字符。如果接收到的字符不是起始字符,接收消息功能将开始重新搜索空闲线 条件。所有在满足空闲线条件之前接收到以及在收到起始字符之前接收到的字符都将 被忽略。起始字符与所有后续字符一起存入消息缓冲区。

空闲线时间应始终大于以指定波特率传送一个字符(包括起始位、数据位、奇偶校验 位和停止位)所需的时间。空闲线时间的典型值为以指定波特率传送三个字符所需要 的时间。

通常,对于指定消息之间小时间间隔并且消息的首字符为指定特定设备的地址或其 它信息的协议,可以使用这种类型的起始条件。这种方式尤其适用于通信链路上存在 多台设备的情况。这种情况下,仅当接收到的消息的起始字符为特定地址或设备时, 接收指令才会触发中断。

设置:il = 1,sc = 1,bk = 0,SMW90/SMW190 > 0,SMB88/SMB188 = 起始字符

4. 断开检测:当接收到的数据保持为零的时间大于完整字符传输的时间时,会指示断 开。完整字符传输时间定义为传输起始位、数据位、奇偶校验位和停止位的时间总 和。如果接收指令组态为接收到断开条件后启动消息,断开条件之后接收到的任意字 符都会存储在消息缓冲区中。断开条件之前接收到的任何字符都会被忽略。

通常,仅当协议需要时才将断开检测用作开始条件。

设置:il = 0,sc = 0,bk = 1,SMW90/SMW190 = 不相关,SMB88/SMB188 = 不相 关

5. 断开和起始字符:接收指令可组态为在接收到断开条件后开始接收字符,然后按顺序 接收特定起始字符。满足断开条件后,接收消息功能将查找指定的起始字符。如果接 收到的字符不是起始字符,接收消息功能将重新搜索断开条件。所有在断开条件满足 之前以及在接收到起始字符之前接收的字符都会被忽略。起始字符与所有后续字符一 起存入消息缓冲区。

设置:il = 0,sc = 1,bk = 1,SMW90/SMW190 = 不相关,SMB88/SMB188 = 起始 字符

6. 任意字符:接收指令可组态为立即开始接收任意字符和所有字符,并将其存入消息缓 冲区。这是空闲线检测的一种特殊情况。在这种情况下,空闲线时间(SMW90 或 SMW190)设为零。这样会强制接收指令一经执行便开始接收字符。

设置:il = 1,sc = 0,bk = 0,SMW90/SMW190 = 0,SMB88/SMB188 = 不相关

以任意字符开始一条消息允许使用消息定时器监视消息接收是否超时。如果使用自由 端口实施协议的主站或主机部分,并且要在指定时间段内从站没有发出任何响应的情 况下采用超时处理,这种方法非常有用。由于空闲线时间设为零,接收指令执行时, 消息定时器将启动。如果未满足其它结束条件,则消息定时器超时,并会终止接收消 息功能。

设置:il = 1,sc = 0,bk = 0,SMW90/SMW190 = 0,SMB88/SMB188 = 不相关, c/m = 1,tmr = 1,SMW92 = 消息超时(毫秒)

00.jpg

展开全文