西门子供应软件经销商
PLC是什么意思?相信很多人处于大概知道是什么,又无法准确说出的阶段,作为专注于为企业提供数据采集和设备控制解决方案的众诚工业,今天和大家探讨一下。
而众诚工业还能根据用户需求,设计PLC控制程序,为客户提供PLC编程和上位机软件的定制化开发技术服务,满足用户的多种需求,比如,自主研发的洁净空调智能控制系统和通风排风智能控制系统就配置PLC,不仅具有报警和定时控制功能,还兼具可扩展性和兼容性,系统能被第三方系统集成。
以上PLC的基本介绍,相信大家对PLC也有一个初步的了解。PLC的型号、品牌不同,对应着其结构形式、性能、编程方式等等都有所差异,价格也各不相同,在挑选时候,建议先要明确自己的应用需求,比如具体的应用场景,希望实现的运动和控制功能,已经特殊的控制要求,这些将决定了PLC的选型和搭配组合。
简单地说,PLC就是一种小型的计算机,和我们常用的计算机不同的是,PLC是设备之间通过数字信号进行互动,而我们常用的计算机,是人和计算机的互动。
控制是PLC的核心功能,其控制类型主要分为以下几种1、开关量的开环控制。这是PLC*基本的控制功能,它能凭借其强大的逻辑运算能力,取代传统继电接触器的控制系统;
2、数据采集与监控。这是PLC非常必要的功能,否则它将无法完成现场控制;
3、数字量智能控制。PLC具有实现接收和输出高速脉冲的功能,近年来先进的PLC还开发了数字控制模块和新型运动单元模块,让工程师更加轻松地通过PLC实现数字量控制;
4、PLC能通过模拟量采集和调节温度、压力、速度等参数。
正因为PLC功能强大,且具有设计方便、重量体积小、能耗低、改造工作量小、通用性强、维护方便等易学易用的特点,深受工程师的欢迎,应用非常广泛,钢铁、石油、化工、纺织、交通、机械制造等等行业都能看到它的身影。
ATTR_DB(读取数据块属性)
表格 9-224 ATTR_DB 指令
LAD/FBD SCL 描述
ret_val := ATTR_DB(
REQ:=_bool_in_,
DB_NUMBER:=_uint_in_,
DB_LENGTH=>_udint_out_,
ATTRIB=>_byte_out_);
可使用指令“ATTR_DB”获取有关 CPU 的工作
存储器中某个数据块 (DB) 的信息。该指令可
决定所选 DB 的 ATTRIB 参数中的属性集。
对于优化访问类型的数据块和仅位于装载存
储器中的数据块,其长度无法读取。此时,
参数 DB_LENGH 的值为“0”。
请勿将 ATTR_DB 应用于具有优化访问且激活
了预留存储空间的数据块。
请勿通过“ATTR_DB”指令读取运动控制的数据
块。将输出错误代码 80B2。
参数
下表列出了“ATTR_DB”指令的参数:
参数 声明 数据类型 存储区 描述
REQ Input BOOL I、Q、M、D、L 或
常量
REQ = 1:块属性读取请求
DB_NUMB
ER
Input DB_ANY I、Q、M、D、L 或
常量
要测试的 DB 的编号
RET_VAL Output INT I、Q、M、D、L 错误信息
DB_LENGT
H
Output UDINT I、Q、M、D、L • 所选数据块中包含的数据字节数。
• “0”表示优化访问的数据块和仅位于装载存储器
中的数据块描述
ATTRIB Output BYTE I、Q、M、D、L DB 属性:
• 第 0* 位 = 0:未设置属性“仅存储在装载内存
中”(only store in load memory)。
• 第 0 位* = 1:已设置属性“仅存储在装载内存
中”(only store in load memory)。
• 位 1 = 0:未设置属性“在设备中写保护数据
块”(Data block write-protected in the device)。
• 位 1 = 1:已设置属性“在设备中写保护数据
块”(Data block write-protected in the device)。
如果第 0 位 = 1,则第 2 位不受影响,并且值为 1。
• 位 2 = 0:保持性 - 如果至少一个值设置为保持
性,则数据块将被视为保持性。
• 位 2 = 1:非保持性 - 整个 DB 都不是保持性。
• 位 3 * = 0:该 DB 在装载存储器(第 0 位 = 1)
或工作存储器(第 0 位 = 0)中。
• 位 3 * = 1:装载存储器和工作存储器中均会生
成该 DB
* 将在指令“CREATE_DB(创建数据块) (页 527)”的参数中说明位 0 和位 3 之间的关系。
有关有效数据类型的更多信息,请参见“数据类型 (页 103)”。
参数 RET_VAL
错误代码*
(W#16#...)
说明
0000 未发生错误。
80A1 输入参数 DB_NUMBER 中有错误:所选的实际参数
• 等于“0”
• 大于所用 CPU 允许的*大 DB 编号。
80B1 CPU 上不存在具有指定编号的 DB。
80B2 无法使用“ATTR_DB”指令读取运动控制工艺对象的数据块。
常见错误信
息
另请参见“扩展指令的常见错误代码 (页 545)”
* 在程序编辑器中,错误代码可显示为整数或十六进制值。说明
ret_val := DELETE_DB(
REQ := _bool_in_,
DB_NUMBER := _uint_in_,
BUSY => _bool_out_);
“DELETE_DB”指令用于删除通过调用
“CREATE_DB (页527)”指令由用户程序创建的
数据块 (DB)。
如果数据块不是通过“CREATE_DB”创建的,
DELETE_DB 将通过参数 RET_VAL 返回错误代
码 W#16#80B5。
DELETE_DB 调用不会立即删除选定的数据
块,而是在执行循环 OB 后的循环控制点处删
除。
功能描述
“DELETE_DB”指令将异步执行。即,可通过多次调用执行这一指令。在 REQ = 1 时调用该指
令,将开始中断传送。
输出参数 BUSY 和输出参数 RET_VAL 的第 2 个和第 3 个字节用于显示作业状态。
当输出参数 BUSY 的值为 FALSE 时,数据块的删除即完成。
参数
下表列出了“DELETE_DB”指令的参数:
参数 声明 数据类型 存储区 说明
REQ Input BOOL I、Q、M、D、L 或常量 REQ =1:请求删除在参数 DB_NUMBER 中指
定编号的 DB
DB_NUMBER Input UINT I、Q、M、D、L 或常量 要删除的 DB 的
编号
RET_VAL Output INT I、Q、M、D、L 错误信息(请参见“RET_VAL 参数”)
BUSY Output BOOL I、Q、M、D、L BUSY= 1:该过程尚未完成。
有关有效数据类型的更多信息,请参见“数据类型 (页 103)”未发生错误。
7000 首次调用时,REQ = 0:未激活数据传送;BUSY 的值为“0”。
7001 首次调用时,REQ = 1:已触发数据传送;BUSY 的值为“1”。
7002 中间调用(与 REQ
无关):已激活数据传送;BUSY 的值为“1”。
80A1 输入参数 DB_NUMBER 中有错误:
• 参数的值为“0”。
• 参数值大于所用 CPU 允许的*大 DB 编号。
80B1 CPU 上不存在具有指定编号的 DB。
80B4 无法删除该 DB,原因是 CPU 存储卡受到写保护。
80B5 未使用“CREATE_DB”创建该 DB。
80BB 装载存储器空间不足。
80C3 由于存在临时资源限制,此时不能执行“删除 DB”功能。
常见错误信息 另请参见“扩展指令的常见错误代码 (页 545)”
* 在程序编辑器中,错误代码可显示为整数或十六进制值。
9.11 处理地址
9.11.1 GEO2LOG(根据插槽确定硬件标识符)
可使用 GEO2LOG 指令根据插槽信息确定硬件标识符。
根据在 HWTYPE 参数处定义的硬件的类型,可通过其它 GEOADDR 参数评估以下信息:
• HWTYPE = 1 时(PROFINET IO 系统):
– 仅评估 IOSYSTEM。不考虑 GEOADDR 的其它参数。
– 输出 PROFINET IO 系统的硬件标识符。
• HWTYPE = 2 时(PROFINET IO 设备):
– 评估 IOSYSTEM 和 STATION。不考虑 GEOADDR 的其它参数。
– 输出 PROFINET IO 设备的硬件标识符。
• HWTYPE = 3 时(机架):
– 仅评估 IOSYSTEM 和 STATION。不考虑 GEOADDR 的其它参数。
– 输出机架的硬件标识符。
• HWTYPE = 4 时(模块):
– 评估 IOSYSTEM、STATION,以及 SLOT。不考虑 GEOADDR 的 SUBSLOT 参数。
– 输出模块的硬件标识符。
• HWTYPE = 5 时(子模块):
– 评估 GEOADDR 的所有参数。
– 输出子模块的硬件标识符。
未评估 GEOADDR 系统数据类型的 AREA 参数。
表格 9-227 参数的数据类型
参数和类型 数据类型 说明
GEOADDR IN/OUT
or IN ?
Variant 指向 GEOADDR 系统数据类型结构的指针。GEOADDR 系统数据类
型包含可用于确定硬件 ID 的插槽信息。
更多信息,请参见“GEOADDR 系统数据类型” (页 544)。
RET_VAL OUT or
RETURN ?
Int 错误信息输出。
LADDR OUT HW_ANY 组件或模块的硬件标识符。
此编号为自动分配,存储在硬件配置的属性中有关有效数据类型的更多信息,请参见 STEP 7 在线帮助中的“有效数据类型概述”。
表格 9-228 条件代码
RET_VAL*
(W#16#...)
说明
0 未发生错误。
8091 GEOADDR 中 HWTYPE 的值无效。
8094 GEOADDR 中 IOSYSTEM 的值无效。
8095 GEOADDR 中 STATION 的值无效。
8096 GEOADDR 中 SLOT 的值无效。
8097 GEOADDR 中 SUBSLOT 的值无效。
* 在程序编辑器中,错误代码可显示为整数或十六进制值。
9.11.2 LOG2GEO(根据硬件标识符确定插槽)
使用 LOG2GEO 指令从逻辑地址中确定属于硬件标识符的地理地址(模块插槽)。
表格 9-229 LOG2GEO 指令
LAD/FBD SCL 说明
ret_val := LOG2GEO(
laddr:=_word_in_,
GEOADDR:=_variant_in_out_)
;
可使用 LOG2GEO 指令确定属于硬件
标识符的模块插槽。
LOG2GEO 指令根据硬件标识符来确定逻辑地址的地理地址:
• 使用 LADDR 参数根据硬件标识符选择逻辑地址。
• GEOADDR 中包含 LADDR 输入所给定的逻辑地址的地理地址。
说明
在 HW 类型不支持组件的情况下,将返回模块 0 的子插槽号。
如果 LADDR 输入未寻址到 HW 对象,则发生错误。数据类型 说明
LADDR IN HW_ANY IO 系统或模块的硬件标识符。此编号为自动分配,将存储在 CPU
属性或硬件配置的接口中。
RET_VAL OUT Int 指令的错误代码
GEOADDR IN_OUT Variant 指向 GEOADDR 系统数据类型的指针。GEOADDR 系统数据类型包
含插槽信息。
更多信息,请参见“GEOADDR 系统数据类型” (页 544)。
有关有效数据类型的更多信息,请参见 STEP 7 在线帮助中的“有效数据类型概述”。
表格 9-231 条件代码
RET_VAL
(W#16#...)
说明
0000 无错误
8090 LADDR 参数指定的地址无效。
* 在程序编辑器中,错误代码可显示为整数或十六进制值。
9.11.3 IO2MOD(根据 I/O 地址确定硬件标识符)
可使用 IO2MOD 指令根据(子)模块的 I/O 地址确定该模块的硬件标识符。
表格 9-232 IO2MOD 指令
LAD/FBD SCL 说明
ret_val := IO2MOD(
ADDR:=_word_in_,
LADDR:=_word_out_);
可使用 IO2MOD 指令确定属于硬件标
识符的模块插槽。
IO2MOD 指令根据(子)模块的 I/O 地址(I、Q、PI、PQ)确定该模块的硬件标识符。
在 ADDR 参数中输入 IO 地址。如果在此参数中使用了一系列 IO 地址,仅通过评估第一个地
址来确定硬件标识符。如果正确指定了第一个地址,则在 ADDR 处指定的地址长度没有任何
意义。如果使用了包含多个模块或未使用地址的地址区域,则还可以确定第一个模块的硬件
标识符。
数据类型 存储区 说明
ADDR IN or IN/OUT ? Variant I、Q、M、D、L (子)模块内的 IO 地址(I、Q、PI、
PQ)。
确保片段访问未用于参数 ADDR。如果使
用了片段访问,将会在 LADDR 参数处输
出不正确的值。
RET_VAL OUT or
RETURN ?
Int I、Q、M、D、L 指令的错误代码。
LADDR OUT HW_IO I、Q、M、D、L IO(子)模块的确定的硬件标识符(逻辑
地址)。
有关有效数据类型的更多信息,请参见 STEP 7 在线帮助中的“有效数据类型概述”。
表格 9-234 条件代码
RET_VAL*
(W#16#...)
说明
0 未发生错误。
8090 在 ADDR 参数处指定的 IO 地址未被任何硬件组件使用。
* 在程序编辑器中,错误代码可显示为整数或十六进制值。RD_ADDR(根据硬件标识符确定 IO 地址)
使用 RD_ADDR 指令获取子模块的 I/O 地址。
表格 9-235 RD_ADDR 指令
LAD/FBD SCL 说明
ret_val := RD_ADDR(
laddr:=_word_in_,
PIADDR=>_udint_out_,
PICount=>_uint_out_,
PQADDR=>_udint_out_,
PQCount=>_uint_out_,);
使用 RD_ADDR 指令获取子模块的 I/O 地
址。
RD_ADDR 指令根据子模块的硬件标识符确定输入或输出的长度和起始地址:
• 使用 LADDR 参数根据硬件标识符选择输入或输出模块。
• 以下输出参数根据其为输入模块还是输出模块加以使用:
– 如果是输入模块,则在 PIADDR 和 PICOUNT 参数中输出确定值。
– 如果是输出模块,则在 PQADDR 和 PQCOUNT 参数中输出确定值。
• PIADDR 和 PQADDR 参数各自包含模块 I/O 地址的起始地址。
• PICOUNT 和 PQCOUNT 参数各自包含输入或输出的字节数(8 位输入/输出对应 1 个字节,
16 位输入/输出对应 2 个字节)。
表格 9-236 参数的数据类型
参数和类型 数据类型 说明
LADDR IN HW_IO (子)模块的硬件标识符
RET_VAL OUT Int 指令的错误代码
PIADDR OUT UDInt 输入模块的起始地址
PICOUNT OUT UInt 输入的字节数
PQADDR OUT UDInt 输出模块的起始地址有关有效数据类型的更多信息,请参见 STEP 7 在线帮助中的“有效数据类型概述”。
表格 9-237 条件代码
RET_VAL
(W#16#...)
说明
0000 无错误
8090 LADDR 参数中的模块硬件标识符无效。
* 在程序编辑器中,错误代码可显示为整数或十六进制值。
9.11.5 GEOADDR 系统数据类型
地理地址
系统数据类型 GEOADDR 包含模块地理地址(或插槽信息)。
• PROFINET IO 的地理地址:
对于 PROFINET IO,地理地址由 PROFINET IO 系统 ID、设备号、插槽号和子模块(如果
使用子模块)组成。
• PROFIBUS DP 的地理地址:
对于 PROFIBUS DP,地理地址由 DP 主站系统的 ID、站号和插槽号组成。
可在每个模块的硬件配置中找到模块的插槽信息