S7- 1200/15 00S7- 300/40 0/ WinAC MODE USInt 字节 0 工作模式 有效的工作模式包括: • 0 = 全双工(RS232) • 1 = 全双工 (RS422) 四线制模式(点对点) • 2 = 全双工 (RS 422)四线制模式(多点主站,CM PtP (ET 200SP)) • 3 = 全双工 (RS 422) 四线制模式(多点从站,CMPtP (ET 200SP)) • 4 = 半双工 (RS485) 二线制模式 1) LINE_PRE USInt 字节 0接收线路初始状态 有效的初始状态是: • 0 =“无”初始状态 1) • 1 = 信号 R(A)=5 V,信号 R(B)=0V(断路检测): 在此初始状态下,可进行断路检测。 仅可以选择以下项:“全双工 (RS422) 四线制操作(点对点 连接)”和“全双工(RS422) 四线制模式(多点从站)”。 • 2 = 信号 R(A)=0 V,信号 R(B)=5 V:此默认设置对应于空闲状态(无激活的发送操作)。在此初 始状态下,无法进行断路检测。 BRK_DET USInt 字节 0 断路检测以下内容有效: • 0 = 断路检测已禁用 • 1 = 断路检测已激活 EN_DIAG_ALA RM Bool 0 激活诊断中断: •0 - 未激活 • 1 - 已激活 STOP_BITS USINT 字节 1 停止位个数; • 1 = 1 个停止位, • 2 = 2个停止位, • 0、3 到 255 = 保留 1) 使用 PROFIBUS 电缆连接 CM 1241 的 RS485时所需的设置。
Modbus_Master: 作为Modbus 主站进行通信 (S7-300, S7-400) 说明 使用 CM1241 自模块的固件版本 V2.1 起,才能通过CM1241 使用该指令。 说明 Modbus_Master 指令可通过由 Modbus_Comm_Load 指令组态的端口作为Modbus 主站进 行通信。当在程序中添加 Modbus_Master 指令时,将自动分配背景数据块。Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Master 指令的(静态) MB_DB 参数。说明 无法为 Modbus_Master 指令的背景数据块激活保持 (Retain)。 参数 参数 声明 数据类型 标准 说明 S7-1200/15 00 S7- 300/400 / WinAC REQ IN Bool FALSE FALSE = 无请求 TRUE =请求向 Modbus 从站发送数据 MB_ADD R IN UInt Word ‑ Modbus RTU 站地址: 标准地址范围(1到 247 以及 0 用于 Broadcast) 扩展地址范围(1 到 65535 以及 0 ,用于 Broadcast) 值 0为将报文广播到所有 Modbus 从站预留。广播仅 支持 Modbus 功能代码 05、06、15 和 16。S7- 1200/1500 S7- 300/400 / WinAC MODE IN USInt Byte 0 模式选择:指定请求类型(读取、写入或诊断)。下面的 Modbus 功能表中提供了更多信息。 DATA_AD DR IN UDInt DWord 0 从站中的起始地址:指定在Modbus 从站中访问的数 据的起始地址。下面的 Modbus 功能表中列出了有效 地址。 DATA_LE N IN UIntWord 0 数据长度:指定此指令将访问的位或字的个数。下面 的 Modbus 功能表中列出了有效长度。 COM_RST IN/OUT--- Bool FALSE Modbus_Master 指令的初始化 将使用 TRUE 对指令进行初始化。随后会将 COM_RST复位为 FALSE。 注: 该参数仅适用于 S7-300/400 指令。 DATA_PT R IN/OUT Variant Any ‑数据指针:指向要进行数据写入或数据读取的标记或 数据块地址。 自指令版本 V3.0 起:该参数可指向优化存储区。在优化存储区中,允许使 用以下数据类型的单个元素或数组:Bool, Byte, Char, Word,Int, DWord, DInt, Real, USInt, UInt, UDInt, SInt,WChar。所有其它数据类型都会导致出 现错误消息 16#818C。 DONE OUT Bool FALSE如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。 BUSY OUT Bool ‑ • FALSE –Modbus_Master 无激活命令 • TRUE – Modbus_Master 命令执行中 ERROR OUT BoolFALSE 如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR= TRUE 的周期内有效。 STATUS OUT Word 0 错误代码(请参见错误消息 )Modbus 主站数据块中的变量下表显示了可在程序中使用的 Modbus_Master 背景数据块中的公共静态变量。 表格 4-385 背景数据块中的静态变量 变量数据类 型 标准 说明 Blocked_Proc_Timeout Real 3.0 在“激活”状态移除此实例前,等待受阻的Modbus 主站实 例的持续时间(以秒为单位)。例如,如果输出主站请求, 随后在其完全结束请求之前,程序停止并调用主站功能,则可能发生这种情况。时间值必须大于 0 秒而小于 55 秒,以 避免发生错误。 另请参见“Modbus-Master通信规则”和“使用不同的参数 设置调用 Modbus_Master 指令”。 Extended_Addressing BoolFALSE 将从站地址组态为单字节或双字节。 • FALSE = 1 字节地址;0 到 247 • TRUE = 2字节地址(对应于扩展地址); 0 到 65535 Compatibility_Mode 1) Bool FALSE 对于Modbus,使用 Modbus RTU 驱动程序 的 CP 341、 CP 441-2 和 ET200S 1SI,以及 ET 200S 1SI 的兼容模式 默认值为 0。 • FALSE = 根据 Modbus规范,不兼容 • TRUE = 兼容 – 对于 FC1 和 FC2:从帧中读取的数据逐字写入访问的 CPU 存储器内,并逐字节替换。如果要传输的位数不是 16 的倍数,那么不相关的位将 在Zui后一个字中设置为空值。 – 对于FC15:要传输的字从访问的存储器中逐字读取并 逐字节写入发送帧。 如果要传输的位数不是 8 的倍数,那么Zui后一个字节中不相关的位将从访问的存储器中读取,并输入到发 送帧中。 MB_DB MB_BAS E - Modbus_Comm_Load 指令的MB_DB 参数必须连接到 Modbus_Master 指令的此 MB_DB 参数。 1) 点对点通信模块会根据 Modbus规范中的定义进行响应。对于 Modbus,要保留与 CP 341, CP 441‑2 和ET 200SP 1SI 一样的响应,使用“Compatibility_Mode”参数。 程序可以向Blocked_Proc_Timeout 和 Extended_Addressing 变量中写入值来控制 Modbus主站的操作。Modbus-Master 通信规则 • 必须运行 Modbus_Comm_Load 来组态端口,以便Modbus_Master 指令可以使用该端 口进行通信。 • 要用来作为 Modbus 主站的端口不可作为 Modbus_Slave使用。对于该端口,可以使用 一个或多个 Modbus_Master 1) 的实例。所有版本的 Modbus_Master都必须为该 端口使用相同的背景数据块。 • Modbus 指令不会使用通信报警事件来控制通信过程。程序必须查询Modbus_Master 指 令来获得完整的命令(DONE、ERROR)。 • 我们建议为来自程序周期 OB 的特定端口调用Modbus_Master 的所有执行。Modbus 主站指令只能在一个程序周期或一个周期/时间控制的处理级别中执行。它们无法在不同的 处理级别中进行处理。由具有较高优先级的处理级别中的Modbus 主站指令引起的 Modbus 主站指令的优先级中断将导致操作不正确。Modbus 主站指令无法在启动、诊断或时间错误级别中处理。 1)此处的“Modbus 主站的实例”意味着,调用具有与 Modbus_Comm_Load 指令相同的互联,并具有与 MB_ADDR、MODE、DATA_ADDR 和 DATA_LEN 参数相同的设置的 Modbus_Master 指令。示例 MODE = 0 且 DATA_ADDR = 10 时会调用 Modbus_Master 此作业将一直处于激活状态,直到通过参数DONE=1 或 ERROR=1 完成,或者 Blocked_Proc_Timeout参数中组态的监视时间到期。如果在看门狗时间用完且之前的命令 还未完成时启动了新命令,那么之前的命令将会中止而不会有错误消息。如果在此命令正在运行期间使用相同的实例数据以不同的 MODE 和 DATA_ADDR 参数设置再 次调用,则第二次的调用将以ERROR = 1 和 STATUS = 8200 终止。 使用不同的参数设置调用 Modbus_Master 指令如果程序中含有使用不同 MB_ADDR、MODE、DATA_ADDR 或 DATA_LEN 设置的多个 Modbus_Master指令调用,必须确保在任意给定时间,只有一个调用处于激活状态。否则, 将输出错误消息 16#8200(接口正忙于处理当前请求)。如果无法完整地完成调用,那么看门狗会由 Blocked_Proc_Timeout 参数激活,并终止当前 命令。 REQ 参数FALSE = 无请求;TRUE = 请求向 Modbus 从站发送数据。