西门子销售低压电器经销商
PLC是什么意思?相信很多人处于大概知道是什么,但是又无法准确说出的阶段,作为专注于为企业提供数据采集和设备控制解决方案的众诚工业,今天和大家探讨一下。
而众诚工业还能根据用户需求,设计PLC控制程序,为客户提供PLC编程和上位机软件的定制化开发技术服务,满足用户的多种需求,比如,自主研发的洁净空调智能控制系统和通风排风智能控制系统就配置PLC,不仅具有报警和定时控制功能,还兼具可扩展性和兼容性,系统能被第三方系统集成。
以上PLC的基本介绍,相信大家对PLC也有一个初步的了解。PLC的型号、品牌不同,对应着其结构形式、性能、编程方式等等都有所差异,价格也各不相同,在挑选时候,建议先要明确自己的应用需求,比如具体的应用场景,希望实现的运动和控制功能,已经特殊的控制要求,这些将决定了PLC的选型和搭配组合。
简单地说,PLC就是一种小型的计算机,和我们常用的计算机不同的是,PLC是设备之间通过数字信号进行互动,而我们常用的计算机,是人和计算机的互动。
控制是PLC的核心功能,其控制类型主要分为以下几种1、开关量的开环控制。这是PLC*基本的控制功能,它能凭借其强大的逻辑运算能力,取代传统继电接触器的控制系统;
2、数据采集与监控。这是PLC非常必要的功能,否则它将无法完成现场控制;
3、数字量智能控制。PLC具有实现接收和输出高速脉冲的功能,近年来先进的PLC还开发了数字控制模块和新型运动单元模块,让工程师更加轻松地通过PLC实现数字量控制;
4、PLC能通过模拟量采集和调节温度、压力、速度等参数。
正因为PLC功能强大,且具有设计方便、重量体积小、能耗低、改造工作量小、通用性强、维护方便等易学易用的特点,深受工程师的欢迎,因此应用非常广泛,钢铁、石油、化工、纺织、交通、机械制造等等行业都能看到它的身影。
:SIMATIC 中存在冗余错误
RED_ERR_S7 3 OUT Bool ? 0:链接伙伴侧无冗余错误
? 1:链接伙伴侧存在冗余错误
RED_ERR_S7 3 OUT Bool ? 0:至少已建立 1 个组态连接
? 1:完全丢失通信,所有组态连接均终止
1 有关详细信息,参见下文中“授权”部分。
2 有关详细信息,参见下文中“输入参数:MB_MODE、MB_DATA_ADDR、MB_DATA_LEN 和 MB_DATA_PTR”部分。
3 有关详细信息,参见下文中“输出参数:STATUS_x、RED_ERR_S7、RED_ERR_DEV 和 TOT_COM_ERR”部分。
说明
MB_RED_CLIENT 调用过程中输入数据保持一致
调用 Modbus 客户端指令时,输入参数的值将存储在内部。在处理帧时,这些值不能更改。
多个客户端连接
CPU 可处理多个 Modbus TCP 客户端连接。连接的*大数目取决于所使用的 CPU,具体请参
见相关 CPU 的技术规范。一个 CPU 的总连接数,包括 Modbus TCP 客户端和服务器的连接
数,不能超过所支持的*大连接数。
使用各客户端连接时,请记住以下规则:
? 每个 MB_RED_CLIENT 连接都必须使用唯一的背景数据块。
? 对于每个 MB_RED_CLIENT 连接,必须指定唯一的服务器 IP 地址。
? 每个 MB_RED_CLIENT 连接都需要一个唯一的连接 ID。连接 ID 在整个 CPU 范围内必须唯通信节点可设计为独立式或者冗余式。如果其中一个伙伴采用独立式设计,则将其称为单侧
冗余。如果两个伙伴均为冗余式设计,则将其称为双侧冗余:
? 单侧冗余:
– 说明:必须为通信伙伴之间的每个连接组态一个连接。SIMATIC S7 的连接点称为 0
和 1;通信伙伴的连接点称为 A 和 B。R-CPU 或 H-CPU 1 是指连接点 0,R-CPU 或 HCPU 2 为连接点 1。
– 组态:如果 S7 采用冗余设计,则为 S7 连接点 0 到链接伙伴的节点 A 创建一个连接
(从 S7 连接点 0 到伙伴/节点 A 的连接 => 连接 0A),一个从 S7 连接点 1 到链接伙伴
的节点 A 的连接(从 S7 连接点 1 到伙伴/节点 A 的连接 => 连接 1A)。下图给出了连
接名称帧处理:可通过一个或所有组态连接发送帧:
– 通过一个连接发送帧:如果设置 USE_ALL_CONN = FALSE,将通过一个当前有效的连
接发送 MODBUS 帧。发生超时(服务器无响应)或者连接故障时,会尝试通过其它
(*多 4 个)组态连接发送帧。顺序为 0A、1A、0B 和 1B。如果已通过一个连接成功
发送帧,则将此连接标记为“有效”,其它帧通信也通过此连接进行。有效连接发生
连接故障时,会再次尝试通过所有组态连接发送帧。如果所有发送尝试均失败,ERROR
和 STATUS_x 会相应地置位。
如果接收到响应帧,会执行真实性检查。如果检查成功,则执行所需操作,成功执行
作业后,输出 DONE 置位。如果在检查期间检测到错误,则作业正常结束,位 ERROR
置位,并在 STATUS_x 中显示错误编号。在这种情况下,不会再尝试通过下一个组态
连接发送帧。只有在检测到连接故障或者未接收到响应时,才会切换到其它组态连
接。
– 通过所有连接发送帧:如果设置 USE_ALL_CONN = TRUE,则将通过所有组态的既有
连接发送 MODBUS 帧。当其中一个连接上接收到响应帧后,将执行有效性检查。如
果检查成功,则执行所需操作。如果至少有一个连接上接收到有效响应帧,则输出
DONE 置位。
? 冗余输出 RED_ERR_S7、RED_ERR_DEV 和 TOT_COM_ERR所用 PN 接口的硬件标识符
Connectio
n ID
16#0000 所用连接的连接 ID
这些连接 ID 在整个 CPU 范围内必须唯一。
Local port 0 客户端的本地端口号。默认情况下不为客户端输入端口号。
Remote IP 0.0.0.0 服务器的远程 IP 地址
Remote
port
502 服务器的远程端口号
Modbus/TCP 服务器的默认端口为 502。
组态的连接
Interface ID 64 所用 PN 接口的硬件标识符
Connectio
n ID
16#0000 所用连接的连接 ID
在网络视图中对这些连接进行组态。
图 13-8 内部参数(可选)
变量 数据类型 起始值 描述
Blocked
Proc
Time
REAL 3.0 如果存在被阻止的 Modbus 实例,则为复位静态变量
ACTIVE 前的等待时间(单位为秒)。例如,如果输出
了一个客户端请求,而且在该请求完全执行之前中止
执行客户端功能,则可能发生这种情况。等待时间必
须介于 0.5 s 到 55 s 之间。
Receive
timeout
REAL 2.0 “MB_RED_CLIENT”指令等待服务器响应的时间间隔
(单位为秒)。必须介于 0.5 s 到 55 s 之间
Modbus 设备检测:
Modbus TCP 服务器使用其 IP 地址寻址。因此,寻址
Modbus TCP 时不会使用 MB_UNIT_ID 参数。
MB_UNIT_ID 参数对应于 Modbus RTU 协议的从站地址
域。如果 Modbus/TCP 服务器用作 Modbus RTU 协议
的网关,则可以使用 MB_UNIT_ID 标识串行网络中的
从站设备。这种情况下,MB_UNIT_ID 参数会将请求转
发给正确的 Modbus RTU 从站地址。
请注意,某些 Modbus/TCP 设备可能需要
MB_UNIT_ID 参数,以在有限的值范围内进行初始化。
Retries WORD 3 指令 MB_RED_CLIENT 返回错误 W#16#80C8 之前尝试
发送的次数。
说明
变量 MB_Transaction_ID
如果 Modbus TCP 服务器应答中的事务 ID 与 MB_RED_CLIENT 作业中的事务 ID 不一致,则
指令 MB_RED_CLIENT 将等待一段时间 (RCV_TIMEOUT * RETRIES),等待事务 ID 正确的
Modbus TCP 服务器进行应答;超出该时间后,指令将返回错误 W#16#80C8。
授权
必须在每个 CPU 上分别对 MB_RED_CLIENT 指令进行授权,且该指令需要付费。授权分为两
个步骤:
? 显示许可证 IDENT_CODE
? 输入 REG_KEY 注册密钥:必须在每个 MB_RED_CLIENT 指令中分配 REG_KEY 注册密钥。
将 REG_KEY 保存在共享数据块中,所有 MB_RED_CLIENT 指令均可通过该数据块接收所
需的注册密钥。
显示许可证 IDENT_CODE 的程序:
1. 根据循环 OB 中的要求,为 MB_RED_CLIENT 指令分配参数。将程序下载到 CPU,并将 CPU 设
置为 RUN。
2. 打开 Modbus 指令的背景数据块,然后单击“监视全部”(Monitor all) 按钮输入注册密钥 REG_KEY 的程序:
1. 通过“添加新块...”(Add new block…) 插入具有唯一符号名的全新共享数据块,例如
“License_DB”。
2. 在该块中创建数据类型为 STRING[17] 的 REG_KEY 参数。
图 13-10 REG KEY
3. 使用复制/粘帖将已发送的 17 位注册密钥复制到“起始值”(Start value) 列。
4. 在循环 OB 中,在 MB_RED_CLIENT 指令的参数 REG_KEY 中,输入许可证数据块的名称和字
符串名称(例如 License_DB.REG_KEY)。
5. 将修改后的块下载到 CPU。可以在运行时间输入注册密钥;不需要从 STOP 更改 RUN。
6. 现在,该 CPU 已获得使用 MB_RED_CLIENT 指令进行 Modbus/TCP 通信的授权,LICENSED 输
出位为 TRUE。如果注册密钥缺失或不正确,CPU 仍将处理 Modbus/TCP 通信,但始终会在 STATUS_x 输
出中显示“W#16#0A90”(无适用于功能性包装的有效许可证密钥)。输出位 LICENSED 为
FALSE。
输入参数:MB_MODE、MB_DATA_ADDR、MB_DATA_LEN 和 MB_DATA_PTR
MB_MODE、MB_DATA_ADDR 和 MB_DATA_LEN 参数的组合定义了当前 Modbus 消息中所
使用的功能代码。
? MB_MODE 中包含有关是否进行读写操作的信息:
读取:MB_MODE = 0、101、102、103 和 104
写入:MB_MODE = 1、2、105、106、115 和 116(注意:MB_MODE = 2 时,Modbus
功能 15 和 05 或 Modbus 功能 16 和 06 无区别。)
? MB_DATA_ADDR 中包含有关待读取/写入的目标信息,以及 MB_RED_CLIENT 指令用于计
算远程地址的地址信息。
? MB_DATA_LEN 包含待读取/写入的值的数量。
功能代码是 15 时,将从远程地址 0 开始写入 2 个输出位。
MB_MODE = 104
MB_DATA_ADDR =
17834
MB_DATA_LEN = 125
功能代码是 4 时,将从远程地址 17.834 开始读取 125 个输入字。
MB_DATA_PTR:
MB_DATA_PTR 参数是一个指针,指向待从 Modbus 服务器接收数据的数据缓冲区或指向待
发送到 Modbus 服务器的数据所在数据缓冲区的指针。可以使用全局数据块或存储区域 (M)
作为数据缓冲区。
对于存储区域 (M) 中的缓冲区,可通过以下方式使用 ANY 格式的指针:“P#位地址” “数据类
型” “长度”(例如:P#M1000.0 WORD 500)。
MB_DATA_PTR 可引用不同的数据结构,具体取决于数据缓冲区所在的存储区域:
? 使用具有优化访问权限的全局数据块时,MB_DATA_PTR 可引用基本数据类型的变量或数
组。支持以下数据类型:
数据类型 长度(位)
Bool 1
Byte、SInt、USInt、Char 8
Word、Int、WChar、UInt 16
DWord、DInt、UDInt、Real 32
可使用所有 Modbus 功能支持的所有数据类型。例如,MB_RED_CLIENT 可将接收到的字
节类型变量中的某个位写入一个特定地址内,而不改变该字节中的其它位。因此,在执
行位操作功能时,无需使用位数组。
? 如果使用位存储器地址区或具有标准访问的全局数据块作为存储区,则 MB_DATA_PTR 对
基本数据类型的使用无任何限制;此时,MB_DATA_PTR 还可引用诸如 PLC 数据类型 (UDT)
和系统数据类型 (SDT) 等复杂数据类型。说明
将位存储器地址区域用作数据缓冲区
如果将位存储器地址区域用作 MB_DATA_PTR 数据缓冲区,则需注意该变量的值。对于
S7-1200 CPU,为 8 KB。
输出参数:STATUS_x、RED_ERR_S7、RED_ERR_DEV 和 TOT_COM_ERR
CPU 将错误消息显示在 MB_RED_CLIENT 指令的状态输出中:
说明
在程序编辑器中,错误状态代码可显示为整数或十六进制值:
1. 在程序编辑器中打开所需的块。
2. 单击“启用/禁用监视”(Monitor on/off) 切换程序状态的显示格式。(如果尚未建立在线连接,
则打开“转至在线”(Go online) 对话框。在此对话框中,可以建立在线连接。)
3. 选择待监视的变量,然后在快捷菜单的“显示格式”(Display format) 中,选择所需的显示格式
连接已建立。
0003 连接已终止。
0A90 MB_RED_CLIENT 指令未授权。有关详细信息,参见上文中“授权”部分。
0AFF 连接未组态且未使用。必须组态“0A”连接。
7000 未激活任何作业且未建立任何连接(REQ=0,DISConNECT=1)。
7001 已触发连接建立操作。
7002 中间调用。正在建立连接。
7003 正在终止连接。
7004 连接已建立且处于受监视状态。未激活任何作业处理。
7005 正在发送数据。
7006 正在接收数据。
? STATUS_x 参数(协议错误)
STATUS
(W#16#)
描述
80C8 在指定时间段内,服务器无响应。请检查与 Modbus 服务器的连接。只有在
尝试了组态的可重复尝试次数之后,才会报告该错误。
如果“MB_RED_CLIENT”指令在指定时间内没有收到*初传输事务 ID(请参见
静态变量 MB_TRANSACTION_ID)的应答,则输出该错误代码。
8380 接收到的 Modbus 帧格式错误或字节数过少。
8382 ? 帧头中的 Modbus 帧长度与接收到的字节数不一致。
? 字节数与实际传送的字节数不一致(仅功能 1 到 4)。
? 收到的帧的起始地址与已经保存的起始地址不一致(功能 5、6、15 和
16)。
? 字数与实际传送的字数不一致(功能 15 和 16)。
8383 读/写数据错误或访问了 MB_DATA_PTR 地址外的区域。有关详细信息,请参
见上文“MB_DATA_PTR”部分。
8384 ? 接收到无效的异常代码。
? 接收到的数据值与*初由客户端发送的不同(功能 5、6 和 8)。
? 接收到无效状态值(功能 11)接收到的子功能代码与*初由客户端发送的不同(功能 8)。
8386 接收到的功能代码与*初发送的代码不一致。
8387 服务器接收到的 Modbus TCP 帧协议 ID 不为“0”。
8388 Modbus 服务器发送的数据长度与所处理的不同。只有使用 Modbus 功能 5、
6、15 或 16 时,才会发生该错误。
? STATUS_x 参数(参数错误)
STATUS
(W#16#)
描述
80B6 无效连接类型;仅支持 TCP 连接。
80BB 参数 ActiveEstablished 的值无效。只允许对客户端建立主动连接
(ActiveEstablished = TRUE)。
8188 参数 MB_MODE 的值无效。
8189 参数 MB_DATA_ADDR 中的数据地址无效。
818A 参数 MB_DATA_LEN 中的数据长度无效。
818B 参数 MB_DATA_PTR 的指针无效。请检查 MB_DATA_ADDR 和 MB_DATA_LEN
参数的值。有关“MB_DATA_ADDR”的更多信息,请参见上文
“MB_DATA_ADDR”部分。
818C 参数 BLOCKED_PROC_TIMEOUT 或 RCV_TIMEOUT 超时(参见指令的静态变
量)。BLOCKED_PROC_TIMEOUT 和 RCV_TIMEOUT 必须介于 0.5 s 和 55.0 s
之间。
8200 ? CPU 当前正在通过该端口处理另一个 Modbus 请求。
? MB_RED_CLIENT 具有相同连接参数的另一实例正在处理现有 Modbus 请
求。
说明
内部使用的通信指令的错误代码
对于 MB_RED_CLIENT 指令,除了会发生表中列出的错误外,还会发生由该指令所使用的通
信指令(TCON、TDISCON、TSEND、TRCV、T_DIAG 和 TRESET)所引起的错误。
CPU 通过 MB_RED_CLIENT 指令的背景数据块来指定错误代码。CPU 将相应指令的错误代码
显示在 "Static" 部分中的 STATUS 下。
有关错误代码的含义,请参见相应通信指令文档