基于C语言的智能断纱检测系统设计研究
2023-05-14龙秀光吴震宇
龙秀光 吴震宇
摘 要: 针对传统电子式断纱检测传感器智能化程度低的问题,提出优化探头结构以满足嵌入式系统控制需求的解决方案。优化后的探头结构搭载两组红外发射器与接收器分别用于纱线检测和系统操作模式切换,再将接收器的动作信号处理后送入MCU进行逻辑运算,最后赋给硬件功能模块相应指令进行终端操作。使用C语言开发并利用MCU的定时器、外部中断等资源,可实现纱线的实时检测、断纱报警、断纱干预停机、系统自启及操作模式切换功能。
关键词: 断纱检测; C语言; MCU; 定时器; 外部中断
中图分类号:TP23 文献标识码:A 文章编号:1006-8228(2023)05-91-03
Design and research of intelligent yarn breaking detection system based on C language
Long Xiuguang1,2, Wu Zhenyu1,2
(1. School of Mechanical Engineering, Zhejiang Sci-Tech University, Hangzhou, Zhejiang 310018, China;
2. Xinchang Zhejiang Sci-Tech University Technology Innovation Research Institute Co. LTD)
Abstract: Aiming at the problem of low intelligence of traditional electronic yarn breaking detection sensors, a solution to optimize the probe structure to meet the control requirements of embedded systems is proposed. The optimized probe structure is equipped with two sets of infrared transmitters and receivers for yarn detection and system operation mode switching, and then the receiver's action signal is processed and sent to the MCU for logic calculation, and finally the corresponding instructions are assigned to the hardware function module for terminal operation. Developed in C language and utilizing resources such as MCU timers and external interrupts, it can realize real-time yarn detection, yarn breaking alarm, yarn breaking intervention shutdown, system self-start and operation mode switching functions.
Key words: yarn breaking detection; C language; MCU; timer; external interrupt
0 引言
上世纪七十年代,人们在数据传输、通讯和检测技术上对计算机提出了新的要求,但由于通用计算机主要面对控制对象,若要凸显它的控制功能、体积小、应用灵活的优势,通用计算机没有办法满足这个要求,一种全新的嵌入式系统由此产生[2]。如今随着科技的进步,嵌入式系统已大量应用于制造工业、过程控制、机器人、通讯、仪器仪表、汽车、船舶、航空航天、军事装备、消费类产品等国民经济的主要行业[1-3]。就传统的工业控制产品而言,如数控机床、电网检查设备、工业控制等低端型工业设备常采用的是八位单片机[4]。纺织工业是我国的重点支撑产业,有着非常广阔的发展前景。纱线断裂实时检测在整个纺织作业过程中有着举足轻重的作用。随着嵌入式的发展,断纱检测技术从机械式发展到如今的电子式,并逐步向检测精度更高的图像检测发展。电子式中的光电式具有非接触、反应速度快、结构袖珍等特点广泛应用于纺织设备中的断纱检测。嵌入式的广泛应用,极大推动了智能制造的进步,但在科技不断发展的今天,对嵌入式系统也提出了更高的要求。
1 项目任务
本研究基于光电原理设计了智能断纱检测系统,主要用于实时检测纺织纱线的通断状态并进行干预停机,其结构示意图如图1所示;其中T和R组成操作模式选择器,代替传统机械开关,通过手势遮挡光路一段时间来切换系统操作模式(自由模式和干预模式);T1、T2和R12组成纱线检测探头,纱线通过遮挡部分光量而引起接收器R12内部光电流变化,在反向电压的作用下将得到一个变化的电压信号。正常工况下,当纱线Y断裂时,系统报警并及时干预纺织设备停机,减少卷筒对残余纱线的抽取量,降低后续纱线重接难度,节约能源;此外,系统还设置了工作模式记忆存储功能和自启功能,节约人为调试时间。
2 项目设计
2.1 硬件设计
本系统所搭载的硬件模块如图2所示,纱线信号采集模块负责采集纱线的动作信号;数据处理模块将以上纱线信号作滤波、隔直、运算放大、AD转换处理后送入MCU操作。MCU对所送入数据进行逻辑判断后賦给状态指示模块或干预输出模块相应指令,用于纱线检测状态提示以及对纺织设备停机干预操作。其中电源模块为各个模块供电。
2.2 软件设计
系统设置了自由和干预两种操作模式。在自由模式下,系统的纱线信号采集模块仍能检测到纱线,并点亮绿灯提示。当在系统设定时间t2内检测到的纱线次数n1大于系统设定的次数N1时,即n1>N1,系统从自由模式自动切换到干预模式;当不满足切换条件时,系统不会发出断纱停机指令和亮红灯报警。在干预模式下,当在系统设定时间t3内未检测到的纱线次数n2大于系统设定的次数N2时,即n2>N2;此时系统判定为断纱状态,MCU立即给干预输出模块相应指令来对纺织设备进行干预停机操作,并点亮红灯用于断纱报警。此外,系统也可通过操作模式选择器判断手指遮挡光束的时间t1来切换操作模式,具体流程如图3所示。
3 程序设计及分析
嵌入式系统性能强大,技术复杂,须有良好的系统层次。本研究将嵌入式系统中编程软件部分规划为功能需求分析、硬件环境分析、层次架构间调用关系、功能优化及融合[5]。在代码管理和模块管理中,全局变量和局部变量的定义依据变量在程序中的调用范围确定,例如该变量只在子程序中出现,应该定义为局部变量。
3.1 主函数
主函数是程序的入口,有且仅有一个,位于主函数后面的子函数需在主函数前声明。在主函数的while循环中,系统往复读取纱线输入信号的AD转换结果,等待外部中断和定时器中断的发生。
void main()
{ int n1=0; //全局变量,存放自由模式下检测到纱线的次数
int n2=0; //全局变量,存放干预模式下检测到纱线的次数
TMOD=0x01; //设置定时器0工作方式为16位定时器
TMOD=0x10; //设置定时器1工作方式为16位定时器
TH0=(65536-45872)/256; //定时器0高位装初值
TL0=(65536-45872)%256; //定时器0低位装初值
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1; //打开总中断
ET0=1; //开启定时器0中断
ET1=1;
EX0=1; //开启外部中断0
TR0=1; //启动定时器0
TR1=1;
IT0=0; //设置外部中断0为低电平触发,触发源为操作模式选择器的R
while(1)
{ Init();
}
}
3.2 初始化函数Init()
初始化函数中根据ADC的时序图对其进行启动转换和数据读取操作,并将转换结果根据实际项目需要做进一步处理。本研究所用的为12位的逐次比较型ADC,其在一定程度上兼有并行ADC转换速度快和双积分ADC精度高的优点。ADC对输入信号的分辨能力取决于其分辨率,系统中ADC的参考电压VREF为3.3V,则能区分的最小输入信号电压约为3.3V/212≈0.81mV。
void Init()
{ ucharnum=0; //局部变量
ucharAD_data=0;
adcs=0; //ADC片选置低
adwr=0; //启动ADC采集数据
_nop_(); //延时一个机器周期
adwr=1;
while(INTR); //转换完成,INTR=0
adcs=0;
adrd=0; //读取ADC转换结果
_nop_();
AD_data=P1; //结果赋给变量AD_data
adrd=1;
num=AD_data*(3.3/4096); //转换结果赋给变量num
if(CZMS==1) //系统为干预模式
{ if(num 真则检测到纱线 n2++; } if(CZMS==0) //系统为自由模式 { if(num n1++; } } 3.3 中斷服务函数 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,很大程度上提高了单片机处理外部或内部事件的能力[6]。当中断发生时,系统收到中断请求后,将会按照中断优先级前往相应的中断服务函数中执行中断处理程序。 3.3.1 定时器0中断服务函数 void timer0() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num1++; if(num1==10) { if(n1>5&&CZMS==0) //检测到纱线次数n1>5,且为自 由模式(CZMS==0) { CZMS=~CZMS; //操作模式取反 Green LED=1; //点亮绿灯 n1=0; //存放检测到纱线次数的变量n1清零 } Green LED=0; if(n1<5&&CZMS==0) { Green LED=1; n1=0; } Green LED=0; } } 3.3.2 定时器1中断服务函数 void timer1() interrupt 1 { TH1=(65536-45872)/256; TL1=(65536-45872)%256; num2++; if(num2==10) { if(n2>3&&CZMS==1) //系统检测到纱线次数n2>3, 且为干预模式 { Green LED=1; n2=0; } Green LED=0; if(n2<3&&CZMS==1) { Stop flag=1; //向纺织设备主控板发送停机指令 Red LED=1; //点亮红灯报警 n2=0; } } } 3.3.3 外部中断0服务函数 void ex0_intr() interrupt 0 { CZMS=~CZMS; //操作模式取反 } 4 结束语 本文基于光电原理等硬件条件,利用C语言对MCU开发出用于纺织设备纱线断裂实时检测的智能断纱检测系统,并给出了程序流程图及参考代码。所使用的芯片,ADC的参考电压、分辨率、转换速度等可根据实际项目的需求做出更换。嵌入式系统的广泛应用极大提高了工业体系的生产效率,希望本研究能为纺织工业的实际应用提供一定的参考价值。 参考文献(References): [1] 马志刚.嵌入式系统的现状及发展趋势[J].中国设备工程,2020(21):145-147 [2] 王龙飞.嵌入式系统的应用现状及发展趋势[J].中国新通信,2018(23):95-96 [3] 王海波,汤东阳,赵德明.嵌入式技术发展综述[J].数字技术与应用,2014(6):117-118 [4] 任宏宇.淺谈嵌入式系统的应用[J].农家参谋,2019(7):238 [5] 刘林芳.嵌入式系统中C语言编程软件设计[J].电子技术与软件工程,2021(1):24-25 [6] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009:1-524