西门子销售数控软件经销商
PLC是什么意思?相信很多人处于大概知道是什么,但是又无法准确说出的阶段,作为专注于为企业提供数据采集和设备控制解决方案的众诚工业,今天和大家探讨一下。
而众诚工业还能根据用户需求,设计PLC控制程序,为客户提供PLC编程和上位机软件的定制化开发技术服务,满足用户的多种需求,比如,自主研发的洁净空调智能控制系统和通风排风智能控制系统就配置PLC,不仅具有报警和定时控制功能,还兼具可扩展性和兼容性,系统能被第三方系统集成。
以上PLC的基本介绍,相信大家对PLC也有一个初步的了解。PLC的型号、品牌不同,对应着其结构形式、性能、编程方式等等都有所差异,价格也各不相同,在挑选时候,建议先要明确自己的应用需求,比如具体的应用场景,希望实现的运动和控制功能,已经特殊的控制要求,这些将决定了PLC的选型和搭配组合。
简单地说,PLC就是一种小型的计算机,和我们常用的计算机不同的是,PLC是设备之间通过数字信号进行互动,而我们常用的计算机,是人和计算机的互动。
控制是PLC的核心功能,其控制类型主要分为以下几种1、开关量的开环控制。这是PLC*基本的控制功能,它能凭借其强大的逻辑运算能力,取代传统继电接触器的控制系统;
2、数据采集与监控。这是PLC非常必要的功能,否则它将无法完成现场控制;
3、数字量智能控制。PLC具有实现接收和输出高速脉冲的功能,近年来先进的PLC还开发了数字控制模块和新型运动单元模块,让工程师更加轻松地通过PLC实现数字量控制;
4、PLC能通过模拟量采集和调节温度、压力、速度等参数。
正因为PLC功能强大,且具有设计方便、重量体积小、能耗低、改造工作量小、通用性强、维护方便等易学易用的特点,深受工程师的欢迎,因此应用非常广泛,钢铁、石油、化工、纺织、交通、机械制造等等行业都能看到它的身影。
m_Load 实例数据块 (DB) 变量 下表显示了可在程序中使用的 Modbus_Comm_Load 的背景数据块中的公共静态变量。 表格 13-77 Modbus_Comm_Load 背景数据块静态变量 变量 数据类型 默认值 说明 ICHAR_GAP Word 0 字符间*大字符延迟时间。该参数以毫秒为单位指定,用于增加 接收字符间的预期时间。与此参数对应的位时间个数加到 Modbus 默认值的 35 个位时间(3.5 个字符时间)。 RETRIES Word 2 在返回错误代码 0x80C8“无响应”之前主站进行的重复尝试次 数。 EN_SUPPLY_VOLT Bool 0 启用对缺失电源电压 L+ 的诊断。 MODE USInt 0 工作模式 有效工作模式如下: • 0 = 全双工 (RS232) • 1 = 全双工 (RS422) 四线制模式(点对点) • 2 = 全双工 (RS422) 四线制模式(多主站,CM PtP,ET 200SP) • 3 = 全双工 (RS422) 四线制模式(多从站,CM PtP,ET 200SP) • 4 = 半双工 (RS485) 双线模式(参见下面的注释) LINE_PRE USInt 0 接收线路初始状态 有效的初始状态如下: • 0 =“无”初始状态(参见下面的注释)。 • 1 = 信号 R(A) = 5 V DC,信号 R(B) = 0 V DC (断路检测): 通过该初始状态可进行断路检测。 仅可配合如下选项使用:“全双工 (RS422) 四线制模式(点 对点连接)”和“全双工 (RS422) 四线制模式(多点从 站)”。 • 2 = 信号 R(A) = 0 V DC,信号 R(B) = 5 V DC: 该默认设置对应空闲状态(无激活的发送操作)。无法通过 该初始状态进行断路检测。 BRK_DET USInt 0 断路检测 以下选择有效: • 0 = 禁止断路检测据类型 默认值 说明 EN_DIAG_ALARM Bool 0 激活诊断中断: • 0 = 未激活 • 1 = 已激活 STOP_BITS USInt 1 停止位的数目: • 1 = 1 个停止位 • 2 = 2 个停止位 • 0,3 到 255 = 保留 说明 使用 PROFIBUS 电缆连接 CM 1241 的 RS485 接口时需要此设置 表格 13-78 Modbus_Comm_Load 执行条件代码 1 STATUS (W#16#) 说明 0000 无错误 8180 端口 ID 值无效(通信模块的端口/硬件标识符错误) 8181 波特率值无效 8182 奇偶校验值无效 8183 流控制值无效 8184 响应超时值无效(响应超时小于*小值 5 ms) 8185 MB_DB 参数不是 Modbus_Master 或 Modbus_Slave 指令的背景数据块。 1 除了上述列出的 Modbus_Comm_Load 错误,还可能返回底层 PtP 通信指令的错误r(作为 Modbus RTU 主站通过 SIPLUS I/O 或 PtP 端口通信)指令 表格 13-79 Modbus_Master 指令 LAD/FBD SCL 描述 "Modbus_Master_DB"( REQ:=_bool_in_, MB_ADDR:=_uint_in_, MODE:=_usint_in_, DATA_ADDR:=_udint_in_, DATA_LEN:=_uint_in_, DONE=>_bool_out_, BUSY=>_bool_out_, ERROR=>_bool_out_, STATUS=>_word_out_, DATA_PTR:=_variant_inout_); Modbus_Master 指令作为 Modbus 主站利用 之前执行 Modbus_Comm_Load 指令组态的端 口进行通信。将 Modbus_Master 指令放入程 序时自动分配背景数据块。指定 Modbus_Comm_Load 指令的 MB_DB 参数时 将使用该 Modbus_Master 背景数据块。 表格 13-80 参数的数据类型 参数和类型 数据类型 描述 REQ IN Bool 0 = 无请求 1 = 请求将数据传送到 Modbus 从站 MB_ADDR IN V1.0: USInt V2.0: UInt Modbus RTU 站地址: 标准寻址范围(1 到 247) 扩展寻址范围(1 到 65535) 值 0 被保留用于将消息广播到所有 Modbus 从站。只有 Modbus 功 能代码 05、06、15 和 16 是可用于广播的功能代码。 MODE IN USInt 模式选择:指定请求类型(读、写或诊断)。请参见下面的 Modbus 功能表了解详细信息。 DATA_ADDR IN UDInt 从站中的起始地址:指定要在 Modbus 从站中访问的数据的起始地 址。请参见下面的 Modbus 功能表了解有效地址信息。 DATA_LEN IN UInt 数据长度:指定此请求中要访问的位数或字数。请参见下面的 Modbus 功能表了解有效长度信息。 DATA_PTR IN_OUT Variant 数据指针:指向要写入或读取的数据的 M 或 DB 地址(未经优化的 DB 类型)。 DONE OUT Bool 上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描 周期时间。 BUSY OUT Bool • 0 - 无 Modbus_Master 操作正在进行 • 1 - Modbus_Master 操作正在进行描述 ERROR OUT Bool 上一请求因错误而终止后,ERROR 位将保持为 TRUE 一个扫描周期 时间。STATUS 参数中的错误代码值仅在 ERROR = TRUE 的一个扫 描周期内有效。 STATUS OUT Word 执行条件代码 Modbus_Master 通信规则 • 必须先执行 Modbus_Comm_Load 组态端口,然后 Modbus_Master 指令才能与该端口通 信。 • 如果要将某个端口用于初始化 Modbus 主站请求,则 Modbus_Slave 不应使用该端口。 Modbus_Master 执行的一个或多个实例可使用该端口,但是对于该端口,所有 Modbus_Master 执行都必须使用同一个 Modbus_Master 背景数据块。 • Modbus 指令不使用通信中断事件来控制通信过程。用户程序必须轮询 Modbus_Master 指令以了解传送和接收的完成情况。 • 对于给定的端口,从程序循环 OB 中调用所有 Modbus_Master 执行。Modbus_Master 指 令只能在一个程序循环或循环/延时执行等级执行。它们不能同时在两种执行优先级中执 行。如果一个 Modbus_Master 指令被另一个执行优先级更高的 Modbus_Master 取代,将 导致不正确的操作。Modbus_Master 指令不能在启动、诊断或时间错误执行优先级执行。 • Modbus_Master 指令启动传输后,必须连续执行已启用 EN 输入的该实例,直到返回状态 DONE=1 或状态 ERROR=1 为止。在这两个事件其中之一发生前,一个特殊的 Modbus_Master 实例被视为已激活。原始实例激活后,调用已启用 REQ 输入的其它任何 实例都将导致错误。如果原始实例的连续执行过程停止,则请求状态保持激活一段时间, 该时间由静态变量“Blocked_Proc_Timeout”指定。一旦超出该时间段,则下一个使用激活 的 REQ 输入调用的 Modbus_Master 指令成为激活实例。这可以防止单个 Modbus_Master 指令独占或锁定对端口的访问。如果在由静态变量“Blocked_Proc_Timeout”指定的时间段 内没有启用原始激活的实例,则下次执行此实例(未设置 REQ)时将清除激活状态。如 果设置了 REQ,则此次执行将启动新的 Modbus_Master 请求,如同其它实例未曾激活一 样。 REQ 参数 0 = 无请求;1 = 请求将数据传送到 Modbus 从站 可使用电平或边沿触发的触点控制此输入。只要此输入启用,状态机便会启动,以确保在当 前请求完成前不允许使用同一背景数据块的任何其它 Modbus_Master 发出请求。在当前请 求执行期间,将捕获所有其它输入状态并内部保存,直到接收到响应或检测到错误如果在当前请求完成前 REQ 输入 = 1,从而再次执行 Modbus_Master 的同一实例,则不会 进行任何后续传送。但是,如果当前请求已完成,因为 REQ 输入 = 1 而再次执行 Modbus_Master 时,便会发出新请求。 DATA_ADDR 和 MODE 参数用于选择 Modbus 功能类型 DATA_ADDR(从站中的 Modbus 起始地址):指定要在 Modbus 从站中访问的数据的起始 地址。 Modbus_Master 指令使用 MODE 输入而非功能代码输入。MODE 和 Modbus 地址一起确定 实际 Modbus 消息中使用的功能代码。下表列出了 MODE 参数、Modbus 功能代码和 Modbus 地址范围之间的对应关系。 表格 13-81 Modbus 功能 MODE Modbus 功能 数据长度 操作和数据 Modbus 地址 0 01 1 到 2000 1 到 1992 1 读取输出位: 每个请求 1 到 1992 或 2000 个位 1 到 9999 0 02 1 到 2000 1 到 1992 1 读取输入位: 每个请求 1 到 1992 或 2000 个位 10001 到 19999 0 03 1 到 125 1 到 124 1 读取保持寄存器: 每个请求 1 到 124 或 125 个字 40001 到 49999 或 400001 到 465535 0 04 1 到 125 1 到 124 1 读取输入字: 每个请求 1 到 124 或 125 个字 30001 到 39999 104 04 1 到 125 1 到 124 1 读取输入字: 每个请求 1 到 124 或 125 个字 00000 到 65535 1 05 1 写入一个输出位: 每个请求一位 1 到 9999 1 06 1 写入一个保持寄存器: 每个请求 1 个字 40001 到 49999 或 400001 到 465535 1 15 2 到 1968 2 到 1960 1 写入多个输出位: 每个请求 2 到 1960 或 1968 个位 1 到 9999 1 16 2 到 123 2 到 122 1 写入多个保持寄存器: 每个请求 2 到 122 或 123 个字数据长度 操作和数据 Modbus 地址 2 15 1 到 1968 2 到 1960 1 写入一个或多个输出位: 每个请求 1 到 1960 或 1968 个位 1 到 9999 2 16 1 到 123 1 到 122 1 写入一个或多个保持寄存器: 每个请求 1 到 122 或 123 个字 40001 到 49999 或 400001 到 465535 11 11 0 读取从站通信状态字和事件计数器。状态 字指示忙闲情况(0 - 不忙,0xFFFF - 忙)。每成功完成一条消息,事件计数器 的计数值递增。 对于该功能,Modbus_Master 的 DATA_ADDR 和 DATA_LEN 操作数都将被忽 略。 80 08 1 利用数据诊断代码 0x0000 检查从站状态 (回送测试 - 从站回送请求) 每个请求 1 个字 81 08 1 利用数据诊断代码 0x000A 重新设置从站 事件计数器 每个请求 1 个字 3 到 10、 12 到 79、 82 到 255 保留 1 对于“扩展寻址”模式,根据功能所使用的数据类型,数据的*大长度将减小 1 个字节或 1 个字。数 DATA_PTR 参数指向要写入或读取的 DB 或 M 地址。如果使用数据块,则必须创建一个全局 数据块为读写 Modbus 从站提供数据存储位置。 说明 DATA_PTR 数据块类型必须允许直接寻址 该数据块必须允许直接(**)寻址和符号寻址。创建该数据块时,必须选择“标准” (Standard) 访问属性。 自 Modbus_Master 指令版本 V4.0 或更高版本起,可以启用数据块属性“优化块访问” (Optimized block access)。只能在具有以下数据类型的优化存储器中使用单个元素或元素数 组:Bool、Byte、Char、Word、Int、DWord、Dint、Real、USInt、UInt、UDInt、SInt 或 WChar。 DATA_PTR 参数的数据块结构 • 这些数据类型对 Modbus 地址 30001 到 39999、40001 到 49999 和 400001 到 465536 的字读取有效,对 Modbus 地址 40001 到 49999 和 400001 到 465536 的字写入也有效。 – WORD、UINT 或 INT 数据类型的标准数组 – 指定的 WORD、UINT 或 INT 结构,其中每个元素都具有唯一的名称和 16 位数据类型。 – 指定的复杂结构,其中每个元素都具有唯一的名称以及 16 或 32 位数据类型。 • 用于 Modbus 地址 00001 到 09999 的位读取和写入和 10001 到 19999 的位读取。 – 布尔数据类型的标准数组。 – 唯一命名的布尔变量的已命名布尔结构。 • 尽管不是必需的,但还是建议每个 Modbus_Master 指令都具有各自的单独存储区。此建 议的原因在于,如果多个 Modbus_Master 指令读取和写入同一个存储区,发生数据损坏 的可能性会更大。 • 不要求 DATA_PTR 数据区位于同一个全局数据块中。可创建一个具有多个区域的数据块供 Modbus 读取、一个数据块供 Modbus 写入或一个数据块用于各个从站。r 指令数据块 (DB) 变量 下表显示了可在程序中使用的 Modbus_Master 的背景数据块中的公共静态变量。 表格 13-82 Modbus_Master 背景数据块静态变量 变量 数据类型 默认值 描述 Blocked_Proc_Timeo ut Real 3.0 在 Modbus_Master 实例受阻后,移除该激活的实例前需等待的 时间(秒)。例如,当已发出 Modbus_Master 请求,但程序在 彻底完成该请求前停止调用该 Modbus_Master 功能时,就会出 现这种情况。时间值必须大于 0 且小于 55 秒,否则发生错误。 Extended_Addressin g Bool FALSE 组态单字节或双字节从站寻址: • FALSE = 单字节地址;0 到 247 • TRUE = 双字节地址(相当于扩展寻址);0 到 65535 MB_DB MB_BASE - Modbus_Comm_Load 指令的 MB_DB 参数必须连接 Modbus_Master 指令的 MB_DB 参数。 用户程序可以将值写入 Blocked_Proc_Timeout 和 Extended_Addressing 变量,以控制 Modbus_Master 操作。有关如何在程序编辑器中使用这些变量的示例以及有关 Modbus 扩 展寻址的详细信息,请参见 HR@Start@Offset (页 1111) 和 Extended_Addressing (页 1111) 的 Modbus_Slave 主题说明。 条件代码 表格 13-83 Modbus_Master 执行条件代码(通信和组态错误)1 STATUS (W#16#) 描述 0000 无错误 80C8 从站超时。指定从站在指定时间内没有响应。请检查从站设备的波特率、奇偶性和 接线。尝试过所有组态的重试操作后,才警告此错误。 80C9 Modbus_Master 指令因以下原因发生超时: • 该指令正在等待来自模块的响应,而该模块正用于通信。 • Blocked_Proc_Timeout 值设置得太小。 如果 PROFIBUS 或 PROFINET 分布式 I/O 设备从以下状况之一返回,就会报告该错误: • 电源或通信中断 • 通信模块插/拔事件 在这些情况下,将重新加载 PLC 的硬件组态,并且必须再次执行述 80D1 接收方发出了暂停主动传输的流控制请求并且在指定的等待时间内未重新激活该传输。 在硬件流控制期间,如果接收方在指定的等待时间内没有声明 CTS,也会产生该错误。 80D2 传送请求中止,因为没有从 DCE 收到任何 DSR 信号。 80E0 因接收缓冲区已满,消息被终止。 80E1 因出现奇偶校验错误,消息被终止。 80E2 因组帧错误,消息被终止。 80E3 因出现超限错误,消息被终止。 80E4 因指定长度超出总缓冲区大小,消息被终止。 8180 无效端口 ID 值或 Modbus_Comm_Load 指令出错 8186 Modbus 站地址无效 8188 指定给广播请求的模式无效 8189 数据地址值无效 818A 数据长度值无效 818B 指向本地数据源/目标的指针无效:大小不正确 818C DATA_PTR 的指针无效或 Blocked_Proc_Timeout 无效。数据区域必须是以下之一: • 典型数据块 • 符号或保持数据块中基本数据类型的数组 • M 存储器 8200 端口正忙于处理传送请求。 8280 读取模块时否定确认。检查 PORT 参数处的输入。这种情况的可能原因是 PROFIBUS 或 PROFINET 分布式 I/O 模块断开,可由电源中断或拉动模块引起。 8281 写入模块时否定确认。检查 PORT 参数处的输入。这种情况的可能原因是 PROFIBUS 或 PROFINET 分布式 I/O 模块断开,可由电源中断或拉动模块引起。 表格 13-84 Modbus_Master 执行条件代码(Modbus 协议错误)1 STATUS (W#16#) 从站的响应代码 Modbus 协议错误 8380 - CRC 错误 8381 01 不支持此功能代码 8382 03 数据长度错误 8383 02 数据地址错误或地址超出 DATA_PTR 区的有效范围Modbus 协议错误 8384 大于 03 数据值错误 8385 03 不支持此数据诊断代码值(功能代码 08) 8386 - 响应中的功能代码与请求中的代码不匹配。 8387 - 响应的从站错误 8388 - 从站对写请求的响应不正确。从站返回的写请求与主站实 际发送的写请求不匹配。 1 除了上述列出的 Modbus_Master 错误,还可能返回底层 PtP 通信指令的错误。 说明 设置 Profibus 通信的*大记录长度 在使用 CM1243-5 Profibus 主站模块控制使用 RS232、RS422 或 RS485 点对点模块的 ET 200SP 或 ET 200MP Profibus 设备时,需要按如下规定将“max_record_len”数据块变量明 确设置为 240: 运行 Modbus_Comm_Load 后,在背景数据块的 Send_P2P 部分(例如, "Modbus_Master_DB".Send_P2P.max_record_len)将“max_record_len”设为 240。 只有 Profibus 通信需要明确分配 max_record_len ;Profinet 通信已经使用有效的 max_record_len 值。描述 "Modbus_Slave_DB"( MB_ADDR:=_uint_in_, NDR=>_bool_out_, DR=>_bool_out_, ERROR=>_bool_out_, STATUS=>_word_out_, MB_HOLD_REG:=_variant_inout_); Modbus_Slave 指令允许用户程序用以下 两种方式进行通信: • 作为 Modbus RTU 从站通过 CM (RS485 或 RS232)和 CB (RS485) 上 的 PtP 端口进行通信 • 作为 Modbus RTU 从站通过 Modbus RTU SIPLUS I/O 选项进行通信: – 安装 ET 200MP S7-1500CM PtP (RS485/422 或 RS232)。 – 安装 ET 200SP S7-1500 CM PtP (RS485/422 或 RS232)。 远程 Modbus RTU 主站发出请求时,用户 程序会通过执行 Modbus_Slave 进行响 应。STEP 7 在插入指令时自动创建背景数 据块。在为 Modbus_Comm_Load 指令指 定 MB_DB 参数时使用此 Modbus_Slave_DB 名称。 表格 13-86 参数的数据类型 参数和类型 数据类型 描述 MB_ADDR IN V1.0: USInt V2.0: UInt Modbus 从站的站地址: 标准寻址范围(1 到 247) 扩展寻址范围(0 到 65535) MB_HOLD_REG IN_OUT Variant 指向 Modbus 保持寄存器 DB 的指针:Modbus 保持寄存器 可以是 M 存储器或数据块。 NDR OUT Bool 新数据就绪: • 0 – 无新数据 • 1 – 表示 Modbus 主站已写入新数据