线下实训
HOME
线下实训
正文内容
小屏plc编程 教你用三菱PLC+HMI仿真制作《俄罗斯方块》
发布时间 : 2025-04-05
作者 : 小编
访问数量 : 23
扫码分享至微信

教你用三菱PLC+HMI仿真制作《俄罗斯方块》

很多人刚学过plc编程都想自己编程实现一个小功能或者小游戏来检验自己的学习成果,如果你学过ST(结构化)语言,那我们可以用PLC实现一个更为复杂的游戏,比如《俄罗斯方块》!本文将详细介绍如何使用三菱的ST语言来编写,在此过程中我们也可以体会ST语言的特点,感兴趣的同学可以一起探讨。

我们先看一下成品视频。

视频加载中...

需要的软件

1.GX Work2。用于编辑PLC程序。

2.GT Designer3。用于构建HMI画面。

选择三菱产品的原因有两个。一是三菱的PLC与HMI的仿真可以通讯,无需硬件;二是虽然三菱的ST支持的内容比较少,但是比较正规,上手也快。

制作HMI画面

我们先画出我们要控制的内容,规定好控制的具体变量以便于我们后面的编程。按照以下几步制作HMI画面。

1.打开GT Designer3,在弹出的窗口选择新建,随便选择一个型号的设备都可以,这里选择的是2000系列的800x600分辨率的机器,点击确定后弹出连接机器设置窗口,选择三菱的Q系列,因为我们后面要用Q系列的plc进行编程,也可以选择其他的。

选择触摸屏型号

2.在“基本画面”中新建一个画面,设置一个背景色如黑色,创建一个位指示灯作为游戏的一个像素,设定指示灯在off和on状态下的颜色和形状。可以将off状态的颜色设置为背景色,这样在off状态下这个像素就“隐身”了。

设置位指示灯

设定指示灯关联的PLC软元件,文中设定的是D0.b0,D0是一个16位的字类型软元件,我们用它的第一位来控制灯的状态。当然,既然是位指示灯你完全可以用M0等位软元件。

3.右键点击指示灯,点击“连续复制”,设置XY方向的复制的数量,勾选软元件号增量,选择复制的方向。一般俄罗斯方块的像素是20x10,这里稍微设置大一些30x16。确定后生成游戏的主屏幕,横向为X+,竖向为Y+。

连续复制

4.用上方面的方法制作一个4*4像素的预览小屏幕,再画几个控制方向和开始复位等按钮,制作完成。

控制流程

开始写一个程序时我们要先确定整个逻辑的框架,正式的项目一般还要画一个流程图,我们这里就省略流程图用文本的形式确定整个流程。

1.随机生成一个图形,缓存在预览窗口,跳转至2;

2.将预览窗口缓存的图形在主窗口的最上方显示,随机生成一个新的图形在预览窗口显示,跳转至3;

3.判断主窗口的图形是否可以下降,yes跳转至4,no判断游戏是否结束,yes跳转至100,no跳转至6;

4.将主屏幕的图形向下(Y+方向)挪动一格;跳转至5;

5.延时等待,延时结束时跳转至3。此时可以使用按钮控制图形移动和旋转;

6.此时图形无法继续向下,判断是否有一行摆满需要消除,如果有消除计算得分。跳转至2;

100.游戏结束。

整个流程可以用一个case of 语句来编写,这样程序就十分清晰可读,plc资源占用也少。

流程1,生成图形

在开始逻辑编程前我们要先将触摸屏的一维软元件(D0.b0-D29.b15)转化为我们方便操作的二维的标签(X0,Y0-X15,Y29),这样我们想要点亮一个像素只要给出一个坐标(X,Y)就可以了,要实现这个目的我们要先建立一个结构体变量“iY”,里面包含容量为16的位数组“iX”:

坐标结构体

图里面的type用于区别像素的状态,后面会讲。

然后在全局标签将这个结构体声明成容量为30的数组,起个名字为“Main_iY”,这两个数字正好与HMI里面指示灯的横向纵向数量相等,然后进行标签与软元件的关联,如下图:

标签与软元件关联

预览小屏同理。

想要显示一个图形我们需要知道这个图形对应哪些坐标,这里我们使用excel列出所有图形的坐标值:

所有图形

可以看到一共有7个图形,每个图形有4个方向,所有图形显示的像素个数都是4,这样我们可以用两个容量为4的字数组存储这个4个XY坐标,想要在预览窗口中显示图形可以直接将这4个坐标依次显示出来就可以了。而给XY一个偏移值,就可以实现主窗口显示,各个方向的移动。

想随机生成一个图形需要用到随机数指令RND生成两个随机数,在通过数学计算将这两个数一个控制在0-6,作为图形的种类;一个控制在0-3,作为图形的方向。

生成两个随机数

通过两个数字变量确定一个数组的程序我们可以写成一个Function(功能、指令),因为后面我们还要用到这个程序,减少程序篇幅。我们把所有图形的坐标写到这个FC里面,FC的返回值设为结构体,便于起名字。

