《永宏PLC在VBNET中的应用》由会员分享,可在线阅读,更多相关《永宏PLC在VBNET中的应用(13页珍藏版)》请在金锄头文库上搜索。
1、永宏PLC在VB.NET中的应用Fatek Application of PLC in five - axis reciprocating machines肖艺斌永宏电机范堤商贸(上海)有限公司上海摘要随着IT产业的进步及网际网络的发展,传统的工业控制所使用之PLC控制器,具有高度的稳定性及抗杂讯的特性且配线容易价格便宜,因此被大量的在自动化的场所,本文介绍了永宏PLC在VB.NET中的应用。关键词:FATEK PLC;VB.NETAbstractWith the progress of IT industry and the development of the Internet, the
2、traditional industrial control the use of PLC controller, with high stability and resistance to static characteristics and Wiring easy inexpensive, so it is a lot of places in the automation, this article describes fatek PLC in VB.Application of the net.Key Words :FATEK PLC;VB.NET一 前言随着IT产业的进步及网际网络的
3、发展,传统工业控制所使用之PLC控制器,具有高度的稳定性及抗杂讯的特性且配线容易及价格便宜,因此北大量应用的在自动化的场所,已由单机操作朝向网络控制化发展,文本在探讨网络控制化的核心技术,使PC借由RS-232通讯协定控制PLC,并透过VB.NET程序语言,达到远端控制及网际自动化控制的功能。本文以自动红绿灯控制为主题,所使用之PLC为国内永宏电机公司所制FBS-PLC,内含通讯模组,因此不需额外增购,且可由该公司网站免费下载及更新阶梯图软体(Winproladder)。二 永宏通讯协议2.1 主仆定位与通讯互动关系在永宏 PLC 的通讯结构上,永宏 PLC 是被定位为仆系统( SLAVE )
4、,而任何与永宏 PLC联机的外围设备都为主系统( MASTER ),也就是说任何外围设备与永宏 PLC 之间的通讯都是由主系统(外围设备)来主动发出命令,仆系统(永宏 PLC )只有在收到命令信息后才根 据该命令的要求响应信息给主系统,而不能主动发出信息给主系统。2.2永宏PLC通讯讯息格式永宏PLC的通讯信息格式无论是命令信息(主系统发出)或响应信息(仆系统发出)都可大概分为 6 个数据域位,如下图的范例:1) 开头字符(STX):ASCII码的开始字符STX的16进制码数为02H ,无论命令或响 应信息的开头字符都为 STX ,接收方以此来判断传输数据的开头。 2) 仆站号码:为两位数的
5、16 进制数值,在永宏 PLC 通讯系统中的网络结构采用主仆系统在整个网络系统中只有一个主系统,但可以有 254 个仆系统,每个仆系统都有一个独一无二的站号,分别为1 FEH(站号0 则当作对所有仆系统作广播下命令),当主系统都对仆系统下命令时是以站号来指定由那个PLC,或所有PLC(广播时)来接收这个命令。在响应信息 时,仆系统会将自己的站号响应给主系统,以供主系统确认是它所指定的那个仆站(PLC)所送回的信息。3) 命令号码:为两位数的 16 进制数值,所谓命令号码是由主系统要求仆系统所执行的动作类型,例如要求读取或写入单点状态、填入或读取缓存器数据、强制设定、运转、停止 .等,和站号一样
6、,在响应信息时,仆系统也会将从主系统接收的命令号码原原本本地随同本文数据一块传回主系统。 4) 本文资料:本文数据可为 0 (无文本资料)500 个 ASCII 字符,在命令信息中此 字段数据用来指定命令所要运作或存取的对象 (地址)或要写入的数值。在响应信息中本字段的开头为一个错误码字符,在正常(没有错误)情况下此错误码必为字符 0 (30H ),其后跟着的才是要响应给主系统的状态或数值等本文数据。当有错误时,本开头字符不再是 0 ,取而代之的是错误码,同时其后不再有其它本文数据(即本文数据仅为一个字符的错误码)。 5) 校验码 (CHECKSUM) :校验码是将前述 各字段的所有 ASCI
7、I 字符的 16 进制数值以纵式余数查核法LRC(Longitudinal Redundancy Check )计算产出一个 Byte 长度(两个 16 进制数值 00 FF )的校验码。当接收端收到信息后按照同样的计算方法则将 字段的所有字符算出其校验码,两个值相同表示传输的数据正确,否则就是有传输错误发生。本通讯协议 LRC 校验码的计算方法是将各 ASCII 字符的 16 进制数码值( 8 位长度)从头到尾按照顺序相加,但不考虑进位,因此最终结果仍为 8 位长度的校验码。 6) 结尾字符( ETX ):ASCII 码的结尾字符 ETX 的 16 进制数码为 03H ,无论命令或响应信息的
8、结尾字符均都为 ETX ,当接收方收到 ETX 字符后便知道该次通讯已结束,可开始处理该命令或数据了。三 红绿灯控制阶梯图程序【程序说明】 1. 按下启动按钮X0交通灯开始工作,按下停止按钮X1,交通灯系统停止运行。2. 设东西方西车流量较小,红灯亮的时间为60秒,而南北方向车流量较大,红灯亮的时间为30秒。3. 东西方向的红灯时间就是南北方向的“绿灯时间绿灯闪烁时间黄灯时间”,反之,南北方向红灯,时间就是东西方向的“绿灯时间绿灯闪烁时间黄灯时间”。4. 黄灯亮时车和人不能再通过马路,黄灯亮5秒的目的是让正在十字路口通行的人和车有时间到达对面马路。5. 东西方向交通灯状态变化规律:6. 南北方
9、向交通灯状态变化规律:【阶梯图如下】四 VB.NET即时监控程序架构及程序设计PC借由RS232与PLC取得连线,通讯参数如下:9600,7,E,1,整个连线设定可参考Form1_Load()及btnStart_Click()段。即时监控如图一所示,当执行系统启动按钮时,桌面将呈现如图二图五所示,状态的侦测采用200ms定时触发的方式,依次读取Y0Y8,R0R1的即时状态,程序执行段参考Timer1_Tick()段,系统启动功能代码可参考Button2_Click()段,系统停止功能代码可参考Button3_Click()段图一 即时监控画面设计 图二 状态一 图三 状态二 图四 状态三 图五
10、 状态四五 结论随着网际网络的普及,远端监控已是必然的趋势,本文所提供PC与FBS-PLC间的连线,仅需在VB.NET程序中加入网际网络物件即可达到Internet的远距控制,亦可透过RS485界面达到远端即时监控。六 附录6.1 参考文献1 范堤商贸(上海)有限公司. 永宏可编程控制器使用手册I【硬件篇&指令篇】. 20102 范堤商贸(上海)有限公司. 永宏可编程控制器使用手册II【进阶应用篇】. 20106.2 VB.NET程序段Imports System.IO.PortsPublic Class Form1 Dim i As Boolean = False Dim WithEvent
11、s RS232 As SerialPort Delegate Sub SetTextCallback(ByVal InputString As String) 声明一个代理 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Enabled = False Button2.Enabled = False Button3.Enabled = False TextBox.Enabled = False txtReceive.Enab
12、led = False For Each sp As String In SerialPort.GetPortNames() cmbCom.Items.Add(sp) Next cmbCom.Sorted = True cmbCom.SelectedIndex = 0 End Sub Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click Dim mBaudRate As Integer Dim mParity As IO.Port
13、s.Parity Dim mDataBit As Integer Dim mStopBit As IO.Ports.StopBits Dim mPortName As String Button2.Enabled = True mPortName = cmbCom.SelectedItem.ToString mBaudRate = 9600 mParity = Parity.Even mDataBit = 7 mStopBit = StopBits.One Me.txtReceive.Text = mPortName RS232 = New IO.Ports.SerialPort(mPortN
14、ame, mBaudRate, mParity, mDataBit, mStopBit) Try RS232.Open() 打开串口 txtReceive.Text = RS232.IsOpen If RS232.IsOpen = True Then txtReceive.Text = 串口已连接“ txtReceive.ForeColor = Color.Green Timer1.Enabled = True btnStart.Enabled = False btnClose.Enabled = True cmbCom.Enabled = False End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub btnClo