西门子供应数控系统经销商
PLC是什么意思?相信很多人处于大概知道是什么,但是又无法准确说出的阶段,作为专注于为企业提供数据采集和设备控制解决方案的众诚工业,今天和大家探讨一下。
而众诚工业还能根据用户需求,设计PLC控制程序,为客户提供PLC编程和上位机软件的定制化开发技术服务,满足用户的多种需求,比如,自主研发的洁净空调智能控制系统和通风排风智能控制系统就配置PLC,不仅具有报警和定时控制功能,还兼具可扩展性和兼容性,系统能被第三方系统集成。
以上PLC的基本介绍,相信大家对PLC也有一个初步的了解。PLC的型号、品牌不同,对应着其结构形式、性能、编程方式等等都有所差异,价格也各不相同,在挑选时候,建议先要明确自己的应用需求,比如具体的应用场景,希望实现的运动和控制功能,已经特殊的控制要求,这些将决定了PLC的选型和搭配组合。
简单地说,PLC就是一种小型的计算机,和我们常用的计算机不同的是,PLC是设备之间通过数字信号进行互动,而我们常用的计算机,是人和计算机的互动。
控制是PLC的核心功能,其控制类型主要分为以下几种1、开关量的开环控制。这是PLC*基本的控制功能,它能凭借其强大的逻辑运算能力,取代传统继电接触器的控制系统;
2、数据采集与监控。这是PLC非常必要的功能,否则它将无法完成现场控制;
3、数字量智能控制。PLC具有实现接收和输出高速脉冲的功能,近年来先进的PLC还开发了数字控制模块和新型运动单元模块,让工程师更加轻松地通过PLC实现数字量控制;
4、PLC能通过模拟量采集和调节温度、压力、速度等参数。
正因为PLC功能强大,且具有设计方便、重量体积小、能耗低、改造工作量小、通用性强、维护方便等易学易用的特点,深受工程师的欢迎,因此应用非常广泛,钢铁、石油、化工、纺织、交通、机械制造等等行业都能看到它的身影。
GEOADDR 系统数据类型的结构 如果在数据块中输入“GEOADDR”作为数据类型,将自动创建结构 GEOADDR。 参数名称 数据类型 描述 GEOADDR STRUCT HWTYPE UINT 硬件类型: ? 1:IO 系统 (PROFINET/PROFIBUS) ? 2:IO 设备/DP 从站 ? 3:机架 ? 4:模块 ? 5:子模块 如果指令不支持某种硬件类型,则输出 HWTYPE“0”。 AREA UINT 区域 ID: ? 0 = CPU ? 1 = PROFINET IO ? 2 = PROFIBUS DP ? 3 = AS-i IOSYSTEM UINT PROFINET IO 系统(0 = 机架中的中央单元) STATION UINT ? 区域标识符 AREA = 0 时表示机架号(中央模块)。 ? 区域标识符 AREA > 0 时表示站号。 SLOT UINT 插槽号 SUBSLOT UINT 子模块编号。如果无子模块可用或无法插入任何子模块,则此参数的值为 “0”。 9.12 扩展指令的常见错误代码 表格 9-238 扩展指令的常见错误代码 条件代码 (W#16#....)1 说明 8x222 存储区对于输入太小条件代码 (W#16#....)1 说明 8x29 输出位赋值非法 8x30 输出区是只读 DB。 8x3A DB 不存在。 1 如果执行代码块时出现其中一个错误,则 CPU 保持在 RUN(默认)或组态为 STOP。 也可以在该代码块中使用 GetError 或 GetErorID 指令在本地处理错误(CPU 保持在 RUN 状态),并编写程序来响应错误。 2 “x”表示错误的参数编号。 参数编号从 1 开始。 9.13 文件处理 9.13.1 FileReadC:从存储卡读取文件 可使用“FileReadC”指令读取存储卡内文件的数据,然后将其写入 CPU 中的目标区域。通过 输入文件名和完整路径即可指定文件。 表格 9-239 FileReadC 指令 LAD/FBD SCL 说明 "FileReadC_SFB_DB_2"( REQ:=_bool_in_ Name:=_string_in_ Offset:=_udint_in_, Length:=_udint_in_, Done=>_bool_out_, Busy=>_bool_out_, Error=>_bool_out_, Status=>_word_out_, ResultLength=>_udint_out_, data:=_variant_inout_); 可使用“FileReadC”指令读取存 储卡内文件的数据,然后将其 写入 CPU 中的目标区域。 可使用 REQ 控制参数读取文件。输出参数 Done、Busy、Error 和 Status 用于指示作业状态。 以下规则适用于文件名和路径规范: ? 文件名长度不得超过 55 个字符。 ? 文件夹名和文件名可以使用以下字符:“0”至“9”、“a”至“z”、“A”至“Z”、“-”、“_” ? 文件名称中只能包含一个句点(“.”);句点用于分隔文件名和文件扩展名。文件名中必 须包含至少一个字符。可以不使用文件扩展名。路径名不得包含任何“..”。 ? 对于 UserFiles 文件夹,路径名不得包含子文件夹。 有效路径和文件名示例:“UserFiles/Lift16_Database.txt”、“UserFiles/ 2017-04-13_ErrorLog.bin” 通过执行“FileReadC”,用户*多可读取 16 MB 数据(16,777,216 字节),这些数据逐段读 取。数据段大小由具体设备而定,例如,S7-1500-CPU 使用 32 KB(32,768 字节)的块。如 果要读取的数据条目数量大于数据段大小,用户需要在程序中多次调用该指令。因此,为确 保一致性,用户在*后调用该指令之前不得访问读取的数据。 “Offset”和“Length”参数指定要读取的数据条目的长度。一旦读取过程完成,就可再次释放占 用的资源。 “FileReadC”为异步执行指令,可以跨多个调用执行。在参数“REQ”出现上升沿时开始进行处 理。 参数“Busy”和“Done ”用于指示作业状态。 如果执行期间出错,参数“Error”和“Status”将发出信号。 表格 9-240 参数的数据类型 参数和类型 数据类型 说明 REQ Input BOOL 控制参数请求 通过上升沿启用从存储卡读取文件的操作。 Name Input STRING 要读取的文件的名称,包括完整路径 Offset Input UDINT 读取文件前的字节偏移 Length Input UDINT 要读取的区域的长度(单位为字节) Length = 0 表示每次调用可读取数据条目的*大数量(对于 S7-1200-CPU,为 8 KB 或“Data”参数指定的大小) Done Output BOOL 1:指令已成功执行, 所读取的信息已传送到“Data”参数中。 Busy Output BOOL 状态参数 ? 0:指令已执行完成或尚未开始执行。 ? 1:指令的执行尚未完成。 Error Output BOOL 状态参数 ? 0:无错误。 ? 1:指令执行期间出现错误。详细信息将在“Status”参数中 输出。数据类型 说明 Status Output WORD 错误代码 ResultLength Output UDINT 读取的数据的长度(单位为字节) Data InOut VARIANT 所读取数据的目标区域 允许的数据类型:BYTE 和 BYTE 数组 表格 9-241 条件代码 错误代码* (W#16#...) 说明 0 无错误 7000 当前无作业处理 7001 启动作业处理。参数 Busy = 1,Done = 0。 7002 中间调用(与 REQ 无关):已激活指令;Busy 的值为“1”。 0081 警告:Offset + Length 大于文件的长度。数据读取从 "Offset" 到文件末尾。"Data" 包含的数据 条目的数量比请求的少;"ResultLength" 小于"Length";"Data" 中超出 "ResultLength" 的数据保 持不变。 8091 路径不存在或者无效。 8092 “Name”参数不是“STRING”数据类型、过长或包含无效字符。 8093 “Offset”参数指向超出待读取文件末尾的位置。 8094 “Length”参数大于允许的*大值。例如,对于 S7-1500 或 S7-1200 CPU,允许的*大值为 16 MB,即 16,777,216 字节。 80A1 读取错误;可能会部分覆盖“Data”参数指定的目标区域。 80B1 “Data”参数指定的目标区域小于“Length”参数中所需的长度。 80C0 该文件不可访问(受写保护或被其它进程锁定)。 80C3 已达到可同时激活的 FileReadC 指令的*大数。 8A30 目标区域受到写保护,比如写保护数据块。 8A3A “Data”指向不允许的区域,比如指向装载存储器或本地数据。 8A51 “Data”参数的数据类型无效。 8A52 Data 参数的变量不足。已写入部分源区域数据。 * 在程序编辑器中,错误代码将显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见leWriteC:在存储卡上写入文件 “FileWriteC”指令用于将 CPU 源区域的数据写入存储卡“UserFiles”文件夹中的文件。 表格 9-242 FileWriteC 指令 LAD/FBD SCL 说明 "FileWriteC_SFB_DB_1"( REQ:=_bool_in_, Name:=_string_in_, Offset:=_udint_in_, Length:=_udint_in_, Done=>_bool_out_, Busy=>_bool_out_, Error=>_bool_out_, Status=>_word_out_, ResultLength=>_udint_out_, data:=_variant_inout_); 使用“FileWriteC”指令将 CPU 源区域中 的数据写入存储卡“UserFiles”文件夹 中的文件。通过输入文件名和完整路 径即可指定该文件。如果该文件不存 在,则会由 CPU 在“UserFiles”文件夹 中创建。如果“UserFiles”文件夹不存 在,它也会由 CPU 创建;但这种情况 下不会创建子文件夹,“状态” (Status) 参数中将输出 W#16#8091。 可使用“REQ”控制参数写入文件。输出参数“Done”、“Busy”、“Error”和“Status”用于指示作业 状态。 以下规则适用于文件名和路径规范: ? 文件名长度不得超过 55 个字符。 ? 文件夹名和文件名可以使用以下字符:“0”至“9”、“a”至“z”、“A”至“Z”、“-”、“_” ? 文件名称中只能包含一个句点(“.”);句点用于分隔文件名和文件扩展名。文件名中必 须包含至少一个字符。可以不使用文件扩展名。 ? 路径名不得以“/”、“\”或“.”开头。 ? 路径名不得包含任何“..”。 ? 对于 UserFiles 文件夹,路径名不得包含子文件夹。 有效路径和文件名示例:“UserFiles/Lift16_Database.txt”、“UserFiles/ 2017-04-13_ErrorLog.bin” 通过执行“FileWriteC”,用户*多可写入 16 MB 数据(16,777,216 字节),这些数据逐段写 入。数据段大小由具体设备而定,例如,S7-1200-CPU 使用 8 KB(8192 字节)的块。如果 要写入的数据条目数量大于数据段大小,用户需要在程序中多次调用该指令。因此,为确保 一致性,用户在*后调用该指令之前不得访问写入的数据。如果可用的文件过小,则将其扩 展到所需的大小。 参数“Offset”和“Length”指定文件中要写入数据的位置。一旦写入过程完成,就可再次释放占 用的资源。FileWriteC”指令只有在满足以下条件时才会开始写操作:"Offset" + "Length" <= 16 MB “FileWriteC”为异步执行指令,可以跨多个调用执行。在参数“REQ”出现上升沿时开始进行处 理。 参数“Busy”和“Done ”用于指示作业状态。 如果执行期间出错,参数“Error”和“Status”将发出信号。 表格 9-243 参数的数据类型 参数和类型 数据类型 说明 REQ Input BOOL 控制参数请求 通过上升沿启用在存储卡上写入文件的操作。 Name Input STRING 要写入的文件的名称,包括完整路径 Offset Input UDINT 写入文件前的字节偏移 Length Input UDINT 要写入的区域的长度(单位为字节) “Length”= 0 表示写入用“Data”参数指定的整个源区域。 Done Output BOOL 1:指令已成功执行, Busy Output BOOL 状态参数 ? 0:指令已执行完成或尚未开始执行。 ? 1:指令的执行尚未完成。 Error Output BOOL 状态参数 ? 0:无错误。 ? 1:指令执行期间出现错误。详细信息将在“Status”参数中 输出。 Status Output WORD 错误代码 ResultLength Output UDINT 已写入数据的长度(单位为字节) Data InOut VARIANT 源区域 允许的数据类型:BYTE 和 BYTE 数组 表格 9-244 条件代码 错误代码* (W#16#...) 说明 0 无错误 7000 当前无作业处理 7001 启动作业处理。参数 Busy = 1,Done = 0。Name”参数不是“STRING”数据类型、过长或包含无效字符。 8093 ? “Offset”参数指向超出待写入文件末尾的位置。 ? 文件的创建被拒绝,因为“Offset”大于零。 8094 ? “Length”大于允许的*大值。例如,对于 S7-1500 CPU,允许的*大值为 16 MB,即 16,777,216 字节。 ? “Length”+“Offset”大于允许的*大值。 80A1 写错误;可能会部分覆盖存储卡上的文件中的数据。 80B1 “Data”参数指定的源区域小于“Length”参数中所需的长度。 80B3 存储卡或内部装载存储器的存储空间不足。 80B4 存储卡或文件受写保护。 80C0 该文件不可访问。 80C3 已达到可同时激活的 FileWriteC 指令的*大数。 8A24 “Data”指向不允许的区域,比如指向装载存储器或本地数据。 8A51 “Data”参数的数据类型无效。 8A52 Data 参数的变量不足。已写入部分源区域数据。 * 在程序编辑器中,错误代码将显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。 9.13.3 FileDelete:删除存储卡上的文件 使用“FileDelete”指令,可以删除存储卡上的现有文件。 表格 9-245 FileDelete 指令 LAD/FBD SCL 说明 "FileDelete_DB_1"( REQ:=_bool_in_, Name:=_string_in_, Done=>_bool_out_, Busy=>_bool_out_, Error=>_bool_out_, Status=>_word_out_) 使用“FileDelete”指令,可以删除存储 卡上的现有文件。不得打开相关文件。“Name”参数中的通配符不受支持,这意味着不允许使用诸如“UserFiles/ *.txt”和“UserFiles/?.txt”之类的名称。 只允许在“配方”(Recipes) 和“UserFiles”文件夹中使用“FileDelete”指令。这些文件夹中可能包 含子文件夹,例如“UserFiles/Test/file1.txt”。 说明 删除数据日志 不允许使用“FileDelete”指令删除“DataLog”文件夹中的文件。必须使用“DataLogDelete”指令 删除数据日志。 “FileDelete”为异步执行指令,进行处理时可能会多次调用指令。在参数“REQ”出现上升沿时 开始进行处理。 参数“Busy”和“Done ”用于指示作业状态。 如果执行期间出错,参数“Error”和“Status”将发出信号。 表格 9-246 参数的数据类型 参数和类型 数据类型 说明 REQ Input BOOL 控制参数请求 在 REQ 的上升沿启动处理操作。 Name Input STRING 待删除文件的路径和名称 Done Output BOOL 状态参数 ? 1:指令已成功执行, Busy Output BOOL 状态参数 ? 0:当前未执行指令。 ? 1:当前正在执行指令。 Error Output BOOL 状态参数 ? 0:无错误 ? 1:指令执行期间出现错误。更多详细信息,请参见 “Status”参指令已成功完成 7000 当前无作业处理 7001 启动作业处理:Busy = 1,Done = 0。 7002 中间调用(与 REQ 无关):已激活指令;Busy 的值为“1” 8090 文件已锁定,例如,文件已打开 8091 路径不存在或者无效。 8092 路径中不存在文件 80A2 写错误 80A3 文件过大(>= 2147483648 字节)且无法使用“FileDelete”删除。 80B4 存储卡受到写保护 80C3 已达到可同时激活的 FileDelete 指令的*大数“计数器操作” (页 224)中所述的基本计数器指令限于发生在低于 S7-1200 CPU 扫描周期速 率的计数事件。高速计数器 (HSC) 功能提供了发生在高于 PLC 扫描周期速率的计数脉冲。此 外,还可以组态 HSC 以测量或设置脉冲发生的频率和周期,如运动控制可以通过 HSC 读取 电机编码器信号。 要使用 HSC 功能,首先必须使用“设备组态”(Device Configuration) 画面中的 CPU“属性” (Properties) 选项卡启用并组态 HSC。初次组态 HSC,请参见“组态高速计数器” (页 570)。 在下载硬件组态后,HSC 可以计数脉冲或测量频率而不需要任何调用指令。当 HSC 处于“计 数”(Count) 或“周期”(Period) 模式,计数值在每个扫描周期的过程映像(I 存储器)中被自 动捕获并更新。如果 HSC 处于频率模式,过程映像值为频率 (Hz)。 除计数和测量外,HSC 还可以生成硬件中断事件,根据物理输入点的状态进行操作,并根据 指定的计数器事件生成一个输出脉冲。工艺指令 CTRL_HSC_EXT 允许用户程序以编程的方式 控制 HSC。CTRL_HSC_EXT 更新 HSC 参数并在执行后返回*近更新值。当 HSC 处于“计数” (DB)、“周期”(DB)、“频率”(DB) 模式时,可以使用 CTRL_HSC_EXT 指令。 说明 CTRL_HSC_EXT 指令代替了针对 V4.2 或更新版本 CPU 项目的早期 CTRL_HSC 指令。所有 CTRL_HSC 指令功能及多个附加功能可用于 CTRL_HSC_EXT 指令。早期 CTRL_HSC 指令仅能 够与早期 S7-1200 项目兼容且不应在新项目中使用。