基于鸿格I-7055模块实现流水灯控制*
2018-04-25林锦实
林锦实
0 前言
I-7055是台湾泓格公司生产的现场总线上用的智能控制模块,共有8个输入和8个输出I/O数字量控制端,主要用途是I/O的数字量的输入、输出控制[1]。利用泓格I-7055模块采集按钮的状态,组态王6.53进行组态和编程,对流水灯点亮方式实现多样化控制,具有结构简单、性能稳定、性价比高的优点[2]。
现在要用两个按钮控制四个灯,分布如图1所示。要求实现以下控制:当按钮1按下、按钮2未按下时,灯由左向右顺序循环点亮,间隔时间1秒;当按钮1未按下、按钮2按下时,灯由右向左顺序循环点亮,间隔时间5秒;当按钮1与按钮2全按下时,4个灯间隔3秒同时亮灭;当按钮1与按钮2都未按下时,恢复初始状态,即四个灯全灭。
图1 按钮灯分布图
1 控制系统的硬件设计
tm-7561为USB转RS-485转换模块,按钮K1、按钮K2分别接在I-7055模块的DI0、DI1口,灯1、灯2、灯3、灯4分别接在I-7055模块的DO4、DO5、DO6、DO7口[3]。I-7055模块采集按钮K1、K2的状态,转换成数字量,通过tm-7561传送给计算机,在计算机中利用组态软件进行组态和编程,产生控制信号,通过tm-7561传送给 I-7055 控制 DO4、DO5、DO6、DO7口的输出开关量,控制灯的亮灭。具体硬件接线如图2所示。
2 组态王中模块驱动的安装
tm-7561是鸿格系列产品中的新成员,组态王6.53中没有相应的模块驱动,需要自己安装。将tm-7561通过USB线接入计算机USB口,计算机会提示“发现新硬件,请安装驱动”,将设备配套的驱动光盘放进光驱,安装驱动结束后,计算机会显示新设备接入口的模拟COM口(如COM3),记录下该COM口。
图2 硬件接线图
3 系统组态
打开“工程管理器”,选择文件夹,新建工程。
(1)定义组态王设备
打开组态王“工程浏览器”|“设备”|“板卡”,双击“新建”,打开“设备配置向导”,选择“智能模块”|“泓格I-7000系列”|“I-7055”|“串口”;单击“下一步”按钮,给该设备起个名称,如I7055;单击“下一步”按钮,正确选择tm-7561模拟的计算机通讯口(COM3);单击“下一步”按钮,输入模块的实际地址0(该项目中所用模块只有I-7055,地址为出厂默认值0,如果地址重新设定过,注意正确选择对应值);单击“下一步”按钮,确定模块出现故障时的恢复策略;单击“下一步”按钮,检查所设置的设备参数,无误后单击“完成”[4]。
完成设备定义后,单击“工程浏览器”|“设备”|“COM3”,会在右边窗口看到定义过的模块,如果有错误,可以双击该模块名称进行修改[5]。
(2)变量设置
该工程所需要的I/O变量如表1所示。
除以上I/O变量外,该系统为设定循环点亮流水灯的时间间隔,还需要设置一些内存变量,如表2所示。
表1 I/O变量列表
表2 内存变量列表
(3)画面制作与编程
1)打开“工程浏览器”|“命令语言”|“应用程序命令语言”[6]
在“启动时”页面编程:
灯 1=0;灯 2=0;灯 3=0;灯 4=0;//所有灯熄灭
在“停止时”页面编程:
灯 1=0;灯 2=0;灯 3=0;灯 4=0;//所有灯熄灭
2)选择“工程浏览器”|“命令语言”|“数据改变命令语言”,双击“新建”,打开“数据改变命令语言”窗口,选择变量[.域]:$秒;编写程序:
左循环位=左循环位+1;//“左循环位”变量每秒加1,再根据此数字确定被点亮的灯
if(左循环位>=4)
{左循环位=0;}
右循环计时=右循环计时+1;//用“右循环计时”变量实现5秒计时
if(右循环计时>=5)
{右循环计时=0;}
闪烁计时=闪烁计时+1;//用“闪烁计时”变化实现3秒计时
if(闪烁计时>=3)
{闪烁计时=0;}
3)选择“工程浏览器”|“命令语言”|“事件命令语言”,双击“新建”,打开“事件命令语言”窗口
①选择事件描述:右循环计时==,3;编写程序:
右循环位=右循环位+1;
if(右循环位>=4)
{右循环位=0;}//每当“右循环计时==3”时,“右循环位”变量加1,再根据此数字确定被点亮的灯,实现右循环时每隔3秒点亮灯的位置右移
②选择事件描述:闪烁计时==2;编写程序:闪烁=!闪烁;
4)编写画面命令语言
“存在时”命令语言:
if(按钮1==1&&按钮2==1)//两个按钮全按下时,4个灯间隔3秒闪烁
{if(闪烁==0)
{灯1=0;灯2=0;灯3=0;灯4=0;}
else
{灯 1=1;灯 2=1;灯 3=1;灯 4=1;}}
else
{if(按钮1==1)//按钮1按下时左循环间隔1秒点亮
{if(左循环位==0)
{灯1=0;灯2=0;灯3=0;灯4=1;}
if(左循环位==1)
{灯1=0;灯2=0;灯3=1;灯4=0;}
if(左循环位==2)
{灯1=0;灯2=1;灯3=0;灯4=0;}
if(左循环位==3)
{灯1=1;灯2=0;灯3=0;灯4=0;}
}
else
{if(按钮2==1)//按钮2按下时右循环间隔5秒依次点亮
{if(右循环位==0)
{灯1=1;灯2=0;灯3=0;灯4=0;}
if(右循环位==1)
{灯1=0;灯2=1;灯3=0;灯4=0;}
if(右循环位==2)
{灯1=0;灯2=0;灯3=1;灯4=0;}
if(右循环位==3)
{灯1=0;灯2=0;灯3=0;灯4=1;}
}}}
if((按钮1==0)&&(按钮2==0))//没有按下的按钮时,恢复初始状态
{灯 1=0;灯 2=0;灯 3=0;灯 4=0;}
4 系统调试与结论
启动“运行系统”,观察两按钮按下状态不同时流水灯的状态,并对软件进行调试,得到满意的运行结果。
基于鸿格1-7055模块采用其他的编程方法,也可以实现流水灯控制。本文介绍的编程思路新颖可行,可进一步拓展,实现更多的功能。
参考文献:
[1]张英豪,杨柱.泓格I-7000系列采集模块在矿井风机在线监测中的应用[J].矿山机械,2006(11):45-46.
[2]王启立,胡亚非,何敏.泓格Ⅰ-7000系列模块在风机性能监测系统中的应用[J].工矿自动化,2005(03):46-48.
[3]林锦实.泓格I-7000系列模块在温度控制系统中的应用[J].机电工程技术,2011(11):37-40.
[4]李红萍,贾秀明,李艺鸿,等.基于泓格I-7000系列的Kingview液位控制系统设计[J].电气自动化,2013(1):76-78.
[5]刘文贵.泓格I-7000系列模块在水利工程监测系统中的应用[J].工业控制计算机,2005(11):76-74.
[6]樊会祥,韩菲.利用泓格I-7000系列模块实现环境的实时监控[J].信息技术,2008(06):106-109.