2018.5.14

前记

今天开了个新坑,准备用codesys做一个delta机械臂的程序,如果过程顺利再加上老师支持的话可能会做一个3D打印机,emmm。。。。

不过这首先是个PLC的课程作业,先要实现最基础的功能,老师给定的要求如下:

看起来很简单的嘛哈哈哈。。。。

不过不知道该怎么下手啊 。。。。

看了师兄们以前的作业。。。。

。。。。这么复杂!什么鬼!完全看不懂!

 

老师在课上讲了如下这些【有用】的内容:

反正就是相当于老师讲了1+1=2,然后说大家证明一下哥德巴赫猜想吧~

。。。。

好吧,下面开始正题。

 

○ 平台 CoDeSys V3.5SP8

 

〇 思路分析:

先给自己定个(小)目标:

○ 模块化可移植,现在softmotion上模拟,条件成熟后要能在rte上运行。

○ 能接收切片软件生成的G代码,能用上位机控制。

(等待补充)

 

 预期步骤:

1、首先,一口吃不成个胖子,先按照老师讲的,添加轴,然后各种功能块,能实现轴的单独点动,嗯。

2、然后,能实现坐标轴方向的单轴点动,并实现必要的复位和报警功能。

3、再然后,能实现运动到指定点。

4、再再然后,能实现自动运行。

5、设计优化界面,能够达到作业要求并能够显示运行轨迹。

6、连接步进电机在现有的delta平台上能够正常运行。

7、(未完待续。。。。2018.5.16)

 

现在有条件实现的大概就以上这些,看完成情况和老师的支持程度再决定接下来的任务(其实接下来要干嘛我也不知道。。。)。

 

❤ 2018.5.16

〇 第一步:实现单个电机的点动。

今天想了下,直接实现坐标轴方向的点动确实比较困难(关键是不会),所以先做个能够实现单个单机的电动,这个在作业里虽然没有什么用,但是还是很有实际意义的,比如手动调零什么的时候。

主程序:

这个是现在的界面:

用的都是功能块自带的界面,能够实现单个电机的点动,没有急停没有重置没有报错啥啥都没有。。。

不过确实实现了第一步。

 

〇 第二步:实现坐标轴方向的单轴点动,并实现必要的复位及报警功能。

思路:

    点动嘛,肯定是按照坐标轴的方向去运动,但是如果直接在三个轴上关联MC_Jog功能块,那点动的就是三个电机,其末端轨迹肯定不是坐标轴方向的,如果要实现坐标轴方向的运动,三个电机肯定是以某种方式联动的。

    我最开始的想法是,点动按钮并不直接关联MC_Jog功能块,而是执行一个当前位置的自增/自减运算,然后再将运算后的结果进行反解,最后实现单轴方向的点动。但是缺点就是,运算显示的数值和当前轴的实际位置肯定不同步,而且几乎无法做到长按按钮的时候沿坐标轴方向连续运动且松开按钮时运动停止。

    不过我运气很好,师兄们以前做过delta机械臂的程序,但是和我的不太一样,不过从原理来说是一样的。师兄实现的方法是,把实际的电机设为三个实轴,XYZ方向再各设置一个虚轴,点动的时候通过MC_Jog功能块控制虚轴在坐标轴方向上运动,然后把反解得到的数据通过SMC_ControlAxisByPosition功能块关联到实轴,实现实轴的运动。

    其实这个方法的关键还是对codesys功能块的熟悉,比如我要是不看师兄的程序我就不知道轴有fSetPosition这个输出值,其实好多东西都是这样,有些知识就是只有知道和不知道的区别,知道就会弄,不知道就不会,并没有掌握的程度的问题。

    (待续。。。2018.5.20)

 

♣ sfc的每个step结束那里不应该直接true,万一一次循环结束step内的语句还没执行完是不应该跳到下一个step的,所以应该在最后有一个跳转条件为true的语句。

 

○ 初始化应该包括哪些内容?

(1)回零点。(这个理论上来说应该是的,但是如果考虑到将来如果有断点续做的功能(大概不是这个名字)的话那么就应该有特殊的处理方式)

(2)(待续。。。2018.5.16)

 

❤ 2018.8.22

    关于单片机作业匆匆赶出来一个版本,勉强交上去了,不过离我预期的目标还有很远,这个是我做的界面,虽然老师要求的功能都实现了,但是xyz轴映射到三个实轴上还是没能实现,更别说连电机了。

    下面先把现在的成果贴一下:

界面:

模拟图:

主函数:

具体的功能块我就不贴了。

    总结:

    首先呢对于codesys的功能特点不熟悉,很多需要的功能找不到;然后就是对于PLC的工作方式不熟悉,很多根据PLC特点采取的编程方法都不知道,虽然有师兄们的程序可以作为参考,但是一方面自身水平有限,很多地方看不懂,另一方面师兄们的水平也有限,因此单纯地模仿也很难发挥PLC的特点;还有就是对于codesys编程语言的不熟悉,老师和师兄们推荐的编程方法是用顺序流程图作为框架,用结构化文本来实现各个功能,但是程序自带的例程很多是使用连续功能图来编写的,而且梯形图和功能块图我觉得在实现某些功能时能够使程序更直观,所以也想去尝试。

    我最终的目标是编写一个通用型的codesys程序,能实现3d打印机的功能,现在的设想是参考merlin的3d打印程序,所以目前的计划是先去了解了解基于arduino的merlin程序,然后搭建一个3d打印机平台,先能够实现3d打印的功能。

    因为本文的题目是基于codesys平台,所以arduino的3d打印机搭建我就不在这里更新了,会另开一篇笔记,这篇文章先更到这里,希望能继续完善我的codesys3d打印机^_^