基于台达PLC的步进电机控制<续一>
一、步进电机的控制使用LD语言实现
在该程序段中,涉及X、Y轴动作有,单次相对位置运动、点动、回零、当前位置设为零位、停止等。
二、按照预设路径进行动作
在该路径控制程序段中,回字型运动。涉及XY双轴的交替关联。
三、基于台达触摸屏程序进行仿真
四、基于C# GDI+ 绘制步进电机动作路劲
通过C#读取PLC的数据请参看
基于C# 读写PLC数据
使用C# GDI+绘图及擦除功能请参看
基于C# GDI+ 绘图及擦除
此处不再赘述。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace readPLCData
{public partial class Form1 : Form{public Form1(){InitializeComponent();//解决跨线程访问问题CheckForIllegalCrossThreadCalls = false;}private void DrwaAxis(){//绘制坐标轴Graphics gr = panel1.CreateGraphics();Pen pen1 = new Pen(Color.Black);gr.DrawLine(pen1, new Point(0, 500), new Point(1000, 500));gr.DrawLine(pen1, new Point(500, 0), new Point(500, 1000));}Modbus.Device.ModbusIpMaster ipMaster;TcpClient tcpClient;Graphics g;bool start;private void Button1_Click(object sender, EventArgs e){if (button1.Text == "开始"){button1.Text = "停止";DrwaAxis();start = true;//开启线程,用于读取数据Task.Run(() =>{DrawLine();});//连接PLCtry{tcpClient = new TcpClient();tcpClient.Connect(IPAddress.Parse("192.168.1.5"), 502);ipMaster = Modbus.Device.ModbusIpMaster.CreateIp(tcpClient);}catch (Exception){MessageBox.Show("连接PLC失败");}}else if (button1.Text == "停止"){button1.Text = "开始";start = false;//关闭PLC连接tcpClient.Close();ipMaster.Dispose();}}bool[] draw = new bool[2];bool xStep, yStep;Point p1 = new Point(500, 500);Point p2 = new Point();int i =1;private void DrawLine(){while (start){try{draw = ipMaster.ReadCoils(125, 2);lbl_Step.Text = draw[0].ToString() + "-" + draw[1].ToString();}catch (Exception){txtb_Message.AppendText("读取单次状态失败");}if (draw[0] || draw[1]){try{var res = ipMaster.ReadHoldingRegisters(1000, 9);if (res.Length == 9){float x = GetIntFromUshortArray(new ushort[] { res[1], res[0] });float y = GetIntFromUshortArray(new ushort[] { res[3], res[2] });p2.X = (int)(x / 100) + 500;p2.Y = (int)(y / 100) + 500;lbl_X.Text = x.ToString();lbl_Y.Text = y.ToString();txtb_Message.AppendText(i.ToString() + ": "+ "X:" + x.ToString() + " " + "Y:" + y.ToString() + "\r\n");i += 1;}}catch (Exception){txtb_Message.AppendText("读取x、y失败");}Pen pen = new Pen(Color.Red);g = panel1.CreateGraphics();//CreateGraphics();g.DrawLine(pen, p1, p2);p1 = p2;}}}#region ***定义功能函数 GetFloatFromUshortArray***private int GetIntFromUshortArray(ushort[] p){List<byte> result = new List<byte>();result.AddRange(BitConverter.GetBytes(p[0]));result.AddRange(BitConverter.GetBytes(p[1]));byte[] b = new byte[4];b[0] = result[2];b[1] = result[3];b[2] = result[0];b[3] = result[1];//高位在后,低位在前// float aa = BitConverter.ToSingle(b, 0);// string str = FloatToHex(aa).ToString();// float bb = HexToFloat(str);//return BitConverter.ToSingle(b, 0);return BitConverter.ToInt32(b, 0);}#endregionprivate void Btn_ClearPanel_Click(object sender, EventArgs e){i = 1;p1.X = 500;p1.Y = 500;Graphics grap = panel1.CreateGraphics();SolidBrush sb = new SolidBrush(this.BackColor);Rectangle r = new Rectangle(0, 0, 1000, 1000);grap.FillRectangle(sb, r);DrwaAxis();}}
}
运行起来即可捕捉双轴路径。
如下图:
右侧文本框中使用村村错误信息以及每次划线时的X Y坐标。
注:若在路径图中出现斜线时,并非双轴联动出现问题,而是因为X轴或Y轴完成时,触发(M125和M126)时间太短,上位机未检测到该状态变为True。请自行调试。
所有资源已打包,基于台达PLC的步进电机控制方案,欢迎下载。
五、自动路径功能中添加限位功能
例如:当X轴正限位触发时,需得停止正向的动作,且此时不允许进行正向的动作,同理反向一样。此时,将自动路劲功能拆分为X轴正向--------Y轴正向---------X反向--------Y反向到的动作。循环往复,完成设定的圈数后停止。
自动路劲控制段程序修改如下:
该部分的PLC程序加上位机程序已打包,基于台达PLC的步进电机控制方案<续>欢迎下载调试。
基于台达PLC的步进电机控制<续一>相关推荐
- 基于台达PLC的水箱液位PID控制(matlab处理数据)
1.实验目的 (1)掌握过程控制的方法: (2)熟练掌握台达编程技巧: (3)熟悉实验室水箱系统.变频器的接线方法: (4)学会用文件寄存器来读取数据并处理数据: (5)学会台达PLC内部PID控制器 ...
- 台达PLC水箱液位控制系统参数整定及开环辨识
水箱液位控制系统控制实现及开环辨识 本文摘自我的实验报告 单回路水箱液位控制系统参数整定 利用单回路水箱液位控制系统的算法进行控制系统参数设计.按照如下步骤进行参数的整定. 将硬件按照算法所设计的硬件 ...
- 台达PLC进行PID控制程序编写实例
以下是一个简单的使用台达PLC进行PID控制的程序编写实例: 首先,需要在PLC中配置PID模块,包括设置输入.输出信号的类型和范围,以及设置PID参数. 在程序中定义需要控制的变量和PID参数变量. ...
- 台达PLC控制步进电机
一.步进电机原理与结构 步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件. 步进电机收到一个脉冲,步进电机走一个步距角. 在非超载的情况下,电机的转速.停止的位置只取决于控制脉冲信号的 ...
- 台达PLC与台达VFD变频器modbus 通讯案例 完成PLC与变频器的modbus RTU通讯,实现触摸屏上控制变频器启停,设置频率
台达PLC与台达VFD变频器modbus 通讯案例 配件:台达DVP 14es的PLC,台达VFD M变频器. 昆仑通态触摸屏和威纶通触摸屏 功能:完成PLC与变频器的modbus RTU通讯,实现触 ...
- 三菱FX系列PLC和台达ASDA-B2伺服驱动器位置控制接线和程序示例
三菱FX系列PLC和台达ASDA-B2伺服驱动器位置控制接线和程序示例 如下图所示,为台达ASDA-B2伺服驱动器的接线实物图,其中CN1接各种I/O控制信号,CN2接伺服电机编码器反馈线, CN1接 ...
- 台达PLC远程监控与数据采集方案
一.远程监控台达PLC的意义: 随着物联网的快速发展,通过手机微信小程序或PC终端对设备系统的控制单元台达PLC的运行进行远程预警监控的技术已经非常成熟.基于手机微信小程序或PC终端的台达PLC远程监 ...
- 如何实现台达PLC与上位机的数据通讯?
台达PLC是国产PLC品牌中性价比较高的一款,具备简单易操作的编程模式.稳定可靠的性能,在工业控制领域中应用广泛.在实际使用过程中,通过台达PLC进行生产设备的管理控制,需要数据采集传输,一般在触摸屏 ...
- 台达plc读取变频器电流案例_PLC模拟量信号数据转换过程
模拟量信号是自动化过程控制系统中最基本的过程信号(压力.温度.流量等)输入形式.系统中的过程信号通过变送器,将这些检测信号转换为统一的电压.电流信号,并将这些信号实时的传送至控制器(PLC),PLC通 ...
- 台达plc自由口通讯_【台达PLC详解】附PLC功能总简介~
一).可编程控制器的应用 1.开关量逻辑控制:电动机启动与停止 2.运动控制:对步进电动机或伺服电动机的单轴或多轴系统实现位置控制 3.过程控制:对温度.压力.流量等连续变化的模拟量进行闭环控制 4. ...
最新文章
- mysql的高级特性
- Android Studio 分析器详解
- eclipse怎么创建web项目html,eclipse入门之创建第一个web程序(jsp测试环境)
- 天地伟业tiandy如何连手机_关注 | 天地盖手工盒裱纸选铜版纸还是白牛皮纸?
- 难题:嵌套computeIfAbsent
- ccs7调试linux,【图片】【吧主帖】在LINUX(ubuntu)系统下装CCSv6方法(原创)【dsp吧】_百度贴吧...
- mysql索引 实验_“索引”实验小例
- win7系统关闭445端口批处理脚本
- 12月21诛仙服务器维护,12月31日全服停机更新维护公告
- AI,让大海永远蔚蓝如诗
- Vue的一些知识汇总---希望对你有用
- 移动端300ms延迟的由来及解决方案
- 对 Groovy 进行单元测试
- 原型图都可以用什么软件做?分享这9款给你
- 文件存储:Tape Backup 磁带备份
- MySQL组件和数据结构
- es相同条件搜索多次返回结果不一样
- DSP第一次上机作业
- 个人永久性免费-Excel催化剂功能第91波-地图数据挖宝之行政区域信息实时下载(含经纬度)...
- HP 8770W改硬件ID安装GTX980M驱动