摘 要: 以电机星三角降压启动监控系统为例,介绍了通过FX2N-232BD通信扩展板,实现LabVIEW与FX2N系列PLC串口通信的方法。设计了电机星三角降压启动的PLC控制电路,编写了三菱PLC通信扩展板的通信程序,给出了上位机LabVIEW软件的监控程序,并且创建了用于人机交互的前面板。
关键词: LabVIEW软件;三菱FX2N系列PLC;FX2N-232BD通信扩展板;串口通信
LabVIEW是美国国家仪器公司(NI公司)推出的用于数据采集、仪器控制、数据分析与数据表达的图形化编程环境,它是一个开放的开发环境,具有PCI、GPIB、PXI、VXI、RS-232/485、USB等仪器通信总线标准的所有功能函数,开发者可以利用这些函数与不同总线标准接口的数据采集硬件交互工作。本文介绍的是利用RS-232串口通信协议,实现上位PC LabVIEW软件与下位机三菱PLC之间的数据通信[1]。
要实现LabVIEW的串口通信,在PC上正确安装LabVIEW软件后,还必须安装NI_VISA串口通信协议驱动。而三菱PLC的串口通信,则要在FX2N PLC基本单元上加装FX2N-232BD通信扩展板。加装通信扩展板的方法是:从PLC基本单元的上表面卸下面板的盖子,将FX2N-232BD通信板压入到连接器上,用M3螺钉将通信板固定在基本单元上,再将PC和通信板的九针串口通过RS-232通信电缆连接起来,如图1所示[2]。
软件和硬件设备安装好后,就可以编制LabVIEW和PLC通信程序,通过FX2N-232BD通信扩展板,实现上下位机的数据通信。
1 三菱PLC串口通信实现
异步电动机的星三角降压启动控制要求如下:当上位机中LabVIEW软件中前面板的启停开关打到启动档,下位机三菱PLC的输出继电器Y1和Y2得电,控制电源接触器和星形连接接触器动作,使电机星形连接启动,20 s后输出继电器Y2失电,星形连接接触器主触头断开,而输出继电器Y3得电,三角形连接接触器主触头接通,电机进入正常运行状态。当前面板的启停开关打到停止档,Y0~Y3这4个输出继电器全部失电,所有接触器的主触头断开,电机停机。当电机过载时,连接在X0处的热继电器的常闭触头断开,电机停机。如果电机星形连接启动阶段或其发生过载时,连接在Y0处的指示灯亮,其他情况指示灯灭。根据控制要求设计的电机星三角降压启动的PLC控制电路如图2所示。
要监控PLC控制电路的运行,FX2N-232BD通信扩展板需要向上位机监控软件LabVIEW发送PLC输出继电器Y0~Y3的状态和星形连接启动的时间进度,并接受LabVIEW发出的启停命令,为此编写的基于FX2N-232BD的三菱PLC通信程序如图3所示[3]。
FX2N-232BD的通信格式是通过PLC的特殊数据寄存器D8120来设定的。PLC上电后,M8002继电器接通一个扫描周期,执行MOV指令,将D8120设置为H87,即将通信格式规定为:数据长度为8位、偶校验、停止位为1位、波特率为9 600 b/s。LabVIEW的通信程序必须把PC的串口COM通信格式设为与FX2N-232BD的通信格式一致。
PLC处于“RUN”状态,M8000继电器常开触点一直接通,M8161继电器线圈得电,这可使串口通信按8位字节数据处理。M8000常开触点接通,RS指令执行,RS指令是通信用的功能扩展板发送和接收串行数据的指令,图3中的RS指令指定了发送数据缓冲区的首地址是数据寄存器D0,发送缓冲区内的数据寄存器的个数为2,接收数据缓冲区的首地址为D20,接收缓冲区内的数据寄存器个数为1。RS指令执行后,通信系统马上处于接收等待状态。
LabVIEW软件向PLC发出的启停命令通过发送十六进制数H0DD或H0FF来实现,根据图3的18逻辑行程序所示,当PLC接收完数据,系统自动置位M8123接收完成标志位,M8123常开触点接通,CMP指令把存放在接收数据缓冲区D20中的数据分别与H0DD和H0FF比较,若与H0DD相等,则说明是启动命令,M1被置位,若与H0FF相等,则说明是停止命令,M11被置位。当处理完毕接收的数据后,必须人为地通过RST指令复位M8123,若M8123不复位,系统将禁止发送和接收数据。
根据图3的35逻辑行程序所示,M8012继电器常开触点每0.1 s接通一次,通过MOV指令将Y0~Y3的状态和星形连接启动的时间T0分别赋值给发送数据缓冲区的D0和D1,并执行SET指令,人为置位M8122发送请求标志位,RS指令转为发送状态,这样D0和D1中的数据每隔0.1 s发送给上位PC,提供给LabVIEW软件处理。发送完毕后,系统会自动对M8122复位,然后自动转到接收等待状态。
PLC按照PC发送的启停命令,实现电机星三角降压启动的控制程序如图4所示。
根据图2和图4,当PLC接收到启动命令时,M1得电,执行49逻辑行程序的MOV指令,将7赋值给由Y0~Y3组成的位组件K1Y000,实现电机星形连接启动。通过56逻辑行程序延时20 s。20 s后,由60逻辑行程序完成电机星形连接分断,同时三角形连接运行。当PLC接收到停止命令时,M11得电,由66逻辑行程序,使Y0~Y3全部失电,电机断电停机。当电机发生过载时,X0常闭触点接通,电机停机。
2 LabVIEW软件串口通信的实现方法
LabVIEW虚拟仪器程序由前面板和框图程序组成,前面板是人机交互的界面,界面上有用户输入和显示输出两类控件;框图程序则是用户编制的程序源代码,以定义和控制在前面板上的控件输入和输出功能。图5为上位机监控三菱PLC实现电机星三角降压启动的LabVIEW框图程序[4]。
图5所示的图形化编程设计采用NI_VISA串口Serial函数来完成PC与PLC之间的串口通信。VISA中的Serial函数库里包含VISA Configure Serial Port、VISA Write、VISA Read、VISA Close等子函数。本设计用到的4个VISA串口子函数是:VISA串口配置函数VISA Configure Serial Port、VISA写入函数VISA Write、VISA读取函数VISA Read和VISA 关闭函数VISA Close。
VISA串口配置函数VISA Configure Serial Port的作用是完成串口参数的初始化设置,包括串口资源名称、波特率、奇偶校验、数据比特、是否启用终止符等。由于VISA写入函数VISA Write只接受字符串输入,所以LabVIEW向PLC写入的启动命令和停止命令标识符H0DD或H0FF,要通过如图5所示的“创建数组”函数和“字节数组至字符串转换”函数,组成字符串,输入到VISA Write函数的写入缓冲区中。VISA Write函数将写入缓冲区的内容通过串口发送到PLC。VISA读取函数VISA Read从串口读取PLC发送的字符串,每次读取字节数设置为2,它的输出通过“字符串至字节数组转换”函数和“索引数组1”函数,把字符串转换为两个无符号字节数据,这两个字节数据分别包含了PLC的Y0~Y3状态和星形连接启动时间T0。VISA关闭函数VISA Close的作用是在程序停止之前,必须要把使用的串口设备关闭,若不关闭,其他程序就不能使用该设备。
图5中有个条件结构,在前面板上,切换“启停切换”水平摇杆开关,满足“真”条件,向PLC写入启动命令标识符,而满足“假”条件,则向PLC写入停止命令标识符。
由“索引数组1”函数的索引0生成的字节数据通过“数值至布尔数组转换”函数和“索引数组2”函数,把8位无符号字节的低4位拆分出4个布尔数,并以指示灯的形式显示在前面板中,用来监视PLC的输出继电器Y0~Y3的状态,反映出电机的工作状态。“索引数组1”函数的索引1生成的字节数据除以10就是以秒为单位的启动时间,它以水平进度条和实时数据的形式显示在前面板中。
在条件结构外还有个While循环结构,目的是反复执行对PLC写入或读取数据的程序,直到前面板按下“退出”按钮,结束程序运行[5-6]。
按上述步骤,把电机星三角降压启动监控系统搭建完成后,上下位机联机运行,实验现象表明基于FX2N-232BD通信扩展板的LabVIEW与FX2N系列PLC的串口通信方法是可行的。本文充分利用了LabVIEW易开发、人机界面良好的特点,将组态软件和VB、VC++等高级语言的优点完美结合起来, 通过这种串口通信方法,很方便地完成了上位PC对三菱PLC各类软元件的读写操作,从而为实现工业现场的监控与现场数据的分析打下了基础。
参考文献
[1] 张桐,陈国顺,王正林.精通LabVIEW程序设计[M].北京:电子工业出版社,2008:224-228.
[2] 张运刚,宋小春,郭武强.从入门到精通三菱FX2NPLC技术与应用[M].北京:人民邮电出版社,2007:283-298.
[3] 马振锋,刘献礼,王鹏,等.基于LabVIEW7.1的PC与PLC通信[J].哈尔滨理工大学学报,2005,10(5):30-33.
[4] 张从雄.虚拟仪器技术分析与设计[M].北京:电子工业出版社,2007:100-108.
[5] 施寿生.虚拟仪器串口卡设计[J].乐山师范学院学报,2008,23(12):29-30.
[6] 张力.基于LabVIEW的旋转编码器转角及转速测量仪的设计[J].三峡大学学报(自然科学版),2008,30(3):67-69.