三菱plc编程实例3000(三菱PLC循环指令FOR,NEXT编程实例)
- 三菱PLC循环指令FOR,NEXT编程实例
- 三菱PLC编程实例
- 绝对编码器在三菱PLC中怎么编程啊、有实例程序吗、
- 三菱plc编程每按一下重新计时程序
- 三菱plc编程实例3 洗手间冲
- 能给我发个VB与三菱PLC通讯的源代码实例吗,非常感谢啊
- 三菱PLC控制步进电机的最简单的程序
- 求三菱PLC模拟量程序例子
循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。在程序运行时,位于FOR~NEXT间的程序反复执行n次(由操作数决定)后再继续执行后续程序。循环的次数n=1~32767。如果N=-32767~0之间,则当作n=1处理。使用循环指令时应注意:1)FOR和NEXT必须成对使用;2)FX2N系列PLC可循环嵌套5层;3)在循环中可利用CJ指令在循环没结束时跳出循环体;4)FOR应放在NEXT之前,NEXT应在FEND和END之前,否则均会出错。例子:1)的程序执行7次,总共执行 4×6×7=168次
波特率一般设置9600就可以了!有其它需要通讯的设备(比如触摸屏,变频器之类的)连接时可以更改,但是通讯设备 和PLC的波特率一定要一致LDX0 ORY0 ANIX1 OUTYO 这是最简单的三菱FX系列PLC控制指令表。X0为启动X1为停止YO 为输出。你把它输入三菱FX系列编程软件然后转化成梯形图就能看懂了。我的邮箱guo11yang@sina.com 不懂问我三菱FX系列PLC其他问题。但是说明不给红旗恕我不与回复。
是啊,我也是刚做完这个实验,用三菱FX3U/PLC和欧姆龙绝对编码器做的,鉴相式双向高速计数器有专用的计数器C251 C252 ......C255等,C251在表格上X0对A相,X1对B相,用PC监控,或用触摸屏显示C的数据,用手转动编码器,就可以看到脉冲数增加或缩小了
你想问的是三菱plc编程的计时指令程序吧,以下是一个简单的计时指令的plc程序。
1、以X0输入端作为计时开始信号,当PLC内部接收到计时信号时,位软元件X1接通。在左母线处直接输入“ld x0”,就可以在梯形图中输入。
2、以T0作为PLC内部计时器,注意计时器的类型:T0~T199表示100ms通用定时器,T200~T2451表示0ms通用定时器,可以在输入信号后端输入“out t0 k30”,k30表示3000ms,即3秒。
3、当计时结束后要有输出信号,这个输出信号可以控制外部设备,也可以作为警示灯,这里以Y0做为输出。
4、当计时结束后,如果不断开计时器也不复位,这时计时器将保持最后数值,可以增加复位指令对C0复位。在完成之后,可点击测试按钮进行仿真。
5、在逻辑测试对话框可以增加位元件监控画面,点击菜单的“软元件”,然后选择“软元件窗口”,选择X和Y,即可对所编程序的输入和输出进行操作和监控。
6、在X输入对话框中,如果点击一次输入按钮可以将输入自锁,点击两次自锁解除。当点击X0后等待3秒,这时Y0将输出。如果点击两次X1,则可以对计时器复位,复位后重新计时。
三菱plc计时程序编程实例,该plc计时程序利用plc中的“c”计数器完成计时。
我只提供西门子PLC梯形图,你把指令代替一下就可以用到你的程序中TITLE=程序注释
Network 1 // 网络标题
// I0.0表示光电开关 T32 表示3秒延时,C0表示2秒冲水sm0.5 表示1秒脉冲,T33表示走后3秒冲水
LD I0.0
TON T32, 3000
Network 2
LD T32
AN M0.1
O M0.0
= Q0.0
Network 3
LD SM0.5
A Q0.0
LDN I0.0
CTU C0, 2
Network 4
LDN Q0.0
R M0.1, 1
Network 5
LD C0
S M0.1, 1
Network 6
LD Q0.0
A I0.0
TON T33, 200
Network 7
LD M0.0
TON T34, 300
得说明是什么型号的PLC啊,串口还是网口,VB6还是VB.NET?
算了,写段代码,VB.NET与Q系列以太网通讯的:
Imports?System.Net
Imports?System.Runtime.InteropServices
Public?Class?Form1
????Dim?Handle1?As?Int32
????Dim?EntLink1?As?Boolean
????Dim?ScanCount1?As?Long
????Dim?PLC?As?New?EntQsPlc_Asc.PlcClient’EntQsPlc_ASC.DLL是Q系列以太网通讯组件
????Public?Declare?Function?timeGetTime?Lib?“winmm.dll“?()?As?UInt32
????Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
????????Me.CenterToScreen()
????????cmbReadMry.Items.Clear()
????????cmbReadMry.Items.Add(“X“)
????????cmbReadMry.Items.Add(“Y“)
????????cmbReadMry.Items.Add(“M“)
????????cmbReadMry.Items.Add(“D“)
????????cmbReadMry.Items.Add(“R“)
????????cmbReadMry.Items.Add(“Z“)
????????’
????????cmbWriteMry.Items.Clear()
????????cmbWriteMry.Items.Add(“X“)
????????cmbWriteMry.Items.Add(“Y“)
????????cmbWriteMry.Items.Add(“M“)
????????cmbWriteMry.Items.Add(“D“)
????????cmbWriteMry.Items.Add(“R“)
????????cmbWriteMry.Items.Add(“Z“)
????????’
????????cmbBitMry.Items.Clear()
????????cmbBitMry.Items.Add(“X“)
????????cmbBitMry.Items.Add(“Y“)
????????cmbBitMry.Items.Add(“M“)
????????’
????????cmbReadType.Items.Clear()
????????cmbReadType.Items.Add(“INT16“)
????????cmbReadType.Items.Add(“UINT16“)
????????cmbReadType.Items.Add(“DINT32“)
????????cmbReadType.Items.Add(“HEX32“)
????????cmbReadType.Items.Add(“REAL32“)
????????cmbReadType.Items.Add(“BIN16“)
????????’
????????cmbWriteType.Items.Clear()
????????cmbWriteType.Items.Add(“INT16“)
????????cmbWriteType.Items.Add(“UINT16“)
????????cmbWriteType.Items.Add(“DINT32“)
????????cmbWriteType.Items.Add(“HEX32“)
????????cmbWriteType.Items.Add(“REAL32“)
????????cmbWriteType.Items.Add(“BIN16“)
????????cmbReadMry.SelectedIndex?=?3
????????cmbWriteMry.SelectedIndex?=?3
????????cmbBitMry.SelectedIndex?=?2
????????cmbReadType.SelectedIndex?=?0
????????cmbWriteType.SelectedIndex?=?0
????????lstRead.Items.Clear()
????????txtWrite.Text?=?““
????????’
????????cmbCmdType.SelectedIndex?=?0
????End?Sub
????Private?Sub?butLink_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butLink.Click
????????Dim?re?As?Short
????????Dim?restr?As?String?=?““
????????re?=?PLC.EntLink(Trim(txtLocalIP.Text),?Val(txtLocalPort.Text),?Trim(txtRemoteIP.Text),?Val(txtRemotePort.Text),?“DEMO“,?Handle1,?1000,?CBool(cmbCmdType.SelectedIndex))
????????txtReLink.Text?=?re.ToString
????????If?re?=?0?Then
????????????EntLink1?=?True
????????????MsgBox(“PLC联接成功!?“)
????????Else
????????????EntLink1?=?False
????????????MsgBox(“PLC联接失败:?“?&?restr)
????????End?If
????End?Sub???????????
????Private?Sub?butClose_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butClose.Click
????????Dim?re?As?Short
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????re?=?PLC.DeLink(Handle1)
????????txtReClose.Text?=?re.ToString
????End?Sub
????Private?Sub?butRead_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butRead.Click
????????Dim?re?As?Short
????????Dim?i?As?Short
????????Dim?RD()?As?Object
????????ReDim?RD(Val(txtReadCnt.Text?-?1))
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????’?Exit?Sub
????????End?If
????????Dim?mry?As?EntQsPlc_Asc.PlcClient.PlcMemory?=?cmbReadMry.SelectedIndex?+?1
????????Dim?typ?As?EntQsPlc_Asc.PlcClient.DataType?=?cmbReadType.SelectedIndex?+?1
????????re?=?PLC.CmdRead(Handle1,?mry,?typ,?CInt(txtReadAdd.Text),?CUShort(txtReadCnt.Text),?RD)
????????txtReRead.Text?=?re.ToString
????????lstRead.Items.Clear()
????????For?i?=?0?To?UBound(RD)?Step?1
????????????If?Not?IsNothing(RD(i))?Then?lstRead.Items.Add(RD(i))
????????Next?i
????????If?re?《》?0?Then
????????????Timer1.Enabled?=?False
????????????butScan.Text?=?“Cycle?R/W“
????????End?If
????End?Sub
????Private?Sub?butWrite_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butWrite.Click
????????Dim?re?As?Short
????????Dim?i?As?Short
????????Dim?temp()?As?String
????????Dim?WD()?As?Object
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????ReDim?WD(Val(txtWriteCnt.Text)?-?1)
????????temp?=?Split(txtWrite.Text,?vbCrLf)
????????For?i?=?0?To?UBound(WD)?Step?1
????????????If?i?》?UBound(temp)?Then
????????????????WD(i)?=?0
????????????Else
????????????????WD(i)?=?Trim(temp(i))
????????????End?If
????????Next?i
????????Dim?mry?As?EntQsPlc_Asc.PlcClient.PlcMemory?=?cmbWriteMry.SelectedIndex?+?1
????????Dim?typ?As?EntQsPlc_Asc.PlcClient.DataType?=?cmbWriteType.SelectedIndex?+?1
????????re?=?PLC.CmdWrite(Handle1,?mry,?typ,?CInt(txtWriteAdd.Text),?CUShort(txtWriteCnt.Text),?WD)
????????txtReWrite.Text?=?re.ToString
????????If?re?《》?0?Then
????????????Timer1.Enabled?=?False
????????????butScan.Text?=?“Cycle?R/W“
????????End?If
????End?Sub
????
????
????Private?Sub?butScan_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butScan.Click
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????Timer1.Enabled?=?Not?Timer1.Enabled
????????If?Timer1.Enabled?Then
????????????ScanCount1?=?0
????????????butScan.Text?=?“Stop?R/W“
????????Else
????????????butScan.Text?=?“Cycle?R/W“
????????End?If
????End?Sub
????Private?Sub?Timer1_Tick(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Timer1.Tick
????????Timer1.Enabled?=?False
????????Dim?tim?As?Integer?=?timeGetTime
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????’
????????Call?butRead_Click(Nothing,?Nothing)
????????Call?butWrite_Click(Nothing,?Nothing)
????????’
????????If?(Val(txtReRead.Text)?《?0)?Or?(Val(txtReWrite.Text)?《?0)?Then
????????????butScan.Text?=?“Cycle?R/W“
????????????Exit?Sub
????????Else
????????????ScanCount1?+=?1
????????????txtScanCnt.Text?=?ScanCount1
????????????txtScanPrd.Text?=?(timeGetTime?-?tim)?&?“ms“
????????End?If
????????Timer1.Enabled?=?True
????End?Sub
????Private?Sub?butBitTest_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butBitTest.Click
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????Dim?rd?As?Boolean
????????Dim?re?As?Short
????????Dim?mry?As?EntQsPlc_Asc.PlcClient.PlcMemory?=?cmbBitMry.SelectedIndex?+?1
????????re?=?PLC.Bit_Test(Handle1,?mry,?CUShort(txtBitAdd.Text),?rd)
????????txtBitTest.Text?=?rd
????????txtReBit.Text?=?re
????End?Sub
????Private?Sub?butBitSet_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butBitSet.Click
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????Dim?re?As?Short
????????re?=?PLC.Bit_Set(Handle1,?cmbBitMry.SelectedIndex?+?1,?Val(txtBitAdd.Text))
????????txtReBit.Text?=?re
????End?Sub
????Private?Sub?butBitRst_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?butBitRst.Click
????????If?Not?EntLink1?Then
????????????MsgBox(“还未与PLC建立联接!“)
????????????Exit?Sub
????????End?If
????????Dim?re?As?Short
????????re?=?PLC.Bit_Reset(Handle1,?cmbBitMry.SelectedIndex?+?1,?Val(txtBitAdd.Text))
????????txtReBit.Text?=?re
????End?Sub
End?Class
M206:正转
M207:反转
Y0:脉冲输出
Y1:反转信号
D4200:频率(用于控制速度,数据来源于触摸屏)
K99999999:脉冲数量
K100:加速时间
向左转|向右转
如图,这个就是一个步进电机的正反转的运行,Y0接步进驱动器的脉冲,Y1接步进驱动器的方向,M0为ON时正转,M1为ON时反转,D0是脉冲的频率,D1是脉冲的个数。
移动速度和脉冲频率有关,在细分数一定的条件下,频率越高速度越快,行走的距离和脉冲个数有关,脉冲个数越多,行走距离越长,(在三菱这个指令中,脉冲个数为0时,是一直运行,相当于无限个数),具体的移动速度和行走距离得根据你的设置(频率,细分数,脉冲个数等)和硬件(包括步进电机的步距角,丝杆的丝距,齿轮组的齿轮比,齿轮带的传送比等)来调节。
LD M0
TO K0 K17 H0 K1
TO K0 K17 H2 K1
FROM K0 K0 D0 K1
;选择ad输入通道1
;启动输入通道1的ad转换
;把通道1的当前值存入寄存器d0
LD M2
TO K0 K17 H1 K1
TO K0 K17 H3 K1
FROM K0 K0 D2 K1
; 选择ad输入通道2
;启动输入通道2的ad转换
;把通道2的当前值存入寄存器d2
LD M4
TO K0 K16 D4 K1
TO K0 K17 H4 K1
TO K0 K17 H0 K1
;d4是数值的模拟信号输出,值在0--255之间
;启动输出通道的da转换处理
;在指令使m0 m2 m4循环接通断开
;d0 输入1通道当前值,d2输入2通道当前值,d4输出通道当前值。
FX2N-2AD性能介绍:
一、电路接线
FX2n-4AD通过扩展电缆与PLC主机相连,四个通道的外部连接则根据外部输入电压或电流量的不同而不同。
应注意以下几点:
1、外部输入为电压量信号,则将信号的+、-极分别与模块V+和VI-相连
2、若外部输入为电流量信号,则需要把V+和I+相连。
3、如有过多的干扰信号,应将系统机壳的FG端与FX2n-4AD的接地端相连。
二、性能指标
1、电源
FX2n-4AD的外接电源为24V,上下波动不得超过2.4V,电流为55mA。
2、转换特性
3、模拟量模块的性能说明
(1)4个输入点可同时使用。
(2)输入电压为-10V~+10V,如果绝对值超过15V,则可对单元造成损坏。
(3)12位转换结果以二进制补码形式存放。最大值2047,最小值-2048。
(4)分辨率电压为1/2000,5mV,电流为1/1000,20uA。
(5)总体精度1%。
(6)转换速度6~15ms。
标签:?? 输入 In and