生成图形指令

在主程序中调用FC:

流程1完整程序

流程2,预览图形更新

将上一步生成的OBJ数组(图形坐标)传给临时变量tempObj,然后再重新生成新的图形,并在预览窗口显示。显示方法为使用for循环,赋值4个X,Y坐标对应的像素。

生成新预览图形并显示

这里面offsetX,offsetY为坐标偏移,我给定一个初始值,图形坐标加上offset值后在主屏幕上方还没有进入,所以先不用显示。

流程3,下降判断

判断图形能不能下降,方法为将图形的所有Y坐标+1,然后再判断Y坐标是否满足两个条件的其中之一,也就是“或”关系(or),第一个条件是至少1个Y坐标=30,意味着图形到了主屏幕的最底部;第二个条件是再主屏幕内的图形像素的iType为2,这里的iType就是前面建立像素结构体时增加的数字变量,我定义运动中的图形像素iType=1,固定的iType=2。

两个条件都不满足则可以下降,满足其一则意味着图形是不能下降的,这时将图形的像素类型更改为2(iType=2)。

图形不能下降我们还要判断游戏是不是结束了,方法是判断图形所有的像素当前Y坐标是否存

在<0的情况。

下降判断

流程4,移动一格

这里比较简单,将数组对应的像素置为false,Y坐标+1,再将数组对应的像素置为true。

移动一格

这里也是主屏幕能够显示出图形原因,主屏幕的像素指示灯已经关联到“Main_iY”全局变量中,只要将上一步生成的数组对应的像素置true就可以显示了,但是超过屏幕范围外的坐标不要赋值,否则会引起数组超限报错。

流程5,延时等待,按钮操作

延时的时间可以根据分数来设定,这里直接指定1000ms。

在这个流程中还要编辑左,右,下和旋转4个按钮的动作,“左右下”动作比较容易实现,只要将图形的所有坐标+1或者-1就行了,参考流程4的写法;需要注意移动后的图形不能超过边界,不能穿越已经降落固定的图形,判断方法参考流程3。

向左移动

“旋转”功能需要将找到当前这个图形的类型和方向,也就是流程2里面记录的ObjType和ObjDirection,然后将这个方向ObjDirection进行+1或者-1操作,使用FC生成新的图形坐标,将旧的图形删除,将新的图形显示。

图形旋转

这里我们在真正的旋转前仍然要先判断,旋转后的图形是否超边界或与固定图形重合,我这里的逻辑是与固定图形重合的不允许旋转,超左右边界的移动一格坐标后进行旋转。这里实际上存在bug,但是很难出现我懒得改了。。。

流程6,判断消除

在流程3里面判断图形无法下降并固定的时候进入此流程,图形固定后我们要判断是否存在需要消除的行,方法为逐行判断是否全部显示,消除后记得将消除行上方的图形下降,记录得分。

运行调试

消除所有的错误和bug,添加必要的启动复位按钮程序,将程序段拉入PLC循环扫描任务中,编译后启动仿真,然后启动HMI的仿真,就可以愉快的玩耍啦~

工业机器人技术之仿真技术在机器人中的应用

工业机器人在现代制造系统中起着极其重要的作用。随着机器人技术的不断发展,机器人的三维仿真技术也随之得到广泛关注。通过预先对机器人及其工作环境乃至生产过程进行模拟仿真,将机器人的运动方式以动画的方式显示出来,直观的显示机器人及整个生产线的运动情况,能够有效地辅助设计人员进行机器人虚拟示教、机器人工作站布局、机器人工作姿态优化。

(1)启帆工业机器人系统介绍

启帆工业机器人系统主要由机器人本体、机器人控制器和机器人控制软件三部分组成,如图1所示。机器人控制系统是先通过示教器来操作运动控制器,运动控制器则通过EtherCAT通信向伺服驱动器发出指令来控制机器人六个轴分别运动,实现机器人的运动控制。

STS-R6-ECAT控制器由广州启帆开发,借助德国3S公司的RTE实时内核实现虚拟PLC功能。该控制器具有接口紧凑,通用性高等特性,并采用EtherCAT通讯接口实现控制器、IO模块以及伺服驱动的数据通讯。

图1启帆工业机器人系统

机器人控制软件(如图2)是由广州启帆独立开发,主要包括机器人手动、自动控制、机器人应用程序开发、机器人三维仿真运动等功能。其中机器人三维仿真功能是该控制系统的独到亮点,可实现先仿真后运行;通过机器人三维仿真能够比较直观的观察机器人状态和行走路径,有效的避免了机器人运动限位、碰撞和运动轨迹中奇异点的出现。通过将机器人仿真程序直接集成到控制器中,保证了仿真结果与机器人实际的运行情况完全真实可靠。

图2启帆机器人控制软件

(2)机器人三维仿真技术

机器人仿真系统作为机器人研究和开发中安全可靠、灵活方便的工具,发挥着越来越重要的作用。在仿真环境下,通过对机器人运动进行研究及编程验证,可以实现机器人轨迹规划、奇异位姿、逆运动学有效解、避障算法、甚至多机器协调作业等复杂功能。

