西门子供应S7-200经销商
PLC是什么意思?相信很多人处于大概知道是什么,但是又无法准确说出的阶段,作为专注于为企业提供数据采集和设备控制解决方案的众诚工业,今天和大家探讨一下。
而众诚工业还能根据用户需求,设计PLC控制程序,为客户提供PLC编程和上位机软件的定制化开发技术服务,满足用户的多种需求,比如,自主研发的洁净空调智能控制系统和通风排风智能控制系统就配置PLC,不仅具有报警和定时控制功能,还兼具可扩展性和兼容性,系统能被第三方系统集成。
以上PLC的基本介绍,相信大家对PLC也有一个初步的了解。PLC的型号、品牌不同,对应着其结构形式、性能、编程方式等等都有所差异,价格也各不相同,在挑选时候,建议先要明确自己的应用需求,比如具体的应用场景,希望实现的运动和控制功能,已经特殊的控制要求,这些将决定了PLC的选型和搭配组合。
简单地说,PLC就是一种小型的计算机,和我们常用的计算机不同的是,PLC是设备之间通过数字信号进行互动,而我们常用的计算机,是人和计算机的互动。
控制是PLC的核心功能,其控制类型主要分为以下几种1、开关量的开环控制。这是PLC*基本的控制功能,它能凭借其强大的逻辑运算能力,取代传统继电接触器的控制系统;
2、数据采集与监控。这是PLC非常必要的功能,否则它将无法完成现场控制;
3、数字量智能控制。PLC具有实现接收和输出高速脉冲的功能,近年来先进的PLC还开发了数字控制模块和新型运动单元模块,让工程师更加轻松地通过PLC实现数字量控制;
4、PLC能通过模拟量采集和调节温度、压力、速度等参数。
正因为PLC功能强大,且具有设计方便、重量体积小、能耗低、改造工作量小、通用性强、维护方便等易学易用的特点,深受工程师的欢迎,因此应用非常广泛,钢铁、石油、化工、纺织、交通、机械制造等等行业都能看到它的身影。
? 不确认消息:需要负责错误恢复和安全性的应用程序
? 由于使用 SEND/RECEIVE 编程接口的缘故,需要编程来进行数据管理
UDP 支持广播通信。要使用广播,必须组态 ADDR 组态的 IP 地址部分。例如:IP 地址为
192.168.2.10、子网掩码为 255.255.255.0 的 CPU 将使用广播地址 192.168.2.255。
11.5.8.19 TUSEND 和 TURCV
以下指令控制 UDP 通信过程:
? TCON 在客户机与服务器 (CPU) PC 之间建立通信连接。
? TUSEND 和 TURCV 发送和接收数据。
? TDISCON 断开客户机与服务器之间的通信。
有关 TCON 和 TDISCON 通信指令的更多信息,请参见“TCP 和 ISO-on-TCP”部分中的 TCON、
TDISCON、TSEND 和 TRCV (页 662)。
表格 11-46 TUSEND 和 TURCV 指令
LAD/FBD SCL 说明
"TUSEND_DB"(
req:=_bool_in_,
ID:=_word_in_,
len:=_udint_in_,
done=>_bool_out_,
busy=>_bool_out_,
error=>_bool_out_,
status=>_word_out_,
data:=_variant_inout_);
TUSEND 指令通过 UDP 将数据发送到参数
ADDR 指定的远程伙伴。
要启动用于发送数据的作业,请调用 REQ = 1
的 TUSEND 指令。
"TURCV_DB"(
en_r:=_bool_in_,
ID:=_word_in_,
len:=_udint_in_,
ndr=>_bool_out_,
busy=>_bool_out_,
error=>_bool_out_,
status=>_word_out_,
rcvd_len=>_udint_out_,
data:=_variant_inout_);
TURCV 指令通过 UDP 接收数据。参数 ADDR
显示发送方地址。TURCV 成功完成后,参数
ADDR 将包含远程伙伴(发送方)的地址。
TURCV 不支持特殊模式。
要启动用于接收数据的作业,请调用 EN_R = 1
的 TURCV 指令。
TCON、TDISCON、TUSEND 和 TURCV 异步运行,即,作业处理需要多次执行指令来完成。
表格 11-47 TUSEND 和 TURCV 参数的数据类型
参数和类型 数据类型 说明
REQ
(TUSEND)
IN Bool 在上升沿启动发送作业。传送通过 DATA 和 LEN 指定的区
域中的数据。
EN_R
(TURCV)
IN Bool ? 0:CPU 无法接收。
? 1:允许 CPU 进行接收。TURCV 指令准备接收,并处理
接收作业。
ID IN Word 引用用户程序与操作系统通信层之间的相关连接。ID 必须
与本地连接描述中的相关参数 ID 相同。
值范围:W#16#0001 到 W#16#0FFF。
LEN IN UDInt 要发送 (TUSEND) 或接收 (TURCV) 的字节数。
? 默认 = 0。DATA 参数确定要发送或接收的数据长度。
? 否则为值范围:1 到 1472
DONE
(TUSEND)
IN Bool 状态参数 DONE (TUSEND):
? 0:作业尚未开始或仍在运行。
? 1:作业已完成且未出错。
NDR
(TURCV)
OUT Bool 状态参数 NDR (TURCV):
? 0:作业尚未开始或仍在运行。
? 1:作业已成功完成。
BUSY OUT Bool ? 1:作业尚未完成。无法触发新作业。
? 0:作业已完成。
ERROR OUT Bool 状态参数,可具有以下值:
? 0:无错误
? 1:处理期间出错。STATUS 提供错误类型的详细信息。
STATUS OUT Word 包括错误信息的状态信息。(请参见下表中的错误和状态
条件代码。)
RCVD_LEN OUT UDInt 接收的字节数 (TURCV)说明
DATA IN_OUT Variant 发送区 (TUSEND) 或接收区 (TURCV) 的地址:
? 过程映像输入表
? 过程映像输出表
? 存储器位
? 数据块
ADDR IN_OUT Variant 指向接收方(对于 TUSEND)或发送方(对于 TURCV)的
地址的指针(例如,P#DB100.DBX0.0 byte 8)。该指针
可指向任何存储区。
需要 8 字节的结构,具体如下:
? 前 4 个字节包含远程 IP 地址。
? 接下来的 2 个字节指定远程端口号。
? *后 2 个字节保留。
作业状态由输出参数 BUSY 和 STATUS 指示。STATUS 与以异步方式工作的指令的 RET_VAL 输
出参数一致。
下表给出了 BUSY、DONE (TUSEND)、NDR (TURCV) 和 ERROR 之间的关系。通过该表格,用
户可以确定指令(TUSEND 或 TURCV)的当前状态或者发送(传送)/接收过程完成的时间。
表格 11-48 BUSY、DONE (TUSEND)/NDR (TURCV) 和 ERROR 参数的状态
BUSY DONE / NDR ERROR 说明
TRUE 不相关 不相关 正在处理作业。
FALSE TRUE FALSE 作业已成功完成。
FALSE FALSE TRUE 作业因错结束。出错原因可在 STATUS 参数中找到。
FALSE FALSE FALSE 未给该指令分配(新)作业。
1 由于指令以异步方式工作:对于 TUSEND,在 DONE 参数值或 ERROR 参数值为 TRUE 前,必须保持发送方区域中
的数据一致。对于 TURCV,仅当 NDR 参数值为 TRUE 时,接收方区域中的数据才一致。
表格 11-49 TUSEND 和 TURCV 指令的 ERROR 和 STATUS 条件代码
ERROR STATUS 说明
0 0000 ? 发送作业无错完成 (TUSEND)。
? 接受了新数据。在 RCVD_LEN 中显示已接收数据的当前长度 (TURCV)。
0 7000 ? 无激活的作业处理 (TUSEND)
? 块未准备好接收 (TURCV)
说明
0 7001 ? 启动作业处理,正在发送数据 (TUSEND):在执行此处理期间,操作系统访
问 DATA 发送区中的数据。
? 块准备接收,接收作业已激活 (TURCV)。
0 7002 ? 后续指令执行(与 REQ 无关),正在处理作业 (TUSEND):在执行此处理期
间,操作系统访问 DATA 发送区中的数据。
? 后续指令执行,正在处理作业:在执行此处理期间,TURCV 指令将数据写
入接收区。因此,错误可能导致接收区中的数据不一致。
1 8085 LEN 参数值大于*大允许值,其值为 0 (TUSEND),或者自第一次执行指令
(TURCV) 以来更改了 LEN 或 DATA 参数的值。
1 8086 ID 参数不在允许的地址范围内。
1 8088 ? LEN 参数大于 DATA 中指定的存储区 (TUSEND) 或接收区 (TURCV)。
? 接收区过小 (TURCV)。
1 8089 ADDR 参数未指向数据块。
1 80A1 通信错误:
? 尚未建立用户程序和操作系统通信层之间的指定连接。
? 当前正在终止用户程序和操作系统通信层之间的指定连接。无法通过该连接
执行传送 (TUSEND) 或接收作业 (TURCV)。
? 正在重新初始化接口。
1 80A4 远程连接端点的 IP 地址无效;可能与本地 IP 地址匹配 (TUSEND)。
1 80B3 ? 设置的协议(连接说明中的 connection_type 参数)不是 UDP。请使用
TSEND 或 TRCV 指令。
? ADDR 参数:端口号的设置无效 (TUSEND)
1 80C3 ? 具有该 ID 的块正在一个具有不同优先级的组中处理。
? 内部缺乏资源
1 80C4 临时通信错误:
? 此时无法建立用户程序和操作系统通信层之间的连接 (TUSEND)。
? 接口正在接收新参数 (TUSEND)。
? 当前正在重新启动连接 (TURCV)。
以太网连接协议
每个 CPU 都集成了一个支持标准 PROFINET 通信的 PROFINET 端口。TUSEND 和 TURCV 指令
支持 UDP 以太网协议。
更多相关信息,请参见“设备配置”一章中的“组态本地/伙伴连接路径” (页 609)。? *多四个 NTP 服务器的 IP 地址
说明
位于“以太网地址”(Ethernet address) 页面的 CPU“属性”(Properties) 的“在设备上直接设
置 IP 地址” (页 735)(IP address is set directly at the device) 单选按钮允许在下载程序
之后在线或使用“T_CONFIG”指令更改 IP 地址。
位于“以太网地址”(Ethernet address) 页面的 CPU“属性”(Properties) 的“在设备上直接设
置 PROFINET 设备名称” (页 737)(PROFINET device name is set directly at the device) 单
选按钮允许在下载程序之后在线或使用“T_CONFIG”指令更改 PROFINET 设备名称。
位于“时间同步”(Time synchronization) 页面的 CPU“属性”(Properties) 的“通过 NTP 服
务器启用时间同步” (页 738)(Enable time synchronization via NTP serve) 框允许更改
*多 4 个 NTP 服务器的 IP 地址。
说明
不能一次执行多个 T_ConFIG 指令。
说明
可以**性或临时性更改 IP 地址或 CPU 站名称。只能临时性更改 NTP 服务器的 IP 地址。
? **性更改表示该更改具有保持性,意味着在电源故障时更改仍然存在。
? 临时更改表示更改具有易失性并且会在停电后返回原始值。
表格 11-50 T_ConFIG 指令
LAD/FBD SCL 说明
"T_CONFIG_DB"(
Req:=_bool_in_,
Interface:=_uint_in_,
Conf_data:=_variant_in_,
Done=>_bool_out_,
Busy=>_bool_out_,
Error=>_bool_out_,
Status=>_dword_out_,
Err_Loc=>_dword_out_);
在用户程序中使用 T_ConFIG 指令可更改 IP 组
态参数。
T_ConFIG 异步运行。执行作业时需要多次调
用指令。
表格 11-51 参数的 T_ConFIG 数据类型
参数和类型 数据类型 说明
REQ Input Bool 在上升沿时启动该指令。
说明
CONF_DATA Input Variant 参考组态数据结构;CONF_DATA 由*多包含 4 个系
统数据类型的结构定义(SDT)。
DONE Output Bool ? 0:作业尚未启动或仍在运行。
? 1:作业已无错执行。
BUSY Output Bool ? 0:作业已完成。
? 1:作业尚未完成。无法触发新作业。
ERROR Output Bool 状态参数,可具有以下值:
? 0:无错误
? 1:处理期间出错。STATUS 提供错误类型的详细
信息。
STATUS Output DWord 包括错误信息的状态信息。(请参见下表中的错误和
状态条件代码。)
ERR_LOC Output DWord 故障位置(CONF_DATA 结构中的 ID 字段和子字段位
置)
IP 组态信息与上面所述参数 CONF_DATA 中的 Variant 指针一起存储在 CONF_DATA 数据块中。
T_ConFIG 指令的成功执行以 IP 组态数据传送到网络接口宣告结束。
指令“T_CONFIG”的状态和错误消息通过参数“STATUS”和“ERR_LOC”输出。
? 错误原因通过参数 STATUS 输出。
? 错误位置通过参数 ERR_LOC 输出。提供有下列选项:
– 16#0000_0000:无错误或指令调用错误(例如,指令参数赋值错误或 PROFINET 接
口通信错误)。
– 16#0001_0000:系统数据类型 IF_CONF_HEADER 的参数中出现的组态数据错误。
– 16#0001_000x:系统数据类型 IF_CONF_V4 或 IF_CONF_NOS 或 IF_CONF_NTP 的组
态数据存在错误(x 为 T_ConFIG 结构中错误子块的位置)。例如,如果 T_ConFIG 结
构中包含一个指定 IP 地址的子块和一个指定站名称的子块,且错误位于指定站名称的
子块内,则 ERR_LOC 的值为 0001_0002。)
下表显示了参数 STATUS 和 ERR_LOC 的可能取值:
STATUS* ERR_LOC* 说明
0000_000
0
0000_0000 订单处理成功完成。
0070_000
0
0000_0000 未激活任何作业处理。
指令调用错误:
参数 Interface 中的硬件 ID 无法寻址 PROFINET 接口。
C080_870
0
0000_0000 指令调用错误:
参数 CONF_DATA 中的数据块的长度不正确。
C080_880
0
0001_0000 系统数据类型 IF_CONF_HEADER 出错:
参数 FieldType 的值无效。FieldType 取值为“0”。
C080_890
0
0001_0000 系统数据类型 IF_CONF_HEADER 出错:
参数 FieldId 含有无效值或多次使用。FieldId 取值为“0”。
C080_8A0
0
0001_0000 系统数据类型 IF_CONF_HEADER 出错:
参数 SubfieldCount 中的数量不正确。输入所用系统数据类型 IF_CONF_V4、
IF_CONF_NOS 或 IF_CONF_NTP 的正确数量。
C080_8B0
0
0001_000x 系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
参数 Id 的值无效。IF_CONF_V4 为“30”;IF_CONF_NOS 为“40”;IF_CONF_NTP 为
“17”。
C080_8C0
0
0001_000x 系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
所使用的系统数据类型不正确,订单错误或多次使用一个系统数据类型。
C080_8D0
0
0001_000x 系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
参数 Length 的值不正确或无效。
C080_8E0
0
0001_000x 系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
参数 Mode 的值不正确或无效。
? 对于 IF_CONF_V4 和 IF_CONF_NOS , 的值只能为“1”(**)或“2”(临时)。
? 对于 IF_CONF_NTP,值只能为“2”(临时)。系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
不能应用组态数据。可能的原因:
? 对于 IF_CONF_V4:在硬件配置中,“在设备上设置 IP 地址”(Set IP address on
the device) 设置未选中。
? 对于 IF_CONF_NOS:在硬件配置中,“在设备上设置 PROFINET 设备名称”(Set
PROFINET device name on the device) 设置未选中。
? 对于 IF_CONF_NTP:在硬件配置中,“通过 NTP 服务器启用时间同步”(Enable
time synchronization via NTP server) 设置未选择,而且 NTP 服务器的 IP 地址未
设置。
C080_940
0
0001_000x 系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
参数值未定义或无效。
C080_950
0
0001_000x 系统数据类型 IF_CONF_V4、 IF_CONF_NOS 或 IF_CONF_NTP 中存在错误:
两个参数的取值不一致。
C080_C20
0
0000_0000 指令调用错误:
无法传送组态数据。可能的原因:无法访问 PROFINET 接口。
C080_C30
0
0000_0000 指令调用错误:
资源不足(例如,使用不同参数多次调用“T_CONFIG”)。CONF_DB 的组态数据由一个包含字段头 (IF_CONF_Header) 的字段和多个子字段构成。
IF_CONF_Header 提供以下元素:
? field@type@id(数据类型 UInt):零
? field@id(数据类型 UInt):零
? subfield@cnt(数据类型 UInt):子字段数
各子字段又由字段头(subfield@type@id、subfield@length、subfield@mode)和子字段特定
的参数组成。各子字段必须由偶数个字节组成。subfield@mode 可以支持 1 或 2 的值。请参
见下表:
说明
目前仅允许一个字段 (IF_CONF_Header)。其参数 field@type@id 和 field@id 的值必须为零。其
它具有不同 field@type@id 和 field@id 值的字段用于将来扩展。
表格 11-52 支持的子字段
subfield@tZpe@Jd 数据类型 说明
30 IF_CONF_V4 IP 参数:IP 地址、子网掩码、路由器地址
40 IF_CONF_NOS PROFINET IO 设备名称 (Name of station)
17 IF_CONF_NTP 网络时间协议 (NTP)