漏型源型的相关概念
三菱PLC的信号输入的接线过程中是以输入点X作为参考点,以信号从这个输入点(X点)的流入还是流出来判断是源型接法还是漏接法。信号从X点流入称为源型接法,信号从X点流出称为漏型接法。
而在西门子PLC中以输入端的公共端M作为参考点,以信号从输入信号端的公共端(M点)流入称为源型输入,以信号从输入信号端的公共端(M点)流出,称为漏型输入。
因此,这也是为什么会出现在三菱的PLC中称为源型接法,但却在西门子PLC里面却是称为漏型接法的原因
下面主要讲的是西门子plc的
PLC分为漏型和源型
漏型可以这么理解,电流流出输入口i的称为漏型
源型可以这么理解,电流流入输入口i的成为源型
npn传感器在西门子plc中的接法是源型接法,因为公共端com接的是24v
pnp则是漏型,com接0v
在三菱中则相反,因为三菱的漏型源型接法是根据输入信号口的电流流向的
机器人实操课程总结
全部的硬件加使用软件
PlC:smart200 软件step7-microwin
其他:步进电机,驱动器,输送带,推料部分
机器人:众为兴四轴scara机器人
相机:大恒相机
视觉软件:adtvision
机器人软件:arstudio
螺丝部分:螺丝枪,螺丝存储和输送装置
项目一:码垛
1、码垛搬运+PLC传送带+推料
编程部分:
PLC:主要是把物料退出来
利用存料站的两个传感器,缩回到位和推出到位的传感器,实现用一个按钮(或者一个信号)控制物料的推出的过程
除此之外,在推出完物料之后,PLC延时一会给机器人发送一个脉冲信号,让机器人来抓取物料
在这个过程中需要注意的点主要是信号的置位和复位需要理清,当你不需要这个信号置位或者复位的时候,要及时将其置位复位的指令清除
机器人:
一些基本的运动指令 MarchP(),DO(),Delya()这类的指令
还有码垛指令:SetPlt() GetPlt()这两个指令的实现规则码垛摆放的
详细的可以查询指令手册
总结:该项目PlC吸收到的经验是置位复位的线圈要注意,机器人吸收到的知识是两条指令setplt和getplt这两条指令,setplt是设置码垛摆放的一些参数,,getplt是读取码垛模型对应哪个点的数据
项目二 打螺丝
一、硬件介绍:
螺丝枪:螺丝枪主要有两个线圈,一个线圈是输入线圈如果接通是控制螺丝枪的开启,一个线圈是输出线圈如果接通通则会返回一个信号,这个信号代表的是螺丝已经打好。
螺丝存储和输送装置:主要有一个电源线,一个输出信号线,这个输出信号线输出的是存储站还有无螺丝
硬件接线: 螺丝枪的输入信号线我接到了机器人的输出信号7口,螺丝枪的输出信号线我接到的是机器人的输入16口。螺丝存储和输送装置的输出信号线,我接到的是PLC的I0.1口
二、编程部分:
PLC:
利用螺丝枪的输入信号来让一个输出线圈得电就好了,这个输出线圈接到机器人的输入信号口去。
机器人:
机器人用到的指令:一些运动指令MarchP(),DO之类的
较项目一多应用的指令是teach(),sysrate(),MovLR()
指令解析:teach(x)指令是把机器人当前所在位置的数据赋值给x
sysrate()指令是调节当前机器人的运行速率
MovLR()指令是令机器人以所选轴相对移动的方式直线运动到对应位置
此次项目机器人程序用到的一种新的程序思路,再次总结一下
1、机器人的初始化程序
在这次的初始化程序中,应用了teach()指令去读取机器人当前的点位信息,通过判断指令判断当前的x,y处于哪个区域,并执行对应的初始化程序到达安全点。
还用了sysrate()指令来提前设置机器人的运行速率
2、由于打螺丝的位置比较规律,所以用了码垛指令去获取对应的点位
3、在这次项目中打螺丝的部分其实没有那么难,就是先用运动指令移动机器人到存储区域去把螺丝吸起来,然后在按照轨迹移动到目标点上方一段距离,然后打开螺丝枪的启动信号,然后用MovLR指令移动z轴往下移动,这个程序还可以继续改进(未完待续)
项目三、打磨物件
一、硬件介绍:
磨轮打磨机:砂轮和毛轮
需接电线:两根220v的交流电线,一根地线
二、硬件接线
把两根电源线接在继电器上的常开口上,然后再拉一根机器人的信号线来控制这个继电器的开关
三、编程部分:
PLC:暂无
机器人:
机器人用到的指令:一些运动指令MarchP(),DO之类的
这里面值得注意的是用了MovLR指令去控制机器人做圆弧的打磨运动
知识点:
由于我们的打磨物件是一个正方形,它的四个边角是一个圆角的物件,任务的要求是把这个物件的边给它打磨了,在一开始我想用定点的方法去做,但是后来学习到了新的知识点,想到了用工具坐标去做这个项目,可以把工件的四个圆角的圆形那里定四个工具坐标,然后绕着那四个工具坐标镜像单轴旋转运动就可以把它的四个边角给打磨了,指令用的是MovLR指令。
工具坐标可以通过计算出来。
计算方法:
把机器人移动到零点的位置,然后再安装上工具,这时候,工具的四个角的方向就与工具0的坐标轴方向是一致的,这样我们就可以通过工件的尺寸算出对应四个点的工具坐标的数据。
项目四、机器人配合相机实现静态视觉的任务
一、硬件介绍:
大恒相机(黑白)一台
二、编程部分:
PLC:暂无
上位机视觉软件:
主要介绍一下任务流程里面的九点标点和通讯部分
1、九点标点:
很简单的算法, 先准备好一张九宫格的纸,然后,让相机采集这张图像,然后找到对应的九个点,然后软件会计算出这九个点在这张照片里面的像素位置,这个时候,我们把机器人在相对于用户坐标系里面对应这个九个点的坐标数据输入进去就能完成像素与机器人坐标的转换
2、通讯:
机器人与上位机采用的udp协议进行通讯,在那个通讯模块中,我们需要做的是填写机器人对应网口的ip地址和机器人自己的ip地址。
机器人:
机器人的静态视觉模块主要有参数设置和指令两个模块。
我们先来说一下机器人的参数设置模块
首先,我们要把模式选择成static模式,然后把通讯协议设置成udp协议,然后,然后相机的触发方式设置成网络触发,接线来就是最重要的部分也就是机器人接受上位机软件发送过来的数据的格式,我们们这里选择的是no,x,y,c这四个参数,这个在上位机软件中也要对应的设置好,不然程序中接受的数据就会是空值nil,最后选择想要的用户坐标和 工具坐标就行了
接下来说一下程序的部分:
程序部分主要只有几个指令
1、CCDclr():这是清除网络托管ip
2、CCDsent():向上位机软件发送数据的指令
3、CCDrecv():机器人接收上位机软件发送过来的数据的指令
4、initTCPnet():初始化网络ip和端口
总结:
在这次的项目中,机器人做了什么不应该是我应该注重的,应该认识到的是机器人的静态视觉只是一种方法,我们要理解这种方法的内在含义,首先是理解机器人为什么能通过一张照片就能准确的判断物料的坐标,第二是了解机器人如何配置静态视觉的步骤,机器人配置静态视觉,自己总结的步骤有如下,首先肯定是配置它的参数,然后就是指令配置,指令第一个是初始化网络端口和ip,然后是清除网络托管ip,这个是为了防止冲突,然后就是发送指令给上位机软件让它实现拍照,最后自然就接受上位机软件处理相机数据之后发过来的物料的坐标信息了
项目五、动态视觉
一、硬件介绍:
一台大恒相机(黑白),一个编码器
二、硬件接线:
传送带模块的电机部分那里的编码器接到机器人的编码器接口
三、编程部分:
PLC:利用项目一里面的推料的那个程序,然后把那个按钮的控制信号,并联一个机器人发过来的一个信号来控制就行
除了推料部分外,还多加了个传送带的部分,电机主要是靠PLC进行控制的
电机的控制主要利用了step7-microwin里面的PWM模块,当机器人开始启动的时候,传送带模块就开始运作。
上位机视觉软件:
和静态视觉不一样的地方是,把采集图像模块里的相机的触发源从software改成linex,看你接的是机器人的哪个口来决定的,去看技术手册,
在静态和动态的项目中,要注意的一个点是在作业设置里面的相机的触发模式改成外部触发,
机器人“
机器人的动态视觉也分参数设置和程序指令两部分
先说一下动态视觉的参数设置怎么弄的,首先,我们要把视觉模块里面的模式改为follow,其他的那些ip什么的和静态的差不多,然后我们要把相机的触发模式改成端口触发,根据机器人所设置的触发端口来决定,然后讲一下动态视觉和静态视觉的区别,动态视觉和静态视觉的区别就是动态视觉多加了个编码器,编码器需要机器人跟随传送带移动,然后记录相对应两个点位的机器人坐标和编码器的数据,这是为了机器人动态跟随时候的算法所服务的,动态视觉第二个和静态视觉不同的地方就是,动态视觉还需要设置一些视觉参数,比如左右,前后限位这些,还有最大动态跟随时间,最大移动距离限位,开始跟随位置参数这几个,在这之中,最大跟随时间和最大移动距离限位和开始跟随位置参数,前两个很好理解,就是从机器人开始跟随状态时候开始到结束的极限时间和极限位置,第三个开始位置参数这个是最重要的一个参数,它数值大小是根据你用户坐标的原点位置x轴方向到目标点的距离,
接下来,我们来说一下机器人动态视觉的指令
首先,机器人的动态视觉,采用了双线程的方法,也就是两个cpu同时工作的方法,这时候,我们就需要编写两个程序了。
先讲一下cpu1,cpu1里面主要功能是初始化,和接受和处理相机发过来的数据。
初始化指令 FollowInit()--动态跟随初始化
还有CCDrecv()数据接受指令
还有一条是SetViewData(pos) --把pos位置点的信息,放到动态模块的暂存处里面去,在cpu2中调用
触发拍照,由动态模块参数设置里面负责了
再讲一下cpu2,cpu2里面是负责把cpu1里面发送过来的数据利用起来,配合动态跟随指令
动态跟随指令有什么呢,
第一条就是GetCatchSpace()--读取物料是否到达抓取区域 返回值是0或者1
第二条就是GetSynPos()--获取cpu1里面SetViewData()的点位数据, 有两个返回值,一个返回值是是否进入抓取区的标志位,另一个返回值是工件的位置和模板信息
第三条就是SetCatch() --执行这条指令,机器人就会进入动态抓取的状态
最后一条是GetCatchState() --读取机器人在动态抓取状态中的状态
总共有四种状态
0 抓取结束,即正常抓取结束
1 开始运动,即从当前点运行到目标点,并同速同位。
2 进入同步,已经同步成功,已开始同速同位。
3 错误退出,超出抓取区,无法完成同步抓取。
总结,在动态抓取中,参数的配置是最麻烦的,程序方法,类似于套模板,动态抓取这一部分的程序,可以用一套模块就可以搞定,我们需要设计的是当机器人抓取完这个物料后,将其对应放置到哪一个地方这一部分的程序,
总结,经过这次的学习,我觉得在学习新的机器人操作技巧的时候,读熟技术文档是最重要的。