西门子销售工业控制经销商
PLC是什么意思?相信很多人处于大概知道是什么,但是又无法准确说出的阶段,作为专注于为企业提供数据采集和设备控制解决方案的众诚工业,今天和大家探讨一下。
而众诚工业还能根据用户需求,设计PLC控制程序,为客户提供PLC编程和上位机软件的定制化开发技术服务,满足用户的多种需求,比如,自主研发的洁净空调智能控制系统和通风排风智能控制系统就配置PLC,不仅具有报警和定时控制功能,还兼具可扩展性和兼容性,系统能被第三方系统集成。
以上PLC的基本介绍,相信大家对PLC也有一个初步的了解。PLC的型号、品牌不同,对应着其结构形式、性能、编程方式等等都有所差异,价格也各不相同,在挑选时候,建议先要明确自己的应用需求,比如具体的应用场景,希望实现的运动和控制功能,已经特殊的控制要求,这些将决定了PLC的选型和搭配组合。
简单地说,PLC就是一种小型的计算机,和我们常用的计算机不同的是,PLC是设备之间通过数字信号进行互动,而我们常用的计算机,是人和计算机的互动。
控制是PLC的核心功能,其控制类型主要分为以下几种1、开关量的开环控制。这是PLC*基本的控制功能,它能凭借其强大的逻辑运算能力,取代传统继电接触器的控制系统;
2、数据采集与监控。这是PLC非常必要的功能,否则它将无法完成现场控制;
3、数字量智能控制。PLC具有实现接收和输出高速脉冲的功能,近年来先进的PLC还开发了数字控制模块和新型运动单元模块,让工程师更加轻松地通过PLC实现数字量控制;
4、PLC能通过模拟量采集和调节温度、压力、速度等参数。
正因为PLC功能强大,且具有设计方便、重量体积小、能耗低、改造工作量小、通用性强、维护方便等易学易用的特点,深受工程师的欢迎,因此应用非常广泛,钢铁、石油、化工、纺织、交通、机械制造等等行业都能看到它的身影。
描述 MB_DATA_LEN IN UInt Modbus 数据长度:分配此请求中要访问的位数或字数。有效长 度的相关信息,请参见下面的 Modbus 功能表。 MB_DATA_PTR IN_OUT Variant 指向 Modbus 数据寄存器的指针:寄存器缓冲数据进入 Modbus 服务器或来自 Modbus 服务器。指针必须分配一个未进行优化的 全局 DB 或 M 存储器地址。 ConNECT IN_OUT Variant 引用包含系统数据类型为“TCON_IP_v4”的连接参数的数据块结 构。还支持以下数据类型:TCON_IP_V4_SEC、TCON_QDN 和 TCON_QDN_SEC。请参见“PROFINET 连接参数” (页 630)。 DONE OUT Bool 上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫 描周期时间。 BUSY OUT Bool • 0 - 无 MB_CLIENT 操作正在进行 • 1 - MB_CLIENT 操作正在进行 ERROR OUT Bool MB_CLIENT 执行因错误而结束后,ERROR 位将在一个扫描周期时 间内保持为 TRUE。STATUS 参数中的错误代码仅在 ERROR = TRUE 的一个循环周期内有效。 STATUS OUT Word 执行条件代码 Modbus 功能 23 描述 使用 Modbus 功能 23,可以在作业中执行以下操作: 1. 将数据从 CPU 传输到 Modbus 服务器,并写入一个或多个保持寄存器。 2. 从 Modbus 服务器的一个或多个保持寄存器中读取数据,然后将此数据传输到 CPU。 自指令版本 V6.0 起,“MB_CLIENT”指令支持 Modbus 功能 23。 参数 使用 Modbus 功能 23 时,MB_MODE 参数的值必须为 123。 参数 MB_DATA_ADDR、MB_DATA_LEN 和 MB_DATA_PTR 未占用,并且这些参数的值必须为 默认值。 使用 Modbus 功能 23 时,将使用六个新参数,如下表所述。这些参数中的每一个参数都以 “RD_”或“WR_”开头,用于表明其属于读或写任务。这些参数默认处于隐藏状态。使用Modbus 功能 23 时,这六个参数必须全部使用。如果使用其它 Modbus 功能,则这六个参 数的值必须为 0 或必须为空。否则,将返回 STATUS 值 16#818D。 表格 13-57 参数的数据类型 参数和类型 数据类型 描述 RD_MB_DATA_AD DR IN UInt 远程设备上的起始地址,要从该地址开始读取数据。 允许值:0 到 65535 RD_MB_DATA_LEN IN UInt 要从远程设备读取的寄存器数。 允许值:1 到 125 WR_MB_DATA_AD DR IN UInt 远程设备上的起始地址,要从该地址开始写入数据。 允许值:0 到 65535 WR_MB_DATA_LE N IN UInt 要写入远程设备的寄存器数。 允许值:1 到 121 RD_MB_DATA_PTR IN_OUT Variant 指向待从 Modbus 服务器读取的数据所在数据缓冲区的指针。 允许使用与 MB_DATA_PTR 相同的数据类型。 WR_MB_DATA_PT R IN_OUT Variant 指向待写入 Modbus 服务器的数据所在数据缓冲区的指针。 允许使用与 MB_DATA_PTR 相同的数据类型。 STATUS 参数 STATUS 值 16#8383、8189、818A 和 818B 的含义已扩展。添加了 STATUS 值 16#818D。 升级项目,升级指令 当使用 MB_CLIENT 指令(例如,指令版本 V5.2)升级现有项目时,程序不会自动使用新的 指令版本。要使用 Modbus 功能 23,必须手动升级指令版本。 REQ 参数 FALSE = 无 Modbus 通信请求 TRUE = 请求与 Modbus TCP 服务器通信 如果 MB_CLIENT 的实例没有激活且参数 DISConNECT=0,当 REQ=1 时,将启动一个新的 Modbus 请求。如果尚未建立连接,则建立一个新的连接。 如果在当前请求完成前 DISConNECT=0 且 REQ=1,从而再次执行 MB_CLIENT 的同一个实例, 则不会进行后续 Modbus 传送。但是,一旦完成当前请求,如果通过 REQ=1 执行 MB_CLIENT,可处理新的请求。完成当前 MB_CLIENT 通信请求后,DONE 位将在一个周期内保持为 TRUE。DONE 位可用作 定时门,对多个 MB_CLIENT 请求进行排序。 说明 MB_CLIENT 处理期间输入数据的一致性 Modbus 客户端启动 Modbus 操作后,将在内部保存所有输入状态,然后在每次后续调用时 进行比较。比较用于确定此特定调用是否是活动客户端请求的发起者。可使用一个公用背景 数据块执行多个 MB_CLIENT 调用。 在主动处理 MB_CLIENT 操作期间应不改变输入,这一点很重要。若不遵循此规则,则 MB_CLIENT 无法确定活动实例。 MB_MODE 和 MB_DATA_ADDR 参数用于选择 Modbus 通信功能 MB_CLIENT 指令使用 MB_MODE 输入而非功能代码。MB_DATA_ADDR 分配远程数据的起始 Modbus 地址。 MB_MODE 和 MB_DATA_ADDR 一起确定实际 Modbus 消息中使用的功能代码。下表列出了 MB_MODE、MB_DATA_ADDR 和 Modbus 功能之间的对应关系: 表格 13-58 Modbus 功能 MB_MO DE Modbus 功能 数据长度 操作和数据 MB_DATA_ADD R 0 01 1 到 2000 读取输出位: 每个请求 1 到 2000 个位 1 到 9999 101 01 1 到 2000 读取输出位: 每个请求 1 到 2000 个位 00000 到 65535 0 02 1 到 2000 读取输入位: 每个请求 1 到 2000 个位 10001 到 19999 102 02 1 到 2000 读取输入位: 每个请求 1 到 2000 个位 00000 到 65535 0 03 1 到 125 读取保持寄存器: 每个请求 1 到 125 个字MB_DATA_PTR 分配一个缓冲区来存储从 Modbus TCP 服务器读取或写入到该服务器的数据 数据缓冲区可位于未进行优化的全局 DB 或 M 存储区地址中。 对于 M 存储器中的缓冲区,使用 Any 指针格式。具体格式为 P#“位地址” “数据类型” “长度”, 例如 P#M1000.0 WORD 500。 MB_DATA_PTR 参数 指定一个通信缓冲区 • MB_CLIENT 通信功能: – 从 Modbus 服务器地址(00001 到 09999)读写 1 位数据 – 从 Modbus 服务器地址(10001 到 19999)读取 1 位数据 – 从 Modbus 服务器地址(30001 到 39999)和(40001 到 49999)读取 16 位字数据 – 向 Modbus 服务器地址(40001 到 49999)写入 16 位字数据 • 向/从 MB_DATA_PTR 分配的 DB 或 M 储存器缓冲区传输字或位大小的数据。 • 如果通过 MB_DATA_PTR 分配 DB 为缓冲区,必须为所有 DB 数据元素分配数据类型。 – 1 位 Bool 数据类型代表一个 Modbus 位地址 – 16 位单字数据类型(如 WORD、UInt 和 Int)代表一个 Modbus 字地址 – 32 位双字数据类型(如 DWORD、DInt 和 Real)代表两个 Modbus 字地址 • 可以通过 MB_DATA_PTR 分配复杂的 DB 元素,例如 – 数组 – 指定的结构,其中每个元素都是唯一的。 – 指定的复杂结构,其中每个元素都具有唯一的名称以及 16 或 32 位数据类型。 • 不要求 MB_DATA_PTR 数据区位于同一个全局数据块(或 M 存储区)中。可分配一个数 据块供 Modbus 读取,分配另一个数据块供 Modbus 写入,或分配一个数据块用于各个 MB_CLIENT。 ConNECT 参数分配用于建立 PROFINET 连接的数据 必须使用全局数据块并存储所需的连接数据,然后才能在 ConNECT 参数中引用此 DB。 1. 创建新的全局 DB 或使用现有全局 DB 来存储 ConNECT 数据。可使用一个 DB 存储多个 TCON_IP_v4 数据结构。每个 Modbus TCP 客户端或服务器连接使用一个 TCON_IP_v4 数据结 构。可在 ConNECT 参数中引用连接数据。 2. 使用有帮助的名称对 DB 和静态变量进行命名。例如,将数据块命名为“Modbus 连接”,将 静态变量命名为“TCPactive_1”(针对 Modbus TCP 客户端连接 1)。 3. 在 DB 编辑器的“数据类型”(Data Type) 列中为示例静态变量“TCPactive_1”分配系统数据类型 “TCON_IP_v4修改各 MB_CLIENT 连接的 TCON_IP_V4 DB 数据 • InterfaceID:在设备组态窗口中单击 CPU PROFINET 端口图像。然后单击“常规” (General) 属性选项卡并使用该处显示的硬件标识符。 • ID:输入一个介于 1 到 4095 之间的连接 ID 编号。使用底层 TCON、TDISCON、TSEND 和 TRCV 指令建立 Modbus TCP 通信,用于 OUC(开放式用户通信)。 • ConnectionType:对于 TCP/IP,使用默认值 16#0B(十进制数 = 11)。 • ActiveEstablished:该值必须为 1 或 TRUE。主动连接,由 MB_CLIENT 启动 Modbus 通 信。 • RemoteAddress:将目标 Modbus TCP 服务器的 IP 地址输入到四个 ADDR 数组单元中。 例如,如上图所示输入 192.168.2.241。 • RemotePort:默认值为 502。该编号为 MB_CLIENT 试图连接和通信的 Modbus 服务器的 IP 端口号。一些第三方 Modbus 服务器要求使用其它端口号。 • LocalPort:对于 MB_CLIENT 连接,该值必须为 0。 多个客户端连接 Modbus TCP 客户端支持的并发连接数*多为 PLC 允许的开放式用户通信*大连接数。PLC 的 连接总数(包括 Modbus TCP 客户端和服务器)不得超过支持的开放式用户通信*大连接数 (页 602)。单独的并发客户端连接必须遵循以下规则: • 各 MB_CLIENT 连接必须使用一个唯一的背景 DB • 必须为各 MB_CLIENT 连接分配一个唯一的服务器 IP 地址 • 各 MB_CLIENT 连接分配一个唯一的连接 ID • 是否需要唯一的 IP 端口号取决于服务器组态 各个背景 DB 必须使用不同的连接 ID。***背景 DB 和连接 ID 成对使用,且对每个连接必 须是唯一的。 表格 13-59 MB_CLIENT 背景数据块:用户可访问静态变量 变量 数据类型 默认值 说明 Blocked_Proc_Tim eout Real 3.0 在 Modbus 客户端实例受阻后,移除该激活的实例前需等待的时间 (秒)。例如,当已发出客户端请求,但应用程序在彻底完成该请 求前停止执行该客户端功能时,就会出现这种情况。*大 S7-1200 限值是 55 秒。 MB_Unit_ID Word 255 Modbus 设备标识符 Modbus TCP 服务器通过其 IP 地址寻址。因此 MB_UNIT_ID 参数不 用于 Modbus TCP 寻址。 MB_UNIT_ID 参数与 Modbus RTU 协议中的从站地址相对应。如果 Modbus TCP 服务器用于采用 Modbus RTU 协议的网关, MB_UNIT_ID 可用于标识在串行网络上连接的从站设备。 MB_UNIT_ID 将用于将请求转发给正确的 Modbus RTU 从站地址。 某些 Modbus TCP 设备可能要求 MB_UNIT_ID 参数保持受限范围 内。 RCV_TIMEOUT Real 2.0 MB_CLIENT 等待服务器响应请求的时间(秒)。 已连接 Bool 0 指示与所分配服务器的连接是已接通还是已断开:1 = 接通,0 = 断开在指定时间段内,服务器无响应。请检查与 Modbus 服务器的连 接。只有在尝试了组态的可重复尝试次数之后,才会报告该错 误。 如果“MB_CLIENT”指令在指定时间内没有收到*初传输事务 ID (请参见静态变量 MB_TRANSACTION_ID)的应答,则输出该错误 代码。 8380 本地 - 接收到的 Modbus 帧格式错误或字节数过少。 8381 远程 01 功能代码不受支持。 8382 本地 - • 帧头中的 Modbus 帧长度与接收到的字节数不一致。 • 字节数与实际传送的字节数不一致(仅功能 1 到 4)。例如, 当“MB_CLIENT”请求奇数个字,但“MB_SERVER”始终发送偶数 个字时,将发生该状况。 • 收到的帧的起始地址与已经保存的起始地址不一致(功能 5、 6、15、16)。 • 字数与实际传送的字数不一致(功能 15 和 16)。 远程 03 接收到的 Modbus 帧长度无效。检查服务器端。 8383 本地 - • 指令版本 < V6.0:读/写数据错误或访问了 MB_DATA_PTR (页 1049) 地址外的区域。 • 指令版本 >= V6.0:读/写数据出错或访问了 MB_DATA_PTR、 RD_MB_DATA_PTR 或 WR_MB_DATA_PTR 地址外的区域。 远程 02 读/写数据错误或访问服务器地址区域以外的位置 8384 本地 - • 接收到无效的异常代码。 • 接收到的数据值与*初由客户端发送的数据值不同(功能 5、6 和 8)。 • 接收到无效状态值(功能 11) 远程 03 功能 5 数据值错误 8385 本地 - • 诊断代码不支持。 • 接收到的子功能代码与*初由客户端发送的代码不同(功能 8)。 远程 03 诊断代码不支持 8386 本地 - 接收到的功能代码与*初发送的代码不一致。 8387 本地 - 服务器接收到的 Modbus TCP 帧协议 ID 不为“0MB_SERVER 应 答中的 错误代码 (B#16#) 描述 8388 本地 - Modbus 服务器发送的数据长度与所请求的数据长度不同。只有 使用 Modbus 功能 5、6、15 或 16 时,才会发生该错误。 * 在程序编辑器中,状态代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。 表格 13-61 MB_CLIENT 执行条件代码 1 STATUS (W#16#) MB_CLIENT 参数错误 7001 MB_CLIENT 正在等待 Modbus 服务器响应指定 TCP 端口处的连接或断开连接请求。仅在第一 次执行连接或断开操作时才返回此代码。 7002 MB_CLIENT 正在等待 Modbus 服务器响应指定 TCP 端口处的连接或断开连接请求。等待连接 或断开操作完成时,将针对任何后续执行返回此代码。 7003 断开操作已成功完成(仅在一个 PLC 扫描周期内有效)。 80C8 服务器在指定的时间内未响应。MB_CLIENT 必须在分配的时间内使用*初传送的事务 ID 接收 响应,否则将返回此错误。检查与 Modbus 服务器设备的连接。 尝试过重试操作(若适用)后,才返回此错误。 8188 参数 MB_MODE 的值无效。 8189 • 指令版本 < V6.0:参数 MB_DATA_ADDR 中的数据地址无效。 • 指令版本 >= V6.0:参数 MB_DATA_ADDR、RD_MB_DATA_ADDR 或 WR_MB_DATA_ADDR 中 的数据地址无效 818A • 指令版本 < V6.0:参数 MB_DATA_LEN 中的数据长度无效。 • 指令版本 >= V6.0:参数 MB_DATA_LEN、RD_MB_DATA_LEN 或 WR_MB_DATA_LEN 中的数 据长度无效 818B 指向 DATA_PTR 区的指针无效。可以是 MB_DATA_ADDRESS 与 MB_DATA_LEN 的组合。 818C 指针 DATA_PTR 指向未经优化的 DB 区(必须是未经优化的 DB 区或 M 存储区) 818D 一个或多个参数的值不是默认值,但未通过指定的 Modbus 功能使用。 示例:如果 MB_MODE 的值为 123,则 MB_DATA_ADDR 和 MB_DATA_LEN 的值必须为 0,且 MB_DATA_PTR 必须为空。如果 MB_MODE 的值不是 123,则所有以“RD_”或“WR_”开头的参数 的值都必须为 0 或为空。 8200 端口正忙于处理现有的 Modbus 请求。 8380 接收到的 Modbus 帧不正确或接收到的字节太少。分配的连接 ID 参数和用于先前请求的 ID 不同。只能有一个单个连接 ID 与每个 MB_CLIENT 背 景数据块配合使用。 如果从一个服务器接收到的 Modbus TCP 协议 ID 不是 0,该代码也可作为内部错误返回。 8388 Modbus 服务器返回一些和请求内容不同的数据。该代码仅适用于 Modbus 功能 15 或 16。 1 除了上面列出的 MB_CLIENT 错误外,也可以从底层传输块通信指令(TCON、TDISCON、TSEND 和 TRCV)返回 错误。 MB_SERVER(作为 Modbus TCP 服务器通过 PROFINET 进行通信)指令 表格 13-62 MB_SERVER 指令 LAD/FBD SCL 描述 "MB_SERVER_DB"( DISCONNECT:=_bool_in_, CONNECT:=_variant_in_, NDR=>_bool_out_, DR=>_bool_out_, ERROR=>_bool_out_, STATUS=>_word_out_, MB_HOLD_REG:=_variant_inout_); MB_SERVER 作为 Modbus TCP 服务器, 通过 S7-1200 CPU 上的 PROFINET 端口 进行通信。不需要额外的通信硬件模块。 MB_SERVER 可接收与 Modbus TCP 客户 端的连接请求、接收 Modbus 功能请求 并发送响应消息。 表格 13-63 参数的数据类型 参数和类型 数据类型 描述 DISConNECT IN Bool MB_SERVER 尝试与伙伴设备进行“被动”连接。也就是说,服务器被 动地侦听来自任何请求 IP 地址的 TCP 连接请求。 如果 DISConNECT = 0 且不存在连接,则可以启动被动连接。 如果 DISConNECT = 1 且存在连接,则启动断开操作。该参数允许程 序控制何时接受连接。每当启用此输入时,无法尝试其它操作。 ConNECT IN Variant 引用包含系统数据类型为“TCON_IP_v4”的连接参数的数据块结构。还 支持以下数据类型:TCON_IP_V4、TCON_QDN 和 TCON_QDN_SEC。 请参见“PROFINET 连接参数” (页 630)。 MB_HOLD_REG IN_OUT Variant 指向 MB_SERVER Modbus 保持寄存器的指针:保持寄存器必须是一个 未经优化的全局 DB 或 M 存储区地址。储存区用于保存允许 Modbus 客户端使用 Modbus 寄存器功能 3(读)、6(写)、16(写)和 23 (写/读)访问的数据。据类型 描述 NDR OUT Bool 新数据就绪:0 = 没有新数据,1 = 表示 Modbus 客户端已写入新数据 DR OUT Bool 数据读取:0 = 没有读取数据,1 = 表示 Modbus 客户端已读取该数据。 ERROR OUT Bool MB_SERVER 执行因错误而结束后,ERROR 位将在一个扫描周期时间内 保持为 TRUE。STATUS 参数中的错误代码仅在 ERROR = TRUE 的一个 循环周期内有效。 STATUS OUT Word 执行条件代码 ConNECT 参数分配用于建立 PROFINET 连接的数据 必须使用全局数据块并存储所需的连接数据,然后才能在 ConNECT 参数中引用此 DB。 1. 创建新的全局 DB 或使用现有全局 DB 来存储 ConNECT 数据。可使用一个 DB 存储多个 TCON_IP_v4 数据结构。每个 Modbus TCP 客户端或服务器连接使用一个 TCON_IP_v4 数据结 构。可在 ConNECT 参数中引用连接数据。 2. 使用有帮助的名称对 DB 和静态变量进行命名。例如,将数据块命名为“Modbus 连接”,将 静态变量命名为“TCPpassive_1”(针对 Modbus TCP 服务器连接 1)。 3. 在 DB 编辑器的“数据类型”(Data Type) 列中为示例静态变量“TCPactive_1”分配系统数据类型 “TCON_IP_v4”。 4. 扩展 TCON_IP_v4 结构,从而可以修改连接参数,如下图所示。 5. 修改 MB_SERVER 连接的 TCON_IP_v4 结构数据。 6. 输入 MB_SEVER ConNECT 参数的 DB 结构引用。本示例中应为“Modbus 连接”.TCPpassive_1。修改各 MB_SERVER 连接的 TCON_IP_V4 DB 数据 • InterfaceID:在设备组态窗口中单击 CPU PROFINET 端口图像。然后单击“常规” (General) 属性选项卡并使用该处显示的硬件标识符。 • ID:为该连接输入一个介于 1 和 4095 之间的唯一编号。使用底层 TCON、TDISCON、 TSEND 和 TRCV 指令建立 M