白旭升,薛 凯,常力文,王 琦,汪莹莹
(成都理工大学 电子与通信工程系,四川 成都 610059)
PC技术和通信技术的不断发展,使得在工业生产中所要求的低成本、更便捷、更精准、更自动化的远程控制系统的建立有了更大的应用空间。在一些生产流水线中,整个系统除了对效率有很高要求的同时,还需要对产品的品质进行控制,一旦检测到有不达标产品,系统在做出判断的同时需要将缺陷产品信息及时反馈给操作人员以便员工确认处理。本设计就是应实际生产需求设计的。
本系统采用ADAM系列模块、POSITAL编码器、OMORN继电器。该系统按功能分为软件模块和硬件模块。硬件模块负责供电、给出脉冲计数、ADAM080输出报警信号时接通报警电路、报警。软件模块通过使用RS485通信协议,完成与硬件的通信,设置ADAM080的相关参数,并判断当满足报警上限时根据需求是否触发(关闭)报警指令以及清空报警信息[1]。
该报警系统的硬件连接示意如图1所示。ADAM4561是一款隔离端口转换器,它可以让PC用户将串行设备连接到使用USB接口的系统中。将ADAM4561连接到PC后,用户无须再打开机箱或关掉PC电源来安装集线器,就可以立即得到一个或两个额外的高速RS-232/422/485端口并且不需要额外电源供电;编码器作为产生计数的模块,将由它直接为ADAM4080提供稳定的计数来源,其每转一周输出5000个脉冲计数,通过信号线送至ADAM4080的计数端口0、1;ADAM4080选择非隔离(TTL)输入方式(编码器为TTL输出方式),这样用户就可以设置上下限电平触发值,确保与编码器联合达到计数的目的。同时,ADAM080采用10~30 V直流电源,编码器采用4.75~30 V直流电源,我们可以统一使用24 V直流电源供电;使用继电器将ADAM4080的数字报警输出接入电路,通过继电器的开关功能使报警装置进行显示切换;此次报警装置有绿灯、黄灯、红灯3种状态,另外有一个蜂鸣器,此次生产应用中,我们将绿灯表示为产品检测中的指示正常信号,接入继电器上位开关,使其在通电过程中常亮;将红灯与蜂鸣器并联,作为产品在故障时的指示信号和声音信号。
图1 硬件连接示意
因为ADAM4080的do0口为集电极开路的数字输出方式,因此在使用它的开关功能时,应外接上拉电阻,经测试,此次继电器正负引脚之间存在一电阻,我们将不额外接入上拉电阻,直接将继电器与ADAM080的do0口接入电路,通过指令测试,当计数达到报警阈值时,do0口输出报警信号,继电器正常切换到红灯与蜂鸣器报警电路,由原先的正常绿灯状态转为红灯闪烁且同时蜂鸣器报警。至此,硬件模块功能设计完成,达到生产要求[2]。
该系统的软件控制流程示意如图2所示。由于ADAM4080与PC之间使用ADAM4561桥接,这使得RS-485与转换为USB,如此一来,将ADAM4080当作一个标准串行通信口,便于用PC来编程直接访问。此次我们使用Visual C++ 6.0平台以及C语言编程,Visual C++ 6.0作为一种强大的开发工具几乎在Windows软件开发的任何领域都广泛使用。一般用Visual C++ 6.0 开发串行通信程序有两种方法:一是利用Windows的通信API函数;另一种是采用Visual C++ 6.0的ActiveX控件来实现。第一种方法虽然需要声明及调用许多API函数,但可移植性可拓展性强,适合与软件其他部分结合,我们将采用这种方式。此次我们连接到工控机的com7口,编程时将其中的串口句柄设置为com7,对串口初始化时保持与ADAM080模块默认的设置,读写线程完后关闭串口[3]。
图2 软件控制流程示意
在串口编程中,发现虽然我们成功打开串口,但发送的ASCII指令并未得到ADAM080的回应,查阅资料以及借助相关工具发现,在控制台程序模式下,输入命令按下回车后,字符串后并没有出现研华标准命令格式中的命令结束标志符“cr”,导致ADAM4080无法识别程序发送的指令。通过编程方式手动加上回车符后,与ADAM4080通信正常。
接下来通过串口配置ADAM4080,使设备初始化。根据研华提供的资料,我们整理出一些常用的命令,如表1所示。ADAM4080为每个计数器均提供一个可配置的报警器,其报警阈值可以编程随意控制。数字输出通道do0显示计数器0的报警状态;数字输出通道do1显示计数器1的报警状态。根据实际需求设置报警门限,我们将报警阈值设置为一个很低的数值(即将计数器的值置1),采用远程遥控允许的报警方式,配合其他触发条件(当检测到次品时),发送打开do0报警通道的指令,由于此时早已达到报警阈值,因此一旦打开报警通道,便立即输出报警信号,切换到报警电路;当员工确认完报警想解除报警时,可以向模块发送关闭报警通道的命令。特别的,根据实际需求,ADAM4080提供两种报警模式:瞬态方式和锁存方式,它们的区别在于:处于瞬态方式,只要输入值恢复到阈值范围内,报警就关闭;处于锁存方式,即使输入值回到范围内也不能接触报警状态,主机发出“清除报警”指令后,报警状态才会取消。对计数器中的数值,可以根据实际需求,按照编程方式转换为其他单位,进而拓展软件功能[4-5]。
表1 部分指令及功能
该系统设计是基于PC、通信技术和自动控制为一体,利用RS-485协议实现对产品中次品的实时报警的体系。该产品可配合编程技术达到自动化输出报警信号,使得被检测到的次品得到实时预警。此设计中,硬件模块具有很强的稳定性,各配件价格便宜,可拓展性强,组建起来也十分方便;软件模块使用很常用的串口编程方式,并且研华已经提供了完整的指令库,配合已经相当成熟的RS-485通信技术,软硬件之间的通信也达到准确高效。经过实际测试,继电器可以根据需要切换到相应的工作电路,整个系统工作稳定,响应速度快,自动化程度高,满足生产要求[6]。
该系统设计是基于PC、通信技术和自动控制,达到软硬件为一体,利用RS-485协议实现对产品中次品的实时报警的体系。该产品在实际使用中可以完成对检测到的缺陷产品的实时预警,软硬件之间的通信也达到准确高效,可以通过软件调节实现上下限报警或者遥控报警,使用灵活,组建成本低,而且操作方便,能很好地服务于生产实践,达到设计要求。
[1]王秀珍.基亏ADAM4060及ADAM4080D模块实现对“温度测控装置”的远程控制[J].内蒙古科技与经济,2011(21):86-87.
[2]康华光.电子技术基础:模拟部分[M].北京:高等教育出版社,2013.
[3]金孟霞.基于VisualC++的计算机与PLC之间串行通讯的设计与实现[J].计算机与信息技术,2008(9):76-77,79.
[4]徐英健.远程信号处理模块化时代—研华ADAM—4000系列[J].微计算机信息,1994(5):42-43.
[5]晁永生,樊军,申晓萍,等.浅谈VisualC++串口通信编程[J].科技广场,2007(1):71-73.
[6]丁园园.利用研华ADAM-4000系列模块搭建监控系统[J].科技风,2011(8):41.