若采用传统示教器操作机器人,当机器人改变工作任务时,通常需中断机器人的当前工作,先对机器人进行示教编程,然后机器人按照新的程序执行新的工作。而启帆公司开发的新型示教器,借助于机器人仿真系统就可首先在仿真系统上进行离线编程,并通过仿真环境验证程序是否正确。最后将编好的程序装到机器人执行器中,机器人便可按照新的程序执行新的工作,因此机器人可不必中断当前的工作,从而提高了生产效率,而且这种方法既经济又安全。

图3中的三维仿真是小屏模式,可以实现边编程边仿真功能,能够避免不必要的错误。三维仿真图中上侧显示各轴位置信息,坐标下方显示完整轨迹运行周期。轴位置信息根据坐标系不同而不同,关节坐标时显示关节信息,基坐标及其他坐标显示空间位置。

图3机器人三维仿真小屏模式

如图4所示为三维仿真全屏模式,图中机器人正按照程序进行自动仿真运行(虚轴),同时还可以清晰的看到机器人末端运行轨迹。其中虚轴即为仿真模式,实轴为机器人实际运行模式,该模式下实体机器人进行作业,与此同时仿真机器人进行精准同步运动;实虚轴切换通过图中右侧的虚轴实轴按钮进行切换。

图4机器人三维仿真全屏模式

(3)运行实例

为了保证机器人正常作业,首先采用“虚轴”模式(如图5)试运行观察机器人行走轨迹,并判断机器人运动是否会出现正负限位或者速度限制等报警信息;确认程序无误后,在确保使能断开的情况下切换到“实轴”模式(如图6)进行实体机器人运行。

图5运行实例——“虚轴”模式

(4)定制案例

启帆机器人控制软件中的仿真系统可以根据用户需求进行定制,如在仿真系统中为机器人末端法兰盘加装用户指定的工具并导入相应要加工的工件,甚至整个生产线等。下图是为某高校定制的启帆机器人仿真系统实验平台。

图6运行实例——“实轴”模式

(a)启帆机器人仿真系统实验平台——小屏模式

(b)启帆机器人仿真系统实验平台——全屏模式(前)

(c)启帆机器人仿真系统实验平台——全屏模式(后)

相关问答

CPM2AH欧姆龙PLC跟触摸屏通讯时PLC的存储器地址和继电器编号...

这得看用什么触摸屏,不同的触摸屏写法有所不同,不过大部分触摸屏软件都是按照plc实际地址去编辑的,一看就会用有用(0)回复cy_208在触摸屏中建立的元件的地址...

未来无人工厂会成熟吗?用一个手机就可以观察机器自动生产?

无人工厂又叫自动化工厂、全自动化工厂,是指全部生产活动由电子计算机进行控制,生产第一线配有机器人而无需配备工人的工厂。“无人工厂”里安装有各种能够自动...

小米手机怎么一直返回主页面啊-ZOL问答

小米15全系前瞻分析:续航影像全面升级,依旧是安卓小屏机皇评论26小米集团20...西门子s7-200smartplc怎么样改系统时间3760浏览笔记本键盘打斜线怎么打...

你好,请问我的小米手机在电脑上下载了几个视频,随后在手机上...

小米15全系前瞻分析:续航影像全面升级,依旧是安卓小屏机皇评论26热门问题樱...西门子plc编程软件step75.5有几个版本5155浏览4回答OPPO怎么联接小米手...

红米手机无线网连不上-ZOL问答

小米15全系前瞻分析:续航影像全面升级,依旧是安卓小屏机皇评论26热门问题苹...在实际应用中定时器的时间范围超过PLC的定时器定时范围时,怎么实现?2470浏...

笔记本电脑显示屏的分辨率的差别-ZOL问答

分辨率越大越贵,宽高比16:10比16:9贵,小屏高分比大屏高分贵有用(0)回复dsti...西门子plc编程软件step75.5有几个版本5155浏览4回答OPPO怎么联接小米手环?...

红米手机回复出厂设置了,可输入法不起作用了,怎么处理啊?-ZOL...

小米15全系前瞻分析:续航影像全面升级,依旧是安卓小屏机皇评论26小米集团20...三菱触摸屏肿么和两个三菱FX系列的PLC通讯呢!需要些什么?5473浏览8回答ao...

红米note没有信号,只能拨打紧急电话是为什么-ZOL问答

小米15全系前瞻分析:续航影像全面升级,依旧是安卓小屏机皇评论26小米集团20...三菱fx3ga的plc和威伦触摸屏232通讯的通讯线怎样做啊6497浏览4回答word对...

外媒眼中的2017年度最佳手机Top7,为什么小米华为都没上榜?

首先,我必须说明,这是一个误传,实际上国外知名互联网站雅虎评选出了2017年度最佳手机Top7不是指手机本身,而是有特殊的优势加成。回顾榜单1、iPhoneX(除...毫...

 王绎龙dj  主播玩黄鳝 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部