IO-Link通信从站的设计
当IO-Link设备与主站相连时,主站会进行通信初始化并与MCU交换数据,HMT7742则充当通信的物理层。 由于MCU的输出端口控制的3盏指示灯(额定电压为24 V)是由IO-Link电源线供电的,因此需监测电源线上的电流,以便在电流超过某设定好的阈值后触发适当的更正措施,如将指示灯从IO-Link电源线上切除。电流监测模块使用的是INA194电流检测放大器,作为一款高测电流检测器,INA194直接连接至电源,可检测所有的下行故障,拥有非常高的共模抑制比以及较大的带宽和响应速度,可将感应电阻上的电压放大5O倍输出到MCU内部电压比较器的正向输入端AIN0,当AIN0的电压值超过反向输入端设置的阈值时,控制PB0输出低电平,即可将指示灯LAMP从IO-Link电源线上切除,实现过流保护功能。该部分电路如图6所示。 4 IO-Link从站软件设计 在图8所示的初始化程序中,栈初始化、SP-DU数值初始化、直接参数页面初始化是通过分别调用API函数实现的。 图9为主循环流程图,每隔1 ms执行一次主循环,每过255 ms触发一次看门狗。在运行了IO-Link从机协议栈以后,就可以检测主站发送的有效输出过程数据并将它传递给应用模块(3盏指示灯),并根据按键的状态设置输入过程数据,并将数据传递给主站。另外,若发生了对直接参数页面的写访问或有SPDU标识符置位,都要运行相应的处理程序。 5实验结果及结论 当电压和电流正常时,如果没有按键按下,输入过程数据为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通信系统有着重要的意义。
图6电流监测与过流保护电路
软件设计基于IO-Link设备通信协议栈,IO-Link设备通信协议栈提供通用应用程序接口(API函数),这为IO-Link从站开发模块的设计提供了便利。
软件设计主要包括初始化模块和一个与IO-Link通信相关的主循环模块,主程序流程如图7所示。
图7主流程图
图8初始化程厅流程图
图9主循环流程图
实验构建了图2所示的系统,并通过IO-Link Device Tool软件测试系统功能,图10即为显示过程数据和参数的界面。程序中设置过程数据为一个字节,格式如图l1所示。由图l1可知,输入过程数据的Bit7为故障诊断位,当IO-Link电源线上的电压和电流均正常时,该位为0,否则置1;Bit5至Bit0分别表示6个按键的状态。输出过程数据的Bit2至Bit0分别代表3盏指示灯的状态。
图10过程数据和参数显示界面
图11过程数据的格式