西门子工业控制一级经销代理商
其产品范围包括西门子S7-SMART200、 S7-200CN、S7-300、S7-400、S7-1200、S7-1500、S7-ET200SP 等各类工业自动化产品。西门子授权代理商、西门子一级代理商 西门子PLC模块代理商﹐西门子模块代理商供应全国范围:
与此同时,我们还提供西门子G120、G120C V20 变频器; S120 V90 伺服控制系统;6EP电源;电线;电缆;
网络交换机;工控机等工业自动化的设计、技术开发、项目选型安装调试等相关服务。
西门子中国授权代理商—— 浔之漫智控技术(上海)有限公司,本公司坐落于松江工业区西部科技园,西边和全球**芯片制造商台积电毗邻,
东边是松江大学城,向北5公里是佘山国家旅游度假区。轨道交通9号线、沪杭高速公路、同三国道、松闵路等
交通主干道将松江工业区与上海市内外连接,交通十分便利。
公司国际化工业自动化科技产品供应商,是专业从事工业自动化控制系统、机电一体化装备和信息化软件系统
集成和硬件维护服务的综合性企业。与西门子品牌合作,只为能给中国的客户提供值得信赖的服务体系,我们
的业务范围涉及工业自动化科技产品的设计开发、技术服务、安装调试、销售及配套服务领域。建立现代化仓
储基地、积累充足的产品储备、引入万余款各式工业自动化科技产品,我们以持续的卓越与服务,取得了年销
售额10亿元的佳绩,凭高满意的服务赢得了社会各界的好评及青睐。
目前,浔之漫智控技术(上海)有限公司将产品布局于中、高端自动化科技产品领域,
PLC模块S7-200、S7-1200、S7-300、S7-400、ET200分布式I/O等
HMI触摸屏、SITOP电源、6GK网络产品、ET200分布式I/O SIEMENS 驱动产品MM系列变频器、G110 G120变频器、直流调速器、电线电缆、
驱动伺服产品、数控设备SIEMENS低压配电与控制产品及软起动器等
说明
1 Modbus 异常(代码 0x01):非法功能 - 服务器不支持请求的功能
2 Modbus 异常(代码 0x02):非法数据地址 - Addr 加 Count 的请求地址范围超出
了允许的服务器地址范围
3 Modbus 异常(代码 0x03):非法数据值 - 服务器接收的 Modbus 协议出错
4 Modbus 异常(代码 0x04):服务器设备故障 - 服务器尝试执行请求的操作时,发
生不可恢复的错误
5 Modbus 异常(代码 0x05):确认 - 服务器响应可能延迟;稍后重新发送请求
6 Modbus 异常(代码 0x06):服务器设备忙 - 服务器拒绝了该消息;重新发送请求
7 Modbus 异常(代码 0x07):否定确认 - 服务器因未知原因拒绝了该消息
10 Modbus 异常(代码 0x0A):网关路径不可用 - 通常表示网关组态错误或过载。(仅
限 Modbus TCP)
11 Modbus 异常(代码 0x0B):网关目标设备无法响应 - 通常表示设备未存在于网络
上。(** Modbus TCP)
10.4.7 Modbus TCP 常规通信异常代码
Modbus TCP 通信异常代码如下:
错误代码 说明
161 数据长度参数大于允许的*大长度(1024 字节)。
162 数据缓冲区未处于 I、Q、M 或 V 存储区。
163 数据缓冲区不适合存储区。
164 表格参数不适合存储区。
165 连接在其它上下文中被锁定。您正在尝试同时在背景(Main 程序)和中断例程中访
问同一连接。
166 UDP IP 地址或端口错误
167 实例不符:在另一实例中连接为忙,或是当发起请求时,为所请求的连接 ID 保存的
数据与输入数据不符。由于连接从未创建,所以连接 ID 不存在,或连接按您的要求终止(使用 TDCON 指
令)。
169 使用此连接 ID 的 TCON 操作正在进行中。
170 使用此连接 ID 的 TDCON 操作正在进行中。
171 使用此连接 ID 的 TSEND 指令正在进行中。
172 发生了临时通信错误。此时无法启动连接。请稍后重试。
173 连接伙伴拒绝或主动断开连接(伙伴将断开与此 CPU 的连接)。
174 无法与连接伙伴建立连接(连接请求无应答)。
175 连接因不一致而断开。断开并重新连接以纠正这种情况。
176 连接 ID 已与不同的 IP 地址、端口或 TSAP 组合配合使用。
177 没有连接资源可用。所有请求类型(主动/被动)的连接都在使用中。
178 本地或远程端口号被保留,或端口号已用于另一服务器(被动)连接。
179 已发生以下 IP 地址错误之一:
• IP 地址无效(例如,地址 0.0.0.0)。
• 该 IP 地址是此 CPU 的 IP 地址。
• 该 CPU 的 IP 地址为 0.0.0.0。
• IP 地址为广播地址或多播地址。
180 本地或远程 TSAP 错误(仅 ISO-on-TCP)
181 连接 ID 无效(65535 保留)
182 主动/被动错误(UDP 只允许被动)
183 连接类型不在所允许的类型中。
184 没有待决操作,因此没有要报告的状态。
185 接收缓冲区过小:CPU 接收的字节数超出缓冲区支持的长度。CPU 丢弃额外的字节。
191 未知错误
10.5 开放式用户通信库
STEP 7‑Micro/WIN SMART 开放式用户通信 (OUC) 库指令创建 OUC 指令 (页 256)(TCON、
TSEND、TRECV 和 TDCON)所需的表。库指令根据需要构建表,调用 OUC 指令,然后在库
指令的输出中呈现状态值。CPU 使用库存储器创建表以传递到 OUC 指令。开放式用户通信
库需要使用 50 个字节的 V 存储器。库指令如下所示:
• TCP_CONNECT:创建 TCP 连接。
• ISO_CONNECT:创建 ISO-on-TCP 连接。
• UDP_CONNECT:创建 UDP 连接。
• TCP_SEND:发送用于 TCP 和 ISO-on-TCP 连接的数据指令。
• TCP_RECV:接收用于 TCP 和 ISO-on-TCP 连接的数据指令。
• UDP_SEND:发送用于 UDP 连接的数据指令。
• UDP_RECV:接收用于 UDP 连接的数据指令。
• DISCONNECT:终止所有协议的连接。
说明
CPU 型号 CPU CR20s、CPU CR30s、CPU CR40s 和 CPU CR60s 无以太网端口,不支持与使用
以太网通信相关的所有功能。
说明
只可从主程序或中断例程中调用库函数,但不可同时从这两个程序中调用。
10.5.1 OUC 库指令共用的参数
以下参数是 OUC 库指令共用的参数:
• EN:将 EN 输入设置为 TRUE 以调用指令。必须将 EN 输入设置为 TRUE,直到指令完成
(直到 Done 或 Error 置位)。仅当程序置位 EN 并且调用指令时,CPU 才会更新输出。
• Req:Req(请求)输入用于发起操作。Req 输入位由电平触发。应通过上升沿指令将 Req
输入连接到库指令,以便操作仅启动一次。指令为 Busy 时程序会忽略 Req 输入。
• Active: Active 输入用于指定连接指令是创建主动客户端连接 (Active = TRUE) 还是创建被
动服务器连接 (Active = FALSE)。在主动连接中,本地 CPU 启动到远程设备的通信。在被
动连接中,本地 CPU 等待远程设备启动通信。
对于开放式用户通信,S7-200 SMART CPU 支持八个主动连接和八个被动连接。将 UDP 连
接计作被动连接,因为没有建立主动通信。
• Done:当操作完成且没有错误时,OUC 指令置位 Done 输出。如果指令置位 Done 输出,
Busy、Error 和 Status 输出为零。仅当 Done 输出置位时,其它输出(例如,接收到的字
节数)才有效。• Busy:Busy 输出指示正在进行操作。通过将 Req 设为 TRUE 启动操作时,OUC 指令置位
Busy 输出。对于对指令的所有后续调用,Busy 输出保持置位,直到操作完成。
• Error:Error 输出指示操作完成但有错误。如果 OUC 指令置位 Error 输出,则 Done 和
Busy 输出将设置为 FALSE。如果 OUC 指令置位 Error 输出,则 Status 输出会指明错误原
因。如果 Error 输出置位,所有其它输出均无效。
• ConnID:ConnID 编号是连接的标识符。通过 TCP_CONNECT、ISO_ConNECT 或
UDP_ConNECT 创建连接时,会创建 ConnID。可以为 ConnID 选择 0 到 65534 范围内的
任何值。每个连接必须具有唯一的 ConnID。程序使用 ConnID 指定后续发送、接收和断
开操作所需的连接。
• IPaddr1, IPaddr2, IPaddr3 and IPaddr4:这些是远程设备 IP 地址的四个八位字节。
IPaddr1 是 IP 地址的*高有效字节,IPaddr4 是 IP 地址的*低有效字节。例如:对于 IP 地
址 ,设置以下值:
– IPaddr1 = 192
– IPaddr2 = 168
– IPaddr3 = 2
– IPaddr4 = 15
IP 地址不能为以下值:
– 0.0.0.0(针对主动连接)
– 任何广播 IP 地址(例如,255.255.255.255)
– 任何多播地址
– 本地 CPU 的 IP 地址
可以将 IP 地址 0.0.0.0 用于被动连接。通过选择 IP 地址 0.0.0.0,S7-200 SMART CPU 接
受来自任何远程 IP 地址的连接。如果为被动连接选择一个非零的 IP 地址,CPU 将仅接受
来自指定地址的连接。
• RemPort:RemPort 是远程设备上的端口号。端口号可用于 TCP 和 UDP 协议,从而路由
设备内的消息。
远程端口号的规则如下:
– 有效端口号范围为 1 到 49151。
– 建议采用的端口号范围为 2000 到 5000。
– 对于被动连接,CPU 会忽略远程端口号(可以将其设置为零)• LocPort:LocPort 参数是本地 CPU 上的端口号。端口号可用于 TCP 和 UDP 协议,从而路
由设备内的消息。对于所有被动连接,本地端口号必须唯一。
本地端口号的规则如下:
– 有效端口号范围为 1 到 49151。
– 不能使用端口号 20、21、25、80、102、、443 以及 34962 至
34964。这些端口具有特定用途。
– 建议采用的端口号范围为 2000 到 5000。
– 对于被动连接,本地端口号必须唯一(不重复)。
• RemTsap: RemTsap(远程传输服务访问点 (TSAP))参数是指向 S7-200 SMART 字符串数
据类型的指针。只能将 RemTsap 参数用于 ISO-on-TCP 协议。在将消息路由到适当的连接
方面,远程 TSAP 字符串与端口号作用相同。
RemTsap 的规则如下:
– TSAP 为 S7‑200 SMART 字符串数据类型(长度字节,后接字符)。
– TSAP 字符串长度必须至少为 2 个字符,但不得超过 16 个字符。
• LocTsap:LocTsap(本地传输服务访问点 (TSAP))参数是指向 S7-200 SMART 字符串数
据类型的指针。只能将本地 TSAP 参数用于 ISO-on-TCP 协议。在将消息路由到适当的连
接方面,本地 TSAP 字符串与端口号作用相同。
LocTsap 的规则如下:
– TSAP 为 S7‑200 SMART 字符串数据类型(长度字节,后接字符)。
– TSAP 字符串长度必须至少为 2 个字符,但不得超过 16 个字符。
– 如果 TSAP 为 2 个字符,第一个字符必须是十六进制“E0”。
– TSAP 不能以字符串“SIMATIC-”开头。开放式用户通信库指令
10.5.2.1 TCP_ConNECT 指令
TCP_ConNECT 指令用于通过 TCP 协议创建到另一设备的连接。
LAD/FBD STL 描述
TCP_ConNECT Req, Active,
ConnID, IPaddr1, IPaddr2,
IPaddr3, IPaddr4,
RemPort, LocPort, Done,
Busy, Error, Status
TCP_ConNECT 用于创建从 CPU 到通信伙伴的 TCP 通信连接。
连接操作是异步的,可能需要几次扫描才能完成。连接操作待决时,Busy 输出具有值 TRUE。
当 CPU 完成操作时,指令置位 Done 或 Error 输出。如果发生错误,则 Status 输出会显示错
误代码。
指令处于繁忙状态时不得更改 TCP_ConNECT 的输入参数。CPU 需要凭借这一点了解这是启
动连接过程的调用的延续。
您将连接 ID (ConnID) 输入分配给连接,然后当发送、接收或断开连接时使用此 ConnID 引
用该连接。
Active 输入位确定这是主动连接(Active 设置为 TRUE)还是被动连接(Active 设置为
FALSE)。
如果这是主动连接(客户端),则 S7-200 SMART CPU 尝试联系并创建到指定 IP 地址和远
程端口号 (RemPort) 的连接。CPU 打开本地端口 (LocPort) 以从远程设备接收消息。
当 Active 输入设置为 FALSE 时,S7-200 SMART CPU 会创建被动(服务器)连接。在这种情
况下,CPU 打开请求的本地端口 (LocPort) 并接受来自远程设备的连接请求。如果要接受来
自任何远程 IP 地址的连接请求,应将 IP 地址设为 0.0.0.0。如果 IP 地址不为零,则 CPU 只
接受来自指定 IP 地址的连接请求。对于被动连接,CPU 会忽略远程端口号 (RemPort),
RemPort 可以设置为零。您可以随时调用 TCP_ConNECT 指令以确定连接的当前状态。将 Req 输入设置为 FALSE 并提
供有效的连接 ID (ConnID),TCP_ConNECT 返回以下内容:
• Busy,如果连接过程仍在进行中。
• Done,如果连接处于激活状态并准备发送或接收。
• Error,如果连接不可用。Status 显示其中一种错误代码,用于指示存在的问题。
请注意,主动连接可能*多需要 30 秒的时间来确定远程设备是否允许连接。被动连接显示
Busy 状态,直到远程设备尝试连接到 CPU。
请注意,连接关闭后,S7-200 SMART 不会自动尝试重新连接到设备。如果远程设备断开设
备连接,您的程序必须执行另一个 TCP_ConNECT 指令以重新连接设备。主动连接和被动连
接皆如此。
表格 10-18 TCP_ConNECT 指令的参数
参数 声明 数据类型 描述
EN IN BOOL 使能输入
Req IN BOOL 如果 Req = TRUE,CPU 启动连接操作。如果
Req = FALSE,则输出显示连接的当前状态。
Active IN BOOL • TRUE = 主动连接
• FALSE = 被动连接
ConnID IN WORD CPU 使用连接 ID (ConnID) 为其它指令标识该
连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1
...
IPaddr4
IN BYTE 这些是 IP 地址的四个八位字节。IPaddr1 是
IP 地址的*高有效字节,IPaddr4 是 IP 地址
的*低有效字节。
RemPort IN WORD RemPort 是远程设备上的端口号。远程端口
号范围为 1 到 49151。对于被动连接,使用
零。
LocPort IN WORD LocPort 是本地设备上的端口号。本地端口号
范围为 1 到 49151,但存在一些限制。如需
了解 LocPort 定义,请参见“OUC 库指令共用
的参数” (页 582)。
Done OUT BOOL 当连接操作完成且没有错误时,指令置位
Done 输出。
Busy OUT BOOL 当连接操作正在进行时,指令置位 Busy 输
出。