IEC 61131的通信模型由IEC 61131-5提供。PLC的通信模型示于图1-45。通信模型规定任何设备如何与作为服务器的PLC进行通信及PLC如何与任何设备进行通信,即规定PLC为其他设备提供服务和PLC应用程序能从其他设备请求服务时PLC的行为特征。
图1-45 PLC的通信模型
图中,对PLC通信服务器而言,管理控制器、与PLC对话的其他终端系统具有相同的行为特性,它们都向PLC2提出请求。
1.PLC的通信方式
根据IEC 61131-5的规定,PLC有三种通信方式。
(1)同一程序内变量的通信
程序之间直接用一个程序元素的输出连接到另一个程序元素输入的通信。图1-46显示程序A中功能块1和功能块2之间的通信。功能块1中的变量a直接连接到功能块2的变量b,实现数据通信。
【例1-82】同一程序内变量之间的通信。
图1-47是同一程序内变量的通信示例。图中,XOR函数的输入变量来自功能块TON_1实例的输出Q,而XOR的另一个输入信号来自其返回值LAMP,这是反馈变量。该程序用于产生方波信号。
图1-46 变量直接连接实现通信
图1-47 同一程序内的变量通信
(2)同一配置下变量的通信
变量的值在同一配置下不同程序之间的通信可通过该配置下的全局变量实现。图1-48显示变量a是经过配置中的全局变量X,将变量的值传送到另一程序的变量b。
图1-48 通过全局变量实现通信
【例1-83】同一资源内变量之间的通信。
在同一资源下建立两个任务,分别编写下列程序。
Tx2中的程序如图1-49a所示,Tx21中的程序如图1-49b所示。变量声明如图1-48所示,在资源中,X变量是全局变量GLOBAL类型,两个程序中的变量X是外部变量EXTERNAL类型。
图1-49 同一资源下两个程序中变量的通信
a)Tx2中的程序 b) Tx21中的程序
与例1-82不同的是,例1-83的两个程序在不同任务下,Tx2程序中增加一个START启动开关,当START闭合时,通过全局变量X的通信,在程序Tx21中的输出灯LAMP会闪烁点亮。
(3)不同配置下变量的通信
实现不同配置下变量的通信可采用两种方法,即图1-50所示的通过通信功能块的方法和图1-51所示的通过存取路径变量的方法。
图1-50 通过通信功能块实现通信
图1-51 通过存取路径变量实现通信
IEC 61131-5定义了通信功能块系列,可以通过选用合适的通信功能块实现不同配置下变量的通信。
通过存取路径变量实现通信是另一种不同配置下变量的通信方法。
通过通信功能块可以读写远程配置中的存取路径ACCESS变量。
2.通信功能块
通信功能块详见IEC 61131-5定义。这些功能块提供PLC的通信功能,诸如远程变量寻址、设备检验、轮询数据的采集、编程数据采集、参数控制、互锁控制、编程报警报告及连接管理和保护等。需注意,除远程寻址函数外,其余都是功能块。
IEC 61131-5通信标准规定PLC的通信范围。从PLC角度,规定任何设备与作为服务器的PLC如何通信、PLC如何与任何设备进行通信。
(1)应用功能
PLC利用通信子系统提供给控制系统的应用功能见表1-80。
表1-80 通过通信子系统提供给控制系统的功能
编程过程是基于逐条指令或逐个功能块的方法建立PLC应用程序的过程。
程序的测试和修改过程是在一个已有应用程序中寻找存在问题并通过更改来纠正错误(调试)的过程。
程序的检验功能是测试PLC应用程序以检验它能否在过程环境中执行设计所需功能的能力。
PLC具有使用操作员接口设备的能力。因此,操作员能够用操作员接口设备来监视和/或修改被控过程。客户机也能够应用操作员接口与操作员进行通信。
(2)PLC通信服务
IEC 61131-5规定PLC通过通信子系统向控制系统提供的服务。相应地,可将PLC应用程序设计成使用通信子系统与其他设备进行交互作用。
1)PLC子系统及其状态。PLC系统提供的状态数据包括状态信息和故障指示。某些PLC子系统见表1-81。
表1-81 PLC子系统提供的表述状态的实体
标准使用与状态有关的概念是health和state。状态也可附加实施者规定的出错诊断、运行状态、本地关键状态(例如,要求自动再启动)等属性。
PLC及其子系统的health状态由返回的三种可能值之一个且仅一个值确定。health状态见表1-82。
表1-82 health状态的语义
表中,根据序号的增加,health状态下降。
PLC的state状态由一个属性表指示。属性值可以是TRUE或FALSE。这些属性中可能有零个、一个或多个属性同时为TRUE。每个状态信息也可包含实施者特定的属性,例如,附加的出错诊断(如超过EEPROM的写周期)、附加的运行状态(如启用自动标定)或本地关键状态(如要求自动再启动)等。
PLC状态包括PLC摘要状态、I/O子系统状态、处理单元状态、电源子系统状态、存储器子系统状态和通信子系统状态等。
2)PLC摘要状态。PLC摘要状态信息的表达采用变量形式,存取路径为P_PLCSTATE,数据类型为WORD。它是其通信服务的组成部分。表1-83是PLC摘要状态。(www.xing528.com)
表1-83 PLC摘要状态
I/O子系统状态、处理单元子系统状态、电源子系统状态、存储器子系统状态和通信子系统状态等的内容与PLC摘要状态属性类似,不再多述。
3)状态的描述。PLC状态用一个变量表示时,该变量在存取路径P_PLCSTATUS的结构类型如下:
表1-84是状态信息表达为远程通信伙伴直接表达式的变量。
表1-84 状态信息的表达
表中,SC为带直接表达式子系统;SU为子元素子系统;SN为子元素名称;SS为子元素状态;SI为子元素特定;<n>是0(表示PLC摘要状态)和子系统数目P_NOS数值间的一个数值。
(3)通信功能块
通信功能块的公用输入/输出语义见表1-85。
表1-85 通信功能块的公用输入/输出语义
参数ID的COMM_CHANNEL数据类型由用户定义。VAR_i可有一个用户定义的远程寻址的REMOTE_VAR数据类型。标准IEC61131-5定义的通信功能块见表1-86。
表1-86 通信功能块
(续)
(4)通信功能块状态信号的传送
每个通信功能块都隐含如图1-52所示的状态信号发送的结构,它们没有显示在这些通信功能块的状态图中。系统初始化时,将功能块实例的输出置零(FALSE)。当功能块实例在下次调用时,功能块实例的输出NDR、DONE和ERROR才会变为TRUE。
图1-52 状态信号发送原理
当系统检测到一个通信故障,该通信功能块实例的输出ERROR和STATUS会置位,在实例的两次调用期间,ERROR输出保持为TRUE,如图1-53所示。
图1-53 ERROR和STATUS输出的时序图
由图1-53可见,只有通信功能块实例调用的同步点,NDR、DONE(图中未画出)和ERROR、STATUS输出才能被设置为新值,调用实例期间,它们的值不变化。表1-87是STATUS输出中出错代码的含义。
在一对多或一对全部的通信情况下,接收到的错误可来自一个或多个通信伙伴,STATUS显示接收到的第一个错误代码。
表1-87 STATUS输出代码和含义
通信功能块需初始化。功能块实例在第一次调用返回前,至少保留包含在所有状态图内的初始化状态INIT,在初始化状态应执行全部动作来启动通信。当没有显性地编程连接管理功能块时,应先连接到远程通信伙伴的通信通道。
3.通信功能块应用示例
(1)建立通信通道
两台PLC间建立一个通信通道,它们既可实现客户机功能,也可实现服务器功能。假设数据类型COMM_CHANNEL用于通信通道的句柄(Handle)或索引(Index)。采用结构化文本编程语言编写的程序如下:
1)1#PLC应用程序:
程序本体:
(2)传送数据
建立了通信通道的两个PLC可采用USEND和URCV功能块实现数据传送。下面程序仅说明数据的传送,并没有列出数据的来源。
1)1#PLC应用程序(发送数据,用USEND功能块):
程序本体:
USEND1(REQ:=SENDREQ,ID:=TO_PLC2,R_ID:=‘PACK1’,SD_1:=SDATA1,SD_2:=SDATA2);
/*调用USEND1实例,当SENDREQ上升沿发送数据*/
IF USEND1.ERROR THEN ALM11;END_IF; /*如果发送数据时出错,则ALM11置1*/
2)2#PLC应用程序(接收数据,用URCV功能块):
程序本体:
URCV1(EN_R:=1,ID:=TO_PLC1,R_ID:=‘PACK1’,RD_1:=RDATA1,RD_2:=RDATA2);
/*调用URCV1实例,接收来自PLC1的数据*/
IFURCV1.NDRTHENRD1:=RD_1;RD2:=RD_2;END_IF; /*接收数据赋值给RD1和RD2*/
IF URCV1.ERROR THEN ALM21; END_IF; /*如果接收数据时出错,则ALM21置1*/
(3)通信请求超时报警
一台PLC向另一台PLC发送请求,使用SEND功能块,并等待其回应,如果在5s内不能响应,则复位该请求。采用SEND功能块实例向第二台PLC发送请求:
程序本体:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。