① 三菱PLC与旋转编码器的程序例子
旋转编码器是通过光电转换,将输出至轴上的机械、几何位移量转换成脉冲或数字信号的传感器,
主要用于速度或位置(角度)的检测。
典型的旋转编码器是由光栅盘和光电检测装置组成。光栅盘是在一定直径的圆板上等分地开通若干
个长方形狭缝。
由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转。
经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号。
通过计算每秒旋转编码器输出脉冲的个数就能反映当前电动机的转速。
一般来说,根据旋转编码器产生脉冲的方式的不同,可以分为增量式、绝对式以及复合式三大类。
自动线上常采用的是增量式旋转编码器。
增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;
A、B两组脉冲相位差90,用于辩向:当A相脉冲超前B相时为正转方向,而当B相脉冲超前A相时则
为反转方向。
Z相为每转一个脉冲,用于基准点定位。
1、三菱PLC的高速计数器
高速计数器是PLC的编程软元件,相对于普通计数器,高速计数器用于频率高于机内扫描频率的机外
脉冲计数。
由于计数信号频率高,计数以中断方式进行,计数器的当前值等于设定值时,计数器的输出接点立
即工作。
三菱PLC内置有21点高速计数器C235~C255,每一个高速计数器都规定了其功能和占用的输入点。
⑴
高速计数器的功能分配如下:
C235~C245共11个高速计数器用作一相一计数输入的高速计数,即每一计数器占用1点高速计数输入点。
计数方向可以是增序或者减序计数,取决于对应的特殊辅助继电器M8□□□的状态。
例如C245占用X002作为高速计数输入点,当对应的特殊辅助继电器M8245被置位时,作增序计
数。
C245还占用X003和X007分别作为该计数器的外部复位和置位输入端。
C246~C250共5个高速计数器用作一相二计数输入的高速计数。
即每一计数器占用2点高速计数输入,其中1点为增计数输入,另一点为减计数输入。
例如C250占用X003作为增计数输入,占用X004作为减计数输入。
另外占用X005作为外部复位输入端,占用X007作为外部置位输入端。
同样,计数器的计数方向也可以通过编程对应的特殊辅助继电器M8□□□状态指定。
C251~C255共5个高速计数器用作二相二计数输入的高速计数。
即每一计数器占用2点高速计数输入,其中1点为A相计数输入,另1点为与A相相位差90º的B相计数
输入。
C251~C255的功能和占用的输入点如表5-14所示。
表5-14 高速计数器C251~C255的功能和占用的输入点
C251AB
C252ABR
C253ABR
C254ABRS
C255ABRS
如前所述,分拣单元所使用的是具有A、B两相90º相位差的通用型旋转编码器,且Z相脉冲信号没有
使用。
由表5-14,可选用高速计数器C251。这时编码器的A、B两相脉冲输出应连接到X000和X001点。
⑵
每一个高速计数器都规定了不同的输入点,但所有的高速计数器的输入点都在X000~X007范围内,
并且这些输入点不能重复使用。
例如,使用了C251,因为X000、X001被占用,所以规定为占用这两个输入点的其他高速计数器,
例如C252、C254等都不能使用。
2、高速计数器的编程
如果外部高速计数源(旋转编码器输出)已经连接到PLC的输入端,那末在程序中就可直接使用相对
应的高速计数器进行计数。
例如,在图5-18中,设定C255的设置值为100,当C255的当前值等于100时,
计数器的输出接点立即工作。从而控制相应的输出Y010 ON。
由于中断方式计数,且当前值=预置值时,计数器会及时动作,但实际输出信号却依赖于扫描周
期。
如果希望计数器动作时就立即输出信号,就要采用中断工作方式,使用高速计数器的专用指令。
三菱PLC高速处理指令中有3条是关于高速计数器的,都是32位指令。
它们的具体的使用方法,请参考三菱PLC编程手册。
(1)stm32仿三菱plc源代码扩展阅读:
三菱PLC的两个高速口可以产生脉冲来控制伺服(或步进)电机的转速。
例如:脉冲频率为10000HZ,驱动器每2048个脉冲转一圈,电子齿轮比4/1(可调),
则转速为10000/(2048*4)*4/1 r/s。
可以利用高速计数器的啊C235~255都是高速计数器的。
然后你可以就是测量脉冲的位置然后给C235一个你要到达的位置的地方就可以定位到你想要的高
度。
脉冲相对于当前位置减少的时候就是电机反转了你可以在写一个比较指令与实际位置比较这样就可
以判断出电机的正反转了。
参考资料:网络-旋转编码器
② 能给我发个VB与三菱PLC通讯的源代码实例吗,非常感谢啊
Abstract: Describes all kinds of basic serial port communication methods using Visual Basic 6.0 and design of free port communication program of MITSUBISH PLC, furthermore set focus on the designing method of serial port communication through dynamic linked library in Visual Basic 6.0
Key Words: Serial port communication, PLC, Visual Basic 6.0一、引言
在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。微软公司推出的Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用Windows API函数,另一种是用VB支持的通信控件MSCOMM.OCX。利用Windows API函数是通过调用读写等函数来操作串口。两种比较,使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。这里采用了MSCOMM.OCX控件。
本文根据杭州某包装材料公司原料配料控制系统为背景,简述实现计算机与三菱FX系列PLC通信的实现过程。二、硬件与选型
日本三菱公司是国际著名的工厂自动化设备制造商,工业可编程控制器在国内市场占有率一直保持前列。项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。系统框图如图一所示:
SC-09电缆
计算机 三菱 PLC
图一
三、软件编程
软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。计算机操作系统为Windows98,编程语言用Visual Basic 6.0,数据库选用Access97,梯形图程序在三菱PLC编程软件GPPWIN 软件环境设计。上位机软件实现计算机对PLC内部数据读取、写入参数和保存数据到数据库。
三菱FX2N型PLC编程口通信协议如下:
命令
命令字
控制元件
备注
读元件
0
X,Y,M,S,T,C,D
读字/位元件状态
写元件
1
X,Y,M,S,T,C,D
写字/位元件状态
置位
7
X,Y,M,S,T,C
位元件置位
复位
8
X,Y,M,S,T,C
位元件复位
通信格式:
起始符
命令字
首地址
数据区
结束符
和校验
波特率9600,偶校验,8位数据位,一位停止位。
在新建工程的表单上添加MSCOMM.OCX控件,初始化程序:
Private Sub Form_Load()
MSComm1.CommPort = 1 '选择COM1口
MSComm1.Settings = "9600,e,7,1"
End Sub
系统参数主画面如下图所示:
图二
数据读取子程序:
Public Function GetData(ByVal StartAddress As String, ByVal GetBytes As Integer, ByVal Hex_Bytes As String) As String
MSComm1.InputLen = GetBytes * 2 + 4
MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)
‘传送数据组成:起始符+命令+首地址+数据位+结束符+和检验码
GetData = MSComm1.Input
MSComm1.InBufferCount = 0
MSComm1.InputLen = 0
End Function
如需读取数据,通过调用GetData子程序。
参数设置程序可参考读取子程序,只是改变命令而已。
Access97数据库中包含三个表单,包括参数表、记录表、报警记录表。
通过如下子程序是将实际称量值(记录表)更新到数据库:Private Sub SaveData()
Dim i As Integer
Dim valid As Boolean
On Error Resume Next
valid = True
Data1.Recordset.AddNew
Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinute, OnSecond)
Data1.Recordset.Fields("systime") = Time ‘系统时间
Data1.Recordset.Fields("get_xl") = LF(1) ‘小料当前称量值
Data1.Recordset.Fields("get_fjs") = LF(2) ‘方解石当前称量值
Data1.Recordset.Fields("get_cs") = LF(3) ‘长石当前称量值
Data1.Recordset.Fields("get_sys") = LF(4) ‘石英砂当前称量值
Data1.Recordset.Fields("get_cj") = LF(5) ‘纯碱当前称量值
On Error Resume Next
Data1.Recordset.Update ‘更新数据库记录
Data1.Recordset.MovePrevious
End Sub
程序中,LF(i)变量对应为图二系统参数表单中实称值。
保存参数子程序只是对数据库操作,程序结构可参考以上子程序。
上位机与PLC通信质量的好坏,对系统的安全可靠运行影响极大,因此,编写程序时,除了在两者之间的通信协议上保持绝对一致和采取相应的容错技术外,还要考虑系统的整体容错技术,防止系统的不正常。
四、结束语
串行通信是目前计算机与其他设备之间通信广泛采用的方式之一,传送数据准确,程序稳定运行是系统开发的主要目的。本设计中充分利用计算机和PLC的资源,在几乎不增加设备开支的情况下成功的实现上位机与PLC之间的通信。