loveplc 2012-2-9 23:49:29 | 显示全部楼层 | 阅读模式

『7x24小时有问必答』
理解这一篇文章,请注意先看
“用纯PLC程序做直线圆弧插补思路”
http://bbs.plcjs.com/thread-61374-1-1.html

上面说每一条代码最大有四个参数
我们定义下面的寄存器
D0(指令序号,正在执行的x条代码)
(第1条)D1 (指令代码)  D2 (第1个参数)  D3(第2个参数)  D4 (第3个参数)              D5(第4个参数)
(第2条)D6  (指令代码)  D7 (第1个参数)   D8(第2个参数)  D9 (第3个参数)                D10(第4个参数)
(第3条)D11(指令代码)   D12 (第1个参数)D13(第2个参数)D14 (第3个参数)                 D15(第4个参数)
(第4条)D16  (指令代码)  D17 (第1个参数)   D18(第2个参数)  D19 (第3个参数)         D20(第4个参数)

但是一个复杂的系统,估计有100条代码,而且有的是直线,有的是曲线,那我们怎么办呢!
这里我们举例用代码实现一个少女图像:

一共500行程序。
这是软件模拟的一个少女头像,就是上面的代码绘制出的,我们此次的目标也是就是绘制出个头衔,用点胶机!

如何把这500行程序写入PLC,是一个问题!下次在讨论!


上位机解析软件已经做成:
下载的地址:
http://bbs.plcjs.com/thread-67278-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
主题回复
倒序浏览

9403查看51回复

yt5408 2012-2-10 20:09:04
这么长(100多条)如何输入触摸屏?
人工?也太累了吧
最好是PC编好,传给HMI
yt5408 2012-2-10 20:09:15
这么长(100多条)如何输入触摸屏?
人工?也太累了吧
最好是PC编好,传输给HMI
loveplc 2012-2-10 22:40:01
PC的数据如何传给HMI呢,是用USB吧
yt5408 2012-2-10 23:49:22
看选型了
HITECH有带USB口的,
多数是2个串口,可以一个用来和PLC相连,另一个用来接收PC文件(数据)
yt5408 2012-2-10 23:50:09
我觉得串口足够了,嘿嘿
yt5408 2012-2-10 23:50:36
我觉得串口足够了,嘿嘿
yt5408 2012-2-11 01:01:00
学习G代码,并试用LV解析,看能否画出这幅图像
loveplc 2012-2-11 01:21:13
很好,我正在学习这个软件,
yt5408 2012-2-11 21:28:55
看了这个图像的G代码,还真如你所说,参数最多不超过4个,而且,只有2种指令:G0和G1,即快速回原点和直线插补,难度降低很多,你选的确实很实用!赞一个!
loveplc 2012-2-11 21:34:29
不要以为很复杂,其实是因为没有接触过,想的很神秘而已
yt5408 2012-2-11 21:35:22
先用LV做,一是想给屏程序趟个路;另外,也想为下步验证做个准备:即你所说,把PLC实际输出脉冲读入,与理论图像进行比较。LV有缩放功能,可以看的很仔细。
yt5408 2012-2-11 21:44:42
头疼的是,就这么4组G代码,还是没看明白
loveplc 2012-2-11 21:52:51
比如第一条
G00 X-67.5 Y-1710 F1000
这条指令,应该是定位到坐标X=-67.5,Y=-1710 ,速度是F1000,我们暂且认认为是1000HZ。
所以先要搞清楚现在电机的位置,然后计算定位点到目前位置的距离,然后计算出,XY轴的距离,各自运行。
loveplc 2012-2-11 21:57:56
上面是定位如果是直线插补的话,那么移动的路径就不是随便了,而是“联动”,
联动的概念应该是“你动我也动,你不动我也不动!”
loveplc 2012-2-11 22:00:59
至于怎么动,那就是算法的问题,直线插补应该好做点,算好比例,即可,圆弧就麻烦了,要有数学圆公式约束,还要不断修正轨迹,不是照搬公式就可以做到的。
yt5408 2012-2-11 22:19:49
好的,我再看看吧。
插补还好办些,有很多“先人”的范例可以参考,做起来容易些。
kakliuy333 2012-2-11 22:34:13
loveplc 发表于 2012-2-11 21:57
上面是定位如果是直线插补的话,那么移动的路径就不是随便了,而是“联动”,
联动的概念应该是“你动我也 ...

说的很对,联动是个比较难搞的话题
yt5408 2012-2-14 19:07:08
G代码里怎么还有小数点?   
yt5408 2012-2-14 20:26:54
loveplc 发表于 2012-2-11 21:52
比如第一条
G00 X-67.5 Y-1710 F1000
这条指令,应该是定位到坐标X=-67.5,Y=-1710 ,速度是F1000,我们暂 ...

X-67.5      这里,67.5的单位是什么? mm 吗?那么电机走一步的距离是多少?1微米?
这个应该先确定。
loveplc 2012-2-15 01:44:24
毫米
mrccc 2012-2-15 10:56:50
不错的项目 关注中
psukdm 2012-2-16 09:19:22
yt5408 发表于 2012-2-10 23:49
看选型了
HITECH有带USB口的,
多数是2个串口,可以一个用来和PLC相连,另一个用来接收PC文件(数据) ...

