IO-Link是独立于任何现场总线,适用于工业控制最底层的简单传感器和执行器的工业通信接口。IO-Link系统包含IO-Link设备(如传感器、执行器)、IO-Link主站和标准传感器用电缆,系统结构如图1所示。例如,当一个兼容EtherNet/IP的远程IO模块作主站时,除了标准的I/O信号,该模块通过脉冲调制过程发送和接收配置数据、诊断数据或增强的过程数据,然后打包到EtherNet/IP数据报文中,最后传送给网络主控站,通常是一台PLC。上述应用中,远程I/O与IO-Link设备的连接与传统离散设备保持相同,IO-Link的优势主要在于更大的信息交换能力,这是以前标准I/O设备无法实现的。IO -Link的另一个好处是不依赖于任何现场总线,通过任何遵守IO-Link协议的I/O模块(包括本地I/O 和远程I/O),IO-Link传感器或执行器便可被集成到任何现场总线系统中。
图1 IO-Link系统结构
为了对IO-Link系统结构、通信机制以及开发应用做进一步研究,可设计开发IO-Link从机工具包,包括IO-Link通用开发模块、IO-Link分析工具以及IO-Link从机协议栈。IO-Link通用开发模块是进行该项工作的基础,也是IO-Link主站与设备信号间的桥梁。IO-Link分析工具可以帮助开发人员和测试人员分析通讯细节,从而找出并解决问题。IO-Link从机协议栈是一个固件库,它提供硬件抽象层和应用程序接口,开发者可以利用它方便快速地在各种微处理器平台上开发IO-Link从机产品。本文研究的IO-Link从站只针对数字(按键)信号输入和数字信号输出(指示灯),IO-Link通用开发模块的设计只需在此基础上进行扩展,使之具备处理模拟信号的能力。
1 系统结构
图2是IO-Link从机工具包及演示系统的结构示意图。
图2 IO-Link从机工具包及演示系统的结构图
本文所使用的IO-Link主站模块USB IO-Link Master可将IO-Link设备与PC机相连,这样可通过IO-Link Device Tool软件配置并测试IO-Link设备或演示设备功能。IO-Link设备必须通过一个设备描述文件(IODD文件)来描述,它包括一组XML文本文件和PNG 图形文件,这些文件包含设备的识别、通信特点、参数、过程数据和诊断数据的信息。图2中椭圆虚线内的部分是IO-Link三线电缆,L+/I—是24 V 直流电源,C/Q为信号线,用来传输过程数据、诊断数据、配置数据等。IO-Link通用开发模块主要由数据收发器和微处理器构成,它可对传感器的输入信号进行处理并将信息传递给IO-Link主站,也可接收并处理来自主站的数据信息,传递给执行器。IO-Link分析工具可以帮助开发人员查看、记录、分析数据,了解通讯细节,该部分设计本文不作论述。
2 IO-Link通讯模式简介
IO-Link设备可以工作在SIO模式(标准I/O模式)或IO-Link模式(通讯模式)。上电后,设备总是工作在SIO模式。主站的端口有不同的配置方式,如果配置为SIO 模式,主站把该端口视为标准数字输入,如果配置为通讯模式,主站会自动识别可通讯的装置,进行通讯。
2.1 数据类型
IO-Link通讯的3种基本数据类型为:周期性数据(或过程数据PD)、非周期性数据(或服务数据SD)、事件(Event)。
设备的过程数据(PD)以一个数据帧的形式周期性地传输,而服务数据(SD)只有在主站发出请求后才会进行交换,图3为典型的IO-Link报文结构。当事件(Event)发生时,设备的“事件标志”置位,主站检测到该置位后读出报告的事件(读取过程中不能交换服务数据),于是,污染、过热、短路等事件或设备状态便可通过主站传送给PLC或可视化的软件。
图3 IO-Link报文结构
2.2 参数数据交换
由于服务数据(SD)必须经由PLC请求才能传送,于是定义了SPDU(服务协议数据单元)。在主站中,读写服务的请求编写到SPDU并通过IO-Link接口传送给设备。
SPDU一般结构如图4所示,其排列顺序与传输顺序一致。SPDU中的各元素可根据服务种类采取不同的形式。SPDU允许访问希望进行传输的数据对象,Index用于指定远程IO-Link设备上被请求的数据对象的地址。IO-Link中有一个名词叫直接参数页(direct parameter page),其中存放了最小周期时间、供应商ID、主站命令等参数信息,直接参数页中可访问的数据对象可以有选择地通过SPDU来提供。
图4 SPDU 一般结构
3 IO-Link从站硬件设计
IO-Link从站的系统结构如图5所示,主要包括数据收发器HMT7742、微控制器AT-mega328P、信号输入输出通道、电压电流监测模块以及过流保护模块等。
图5 IO-Link从站结构图
HMT7742是一款IO-Link从机收发器芯片,是外接传感器或执行器的MCU与支持IO-Link通信的24 V信号线间的桥梁,当IO-Link设备与主站相连时,主站会进行通信初始化并与MCU交换数据,HMT7742则充当通信的物理层。
由于MCU 的输出端口控制的3盏指示灯(额定电压为24 V)是由IO-Link电源线供电的,因此需监测电源线上的电流,以便在电流超过某设定好的阈值后触发适当的更正措施,如将指示灯从IO-Link电源线上切除。电流监测模块使用的是INA194电流检测放大器,作为一款高测电流检测器,INA194直接连接至电源,可检测所有的下行故障,拥有非常高的共模抑制比以及较大的带宽和响应速度,可将感应电阻上的电压放大5O倍输出到MCU 内部电压比较器的正向输入端AIN0,当AIN0的电压值超过反向输入端设置的阈值时,控制PB0输出低电平,即可将指示灯LAMP从IO-Link电源线上切除,实现过流保护功能。该部分电路如图6所示。
图6 电流监测与过流保护电路
4 IO-Link从站软件设计
软件设计基于IO-Link设备通信协议栈,IO-Link设备通信协议栈提供通用应用程序接口(API函数),这为IO-Link从站开发模块的设计提供了便利。
软件设计主要包括初始化模块和一个与IO-Link通信相关的主循环模块,主程序流程如图7所示。
图7 主流程图
在图8所示的初始化程序中,栈初始化、SP-DU数值初始化、直接参数页面初始化是通过分别调用API函数实现的。
图8 初始化程厅流程图
图9为主循环流程图,每隔1 ms执行一次主循环,每过255 ms触发一次看门狗。在运行了IO-Link从机协议栈以后,就可以检测主站发送的有效输出过程数据并将它传递给应用模块(3盏指示灯),并根据按键的状态设置输入过程数据,并将数据传递给主站。另外,若发生了对直接参数页面的写访问或有SPDU标识符置位,都要运行相应的处理程序。
图9 主循环流程图
5 实验结果及结论
实验构建了图2所示的系统,并通过IO-Link Device Tool软件测试系统功能,图10即为显示过程数据和参数的界面。程序中设置过程数据为一个字节,格式如图l1所示。由图l1可知,输入过程数据的Bit7为故障诊断位,当IO-Link电源线上的电压和电流均正常时,该位为0,否则置1;Bit5至Bit0分别表示6个按键的状态。输出过程数据的Bit2至Bit0分别代表3盏指示灯的状态。
图10 过程数据和参数显示界面
图11 过程数据的格式
当电压和电流正常时,如果没有按键按下,输入过程数据为63(0011 1111)(见图10 a),如果只有按键1被按下,输入过程数据为62(00111110),以此类推。当电压或电流不在规定的范围内,如果没有按键按下,输入过程数据为一65(1011 1111)。若进行图10b所示的操作,可将获取的按键状态取反后送给主站。这样,当无按键按下且电压电流正常时,输入过程数据为0(00000000),若电压或电流不在规定的范围内,输入过程数据为一128(1000 0000)。
过程输出数据的Bit2至Bit0可分别用来控制3盏灯的状态,若电压电流正常,当输出过程数据为1(0000 0001)时,只有指示灯1亮,当输出过程数据为27(0000 0111)时,3盏灯全亮。以此类推。但是当电流超过了一定范围,硬件电路将实现过流保护,将指示灯从IO-Link电源线上切除,此时输出过程数据将不能控制指示灯的状态,直到排除故障重新上电。
IO-Link从机工具包对于IO-Link系统结构、通信机制以及开发应用的研究有着重要意义。本文设计的IO-Link从站是IO-Link主站与设备信号间的桥梁,也是IO-Link从机工具包的基础和核心。本文构建的基于IO-Link从站的演示系统形象地展示了IO-Link通信的特点与优势,对于了解和深入研究IO-Link通信系统有着重要的意义。
IO-Link是独立于任何现场总线,适用于工业控制最底层的简单传感器和执行器的工业通信接口。IO-Link系统包含IO-Link设备(如传感器、执行器)、IO-Link主站和标准传感器用电缆,系统结构如图1所示。例如,当一个兼容EtherNet/IP的远程IO模块作主站时,除了标准的I/O信号,该模块通过脉冲调制过程发送和接收配置数据、诊断数据或增强的过程数据,然后打包到EtherNet/IP数据报文中,最后传送给网络主控站,通常是一台PLC。上述应用中,远程I/O与IO-Link设备的连接与传统离散设备保持相同,IO-Link的优势主要在于更大的信息交换能力,这是以前标准I/O设备无法实现的。IO -Link的另一个好处是不依赖于任何现场总线,通过任何遵守IO-Link协议的I/O模块(包括本地I/O 和远程I/O),IO-Link传感器或执行器便可被集成到任何现场总线系统中。
图1 IO-Link系统结构
为了对IO-Link系统结构、通信机制以及开发应用做进一步研究,可设计开发IO-Link从机工具包,包括IO-Link通用开发模块、IO-Link分析工具以及IO-Link从机协议栈。IO-Link通用开发模块是进行该项工作的基础,也是IO-Link主站与设备信号间的桥梁。IO-Link分析工具可以帮助开发人员和测试人员分析通讯细节,从而找出并解决问题。IO-Link从机协议栈是一个固件库,它提供硬件抽象层和应用程序接口,开发者可以利用它方便快速地在各种微处理器平台上开发IO-Link从机产品。本文研究的IO-Link从站只针对数字(按键)信号输入和数字信号输出(指示灯),IO-Link通用开发模块的设计只需在此基础上进行扩展,使之具备处理模拟信号的能力。
1 系统结构
图2是IO-Link从机工具包及演示系统的结构示意图。
图2 IO-Link从机工具包及演示系统的结构图
本文所使用的IO-Link主站模块USB IO-Link Master可将IO-Link设备与PC机相连,这样可通过IO-Link Device Tool软件配置并测试IO-Link设备或演示设备功能。IO-Link设备必须通过一个设备描述文件(IODD文件)来描述,它包括一组XML文本文件和PNG 图形文件,这些文件包含设备的识别、通信特点、参数、过程数据和诊断数据的信息。图2中椭圆虚线内的部分是IO-Link三线电缆,L+/I—是24 V 直流电源,C/Q为信号线,用来传输过程数据、诊断数据、配置数据等。IO-Link通用开发模块主要由数据收发器和微处理器构成,它可对传感器的输入信号进行处理并将信息传递给IO-Link主站,也可接收并处理来自主站的数据信息,传递给执行器。IO-Link分析工具可以帮助开发人员查看、记录、分析数据,了解通讯细节,该部分设计本文不作论述。
2 IO-Link通讯模式简介
IO-Link设备可以工作在SIO模式(标准I/O模式)或IO-Link模式(通讯模式)。上电后,设备总是工作在SIO模式。主站的端口有不同的配置方式,如果配置为SIO 模式,主站把该端口视为标准数字输入,如果配置为通讯模式,主站会自动识别可通讯的装置,进行通讯。
2.1 数据类型
IO-Link通讯的3种基本数据类型为:周期性数据(或过程数据PD)、非周期性数据(或服务数据SD)、事件(Event)。
设备的过程数据(PD)以一个数据帧的形式周期性地传输,而服务数据(SD)只有在主站发出请求后才会进行交换,图3为典型的IO-Link报文结构。当事件(Event)发生时,设备的“事件标志”置位,主站检测到该置位后读出报告的事件(读取过程中不能交换服务数据),于是,污染、过热、短路等事件或设备状态便可通过主站传送给PLC或可视化的软件。
图3 IO-Link报文结构
2.2 参数数据交换
由于服务数据(SD)必须经由PLC请求才能传送,于是定义了SPDU(服务协议数据单元)。在主站中,读写服务的请求编写到SPDU并通过IO-Link接口传送给设备。
SPDU一般结构如图4所示,其排列顺序与传输顺序一致。SPDU中的各元素可根据服务种类采取不同的形式。SPDU允许访问希望进行传输的数据对象,Index用于指定远程IO-Link设备上被请求的数据对象的地址。IO-Link中有一个名词叫直接参数页(direct parameter page),其中存放了最小周期时间、供应商ID、主站命令等参数信息,直接参数页中可访问的数据对象可以有选择地通过SPDU来提供。
图4 SPDU 一般结构
3 IO-Link从站硬件设计
IO-Link从站的系统结构如图5所示,主要包括数据收发器HMT7742、微控制器AT-mega328P、信号输入输出通道、电压电流监测模块以及过流保护模块等。
图5 IO-Link从站结构图
HMT7742是一款IO-Link从机收发器芯片,是外接传感器或执行器的MCU与支持IO-Link通信的24 V信号线间的桥梁,当IO-Link设备与主站相连时,主站会进行通信初始化并与MCU交换数据,HMT7742则充当通信的物理层。
由于MCU 的输出端口控制的3盏指示灯(额定电压为24 V)是由IO-Link电源线供电的,因此需监测电源线上的电流,以便在电流超过某设定好的阈值后触发适当的更正措施,如将指示灯从IO-Link电源线上切除。电流监测模块使用的是INA194电流检测放大器,作为一款高测电流检测器,INA194直接连接至电源,可检测所有的下行故障,拥有非常高的共模抑制比以及较大的带宽和响应速度,可将感应电阻上的电压放大5O倍输出到MCU 内部电压比较器的正向输入端AIN0,当AIN0的电压值超过反向输入端设置的阈值时,控制PB0输出低电平,即可将指示灯LAMP从IO-Link电源线上切除,实现过流保护功能。该部分电路如图6所示。
图6 电流监测与过流保护电路
4 IO-Link从站软件设计
软件设计基于IO-Link设备通信协议栈,IO-Link设备通信协议栈提供通用应用程序接口(API函数),这为IO-Link从站开发模块的设计提供了便利。
软件设计主要包括初始化模块和一个与IO-Link通信相关的主循环模块,主程序流程如图7所示。
图7 主流程图
在图8所示的初始化程序中,栈初始化、SP-DU数值初始化、直接参数页面初始化是通过分别调用API函数实现的。
图8 初始化程厅流程图
图9为主循环流程图,每隔1 ms执行一次主循环,每过255 ms触发一次看门狗。在运行了IO-Link从机协议栈以后,就可以检测主站发送的有效输出过程数据并将它传递给应用模块(3盏指示灯),并根据按键的状态设置输入过程数据,并将数据传递给主站。另外,若发生了对直接参数页面的写访问或有SPDU标识符置位,都要运行相应的处理程序。
图9 主循环流程图
5 实验结果及结论
实验构建了图2所示的系统,并通过IO-Link Device Tool软件测试系统功能,图10即为显示过程数据和参数的界面。程序中设置过程数据为一个字节,格式如图l1所示。由图l1可知,输入过程数据的Bit7为故障诊断位,当IO-Link电源线上的电压和电流均正常时,该位为0,否则置1;Bit5至Bit0分别表示6个按键的状态。输出过程数据的Bit2至Bit0分别代表3盏指示灯的状态。
图10 过程数据和参数显示界面
图11 过程数据的格式
当电压和电流正常时,如果没有按键按下,输入过程数据为63(0011 1111)(见图10 a),如果只有按键1被按下,输入过程数据为62(00111110),以此类推。当电压或电流不在规定的范围内,如果没有按键按下,输入过程数据为一65(1011 1111)。若进行图10b所示的操作,可将获取的按键状态取反后送给主站。这样,当无按键按下且电压电流正常时,输入过程数据为0(00000000),若电压或电流不在规定的范围内,输入过程数据为一128(1000 0000)。
过程输出数据的Bit2至Bit0可分别用来控制3盏灯的状态,若电压电流正常,当输出过程数据为1(0000 0001)时,只有指示灯1亮,当输出过程数据为27(0000 0111)时,3盏灯全亮。以此类推。但是当电流超过了一定范围,硬件电路将实现过流保护,将指示灯从IO-Link电源线上切除,此时输出过程数据将不能控制指示灯的状态,直到排除故障重新上电。
IO-Link从机工具包对于IO-Link系统结构、通信机制以及开发应用的研究有着重要意义。本文设计的IO-Link从站是IO-Link主站与设备信号间的桥梁,也是IO-Link从机工具包的基础和核心。本文构建的基于IO-Link从站的演示系统形象地展示了IO-Link通信的特点与优势,对于了解和深入研究IO-Link通信系统有着重要的意义。
举报