是这样的,具体做法可以参照SMT机械手贴片机的案例!
psukdm 2012-2-16 09:21:32
点胶机,完全可以参照SMT机械手的做法!
yt5408 2012-2-16 23:41:45
psukdm 发表于 2012-2-16 09:21
点胶机,完全可以参照SMT机械手的做法!

SMT机械手 是个什么东东?有介绍吗?参考一下,呵呵
yt5408 2012-2-17 05:43:10
yt5408 发表于 2012-2-14 20:26
X-67.5      这里,67.5的单位是什么? mm 吗?那么电机走一步的距离是多少?1微米?
这个应该先确定。 ...

yt5408 2012-2-17 05:44:14
本帖最后由 yt5408 于 2012-2-17 05:48 编辑


G代码读入

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
yt5408 2012-2-17 05:45:07
先读进来,下步进行解析,,,,,
kakliuy333 2012-2-18 12:55:10
很正点
917346 2012-2-20 14:47:30
没有给出算法吗,现在还在算法讨论吗?
917346 2012-2-20 17:03:19
提供一分G代码的下载吧,复制的有乱码
loveplc 2012-2-20 18:53:04
917346 发表于 2012-2-20 14:47
没有给出算法吗,现在还在算法讨论吗?

上位机,不需要多么复杂的算法,上面说每一条代码最大有四个参数,只要把这个四个参数送到PLC中即可!PLC执行完一条,反馈给上位机,上位机再发一条执行,直到执行完毕。目前在考虑PLC如何如何执行一条指令,例如上面提到的4条G代码
917346 2012-2-22 13:10:36
给一个自己在C#下的解析代码,只针对帖子中的G代码功能,其它的陆续改进中:
        {
            string str=tSource.Text;
            string[] sArray = new string[9];
            System.IO.StreamReader objFileR = new System.IO.StreamReader(System.AppDomain.CurrentDomain.BaseDirectory +
                @"cod.txt", true);//第二个参数用于指明创建文件的方式 false 新建,true 在原文件后插入
            //str=str.Replace(" ","");
            //str = str.Substring(4, str.Length - 4);
            //tSource.Text=str;
            //sArray = Regex.Split(str, "Y", RegexOptions.IgnoreCase);
            //tXvalue.Text = sArray[0];
            //tYvalue.Text = sArray[1];
            Bitmap bitmap = new Bitmap(550, 550);
            Graphics g = Graphics.FromImage(bitmap);
            Pen myPen = new Pen(Color.Green, 2);  //创建画笔
            Pen bluePen = new Pen(Color.Blue, 2);
            g.TranslateTransform(pPrint.Width / 2, pPrint.Height / 2); //坐标平移
            g.RotateTransform(-180);
            //g.DrawEllipse(bluePen, new Rectangle(-100, -100, 200, 200));
            Int32 oldX=0, oldY=0;
            do
            {
                tSource.Text = objFileR.ReadLine();
                str = tSource.Text;
                //str = str.Substring(4, str.Length - 4);
                //tSource.Text = str;
                str = str.Replace("X", ",");
                str = str.Replace("Y", ",");
                str = str.Replace("F", ",");
                sArray = Regex.Split(str, ",", RegexOptions.IgnoreCase);
                tXvalue.Text = sArray[1];
                tYvalue.Text = sArray[2];
                if (sArray[0] == "G01")
                {
                    g.DrawLine(myPen, new Point(-1*oldX / 20, oldY / 20), new Point(-1*(Int32)float.Parse(tXvalue.Text) / 20, (Int32)float.Parse(tYvalue.Text) / 20));

                }
                oldX = (Int32)float.Parse(tXvalue.Text);
                oldY = (Int32)float.Parse(tYvalue.Text);
            } while (!(objFileR.EndOfStream));
            objFileR.Close();
           
            pPrint.Image = bitmap;
            
            
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
917346 2012-2-25 22:11:08
loveplc 发表于 2012-2-20 18:53
上位机,不需要多么复杂的算法,上面说每一条代码最大有四个参数,只要把这个四个参数送到PLC中即可!PLC ...

现在PLC不都提供多轴的直线和圆弧插补吗?所以PLC在执行上应该不难。我觉得需要考虑的是G代码的语法检测,循环处理,跳转等问题。
ym96669 2012-3-17 09:31:49
提示: 作者被禁止或删除 内容自动屏蔽
loveplc 2012-3-17 19:12:52
有专门的BMP转G代码的工具软件的
小羔羊 2012-8-31 19:07:30
用这些不如直接用运动控制卡进行系统开发,比这个更有保障
loveplc 2012-12-22 15:05:06
头像尺寸太大,话个小的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
yunhai133 2017-2-28 15:30:38
品牌开源PLC技术方案,上位机开源+主机扩展模块也开源,gongkong.taobao.com
发新帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码