教你用三菱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的仿真,就可以愉快的玩耍啦~
周报77期 三菱Q系列、触摸屏、PLC编程常见问题解答
关注“PLC发烧友”,一起涨知识!
回复:三菱全套,领三菱系列电子资料
技成周报:77期
1、Q00UJCPU-SET和Q00UJCPU-S8-SET后缀是什么意思?
答:
1)Q00UJCPU 程序容量:10k步 I/O点数:256,集成电源和5槽基板
2)Q00UJCPU-SET 程序容量:10k步 I/O点数:256,集成电源和5槽基板,且自带64点的QH42P一块
3)Q00UJCPU-S8-SET 程序容量:10k步 I/O点数:256,集成电源和8槽基板,自带2块QX40及2块QY10的单元。
2、新买的Q系列PLC系统一套,接好电源后,有个叫BATT的黄灯不停的闪烁,是什么原因?
答:这是因为没有连接备用电池,CPU会报警,BATT黄灯闪烁(Q01以下的CPU,没有BATT黄灯,ERR 灯会闪烁)
处理方法:在CPU的正侧面下方打开盖子,把电池接头连接插好即可,这是因为产品没有使用如果出厂就连接好的话可能会产生漏电影响电池寿命。
3、Q系列下载线分类?
答:
1).Q00JCPU和Q00CPU内置RS232口; 包括所有Q..CPU都有232通讯口,可用QC30R2/USB-QC30R2下载
2).Q03UDECPU(QUDECPU)内置以太网端口、RS232口; 可用网线(FR-CB203)或 USB 线(GT09-C30USB-5P)下载
3).QUCPU. QUDCPU. QUDECPU 内置(小口)USB、RS232口; 可用GT09-C30USB-5P/QC30R2/USB-QC30R2下载
4).QNHCPU QNUDHCPU QNUDEHCPU内置(大口)USB、RS232口; 可用打印机线/QC30R2/USB-QC30R2下载。
4、Q00UCPU用力摇会有响声,这是什么原因?
答:经拆机发现:Q00UCPU内部是单电路板的,三菱采用的固定方式是塑料卡扣式结构;电路板只是通过卡扣扣住的,用力摇动肯定会有响声;
而比如Q02HCPU则不会,因为其内部是双电路板,三菱采用的固定方式是螺丝直接固定在外壳上,摇动自然不会有响声
总结:这是产品设计结构所致,并不是产品质量问题。
5、CCLINK专用电缆有哪些规格?如何配终端电阻?
答:CCLINK电缆主要有5规格
1)、CCNC-SB110H:对应Ver.1.10及Ver.2.00版本CCLIN系统,特性阻抗为110欧姆
2)、CCNC-SB110SF-5:对应Ver.1.10及Ver.2.00版本CCLIN系统,特性阻抗为110欧姆,可动用电缆
3)、CCNC-SB110H+PW:对应Ver.1.10及Ver.2.00版本CCLIN系统,特性阻抗为110欧姆,电源线内藏复合电缆
4)、CCNC-SB:只对应Ver.1.00版本CCLINK系统,特性阻抗为100欧姆
5)、CCNC-SBH:只对应Ver.1.00版本CCLINK系统,特性阻抗为130欧姆
综上所述,只有高性能专用电缆CCNC-SBH使用终端电阻130Ω 1/2W,其他电缆使用终端电阻110Ω 1/2W。
6、端子排电缆FA-CBL10FMV 与FA-CBL10FMV-M 请问有什么区别,是否可以替换使用?
答:两者有区别,不可替换使用,区别如下:
1)FA-CBL10FMV是配端子排FA-TBXY32;FA-CBL10FMV-M是配端子排FA-TBS40P
2)两条电缆两端虽然都使用相同接头,但是内部接线相反,FA-CBL10FMV接线是一对一,-M是正好颠倒;因为端子排内部有24V电压短接,所以不适合混用
3)相同点:两套产品功能相同FA-CBL10FMV + FA-TBXY32===FA-CBL10FMV-M + FA-TBS40P。
7、QD62、QD62D、QD62E三种高速计数模块的区别
答:
QD62:DC输入、漏型输出型(普通漏型NPN,最高接收200Kpps)
QD62D:平衡差分驱动输入、漏型输出型(最高接收500Kpps且接收信号的距离更远)
QD62E:DC输入、源型输出型(普通源型PNP,最高接收200Kpps)
8、F930的背景光灯如何有效的使用?
答:要使屏的背景灯有效,需在三菱PLC中将M2设成有效。
9、如何在GOT1000三菱触摸屏中实现每次画面切换需要重新输入画面密码?
答:可以使用“安全等级”功能来实现:
首先;在“系统环境”中设置好等级“密码”,注意设定“等级软元件”,
然后;在第二幅画面的画面属性中设置好画面的“安全等级”,
第三;再在第一幅画面上做一个切换到第二幅画面的“画面切换开关”,在第二幅画面上做一个“多用动作开关”并设置切换到第一幅画面的“画面切换”功能以及对等级软元件赋零的功能即可。
10、GOT1000画面编辑软件2.33版能否在不连接硬件PLC情况下进行画面仿真?
答:目前2.33版画面编辑软件已有仿真软件GSS2中文版。使用时,需同时安装GX Simulate 中文版PLC仿真软件。
11、三菱触摸屏GOT1000系列时钟画面时,为什么断电后时钟不能保持?
答:GOT1000触摸屏时钟设定有两种方式:
第一:根据GOT的时钟数据校准外部机械的时钟数据。这种方式GOT需安装电池。
第二:根据外部机器的时钟数据校准GOT的时钟数据。这种方式需要GOT外部连接PLC等具有时钟功能,并具有时钟保持功能。
12、触摸屏能否使用PLC的X软元件作为按钮?
答:客户在使用触摸屏触摸开关时,一般不要使用X软元件作为控制信号。因为对于PLC的硬件输入无论是置位、交替还是点动属性,X只会接通一个扫描周期信号。
13、为什么A975GOT与Q系列基本型CPU不能正常通信?
答:三菱提供 Q PLC 与 A97 □ GOT 的 CPU 连接方式,我们在使用过程中发现,并不是所有三菱的 Q CPU 的版本都能支持这种连接方式的通信。经试验后发现,只有 Q02 CPU 以上的版本才支持这种连接方式的通信。
(实验具体配置如下:Q 02CPU A9GT-RS2 A975GOT-TBA QC30-R2 可实现 CPU 连接通信)
14、在使用GOT1000触摸屏时,采用ASCII码输入时,触摸输入按键时,无法弹出ASCII码输入键盘?
答:使用ASCII码输入时,必须由用户在窗口画面中建立一个ASCII码输入键盘,并在该窗口画面属性----按键窗口设置中选择“使用用户自制按键窗口”,并设定ASCII码键画面编号。
15、GT1000系列所用储存卡GT05-MEM-1GC能否用普通CF卡代替?
答:可以,使用前需格式化为FAT16格式的。
16、GT1030-LBD,LBD2被GT1030-HBD,HBD2替代,区别何在?
答:性能一样,除了显示器变成高对比度外。
17、GT1020-LBD,LBD2的连接特点?
答:GT1020-LBD与PC连接用R232(QC30R2)
与PLC连接用GT10-C30R4-8P(422口);
GT1020-LBD2与PC连接同上;
与PLC连接一般连Q系列(232口),连FX需加232-BD。
18、三菱PLC哪些编程软件可以通用?
答:FX-GPWIN 只适合FX系列PLC编程使用;GX-Developer适合FX, Q, A系列PLC编程使用 ;GX-WORK2适合FX , Q , L系列三菱PLC编程使用。
19、触点比较指令[<= D10 K100] 应该怎么输入,为什么输入不进去?
答:输入触点比较指令可以直接在键盘输入LD<= D10 K100进行输入,注意LD和<=符号之间不需要空格,而符号和D10之间,以及D10和K100直接需要空格。还要注意假如触点比较指令是32位指令[D<= D10 K100],那么是直接在键盘输入LDD<= D10 K100,注意是LD后面加D,而不是像DMOV等其他功能指令在前面加D。
20、[MOV K2M0 K2Y0]这个指令中的K2M0和K2Y0是什么,这条指令又是什么意思?
答:K2M0和K2Y0是组合位元件,K2是组合位元件的组数,K2代表两组,而一组是四位位元件,两组也就是8位,所以K2M0就代表M0-M7八个位,K2Y0就代表Y0-Y7八个位。[MOV K2M0 K2Y0]这条指令是将K2M0的二进制数据传送到K2Y0里面,实际上是通过M0-M7的二进制位去控制输出Y0-Y7的状态。
21、三菱PLC上的ERR灯一直亮红色,这是什么原因?
答:LC ERR灯亮红色说明有故障,故障有可能是硬件故障,也有可能是程序故障,可以通过编程软件连接上PLC后,打开软件菜单的“诊断”里的“PLC诊断”中确认到底什么故障。
22、三菱编程软件GX Developer打开工程时提示“工程初始化失败”,要怎么解决?
答:出现“工程初始化失败”的错误提示时,需要先将三菱编程软件卸载干净,再删除注册表,然后再重新安装软件。删除注册表的方法是:
1)点击“开始”按钮。
2)选择“运行”,再输入regedit,点击确定,打开注册表;
3)点击HKEY_LOCAL-MACHINE前面的加号,在打开的文件夹中找到SOFTWARE,点击前面的加号,找到MITSUBISHI,并点击鼠标右键,将该文件夹删除。如果删除了该文件夹还没用,那么再打开HKEY_CURRENT_UESR里面的SOFTWARE,再找到MITSUBISHI删除。如果删除了注册表还无法解决问题,建议重装系统。
23、在安装三菱GX Developer软件时点击setup没有任何反应怎么处理?
答:安装三菱GX Developer软件时如果双击setup之后,没有反应,且不会出现该图标,那么可以在360安全卫士里面体检修复一下,加速一下,清理下垃圾,在“任务管理器”的“进程”里将一些占内存的文件结束进程,再重启下电脑。如果操作了以上步骤还是没有反应,建议重装系统。
24、为什么我安装完了GX Developer软件在桌面没有图标,仿真软件也没有图标,是不是没有安装成功?
答:GX Developer软件安装完成,快捷图标不会自动出现在桌面的,可以在开始-所有程序-MELSOFT,找到GX Developer,再点击右键,发送到桌面快捷方式,这样桌面就会出现图标了,而仿真软件是没有单独的图标,它是集成在编程软件里面的,软件里面的“梯形图逻辑测试启动”图标即是开启/关闭仿真。
25、三菱PLC晶体管输出能带动多大的负载,能直接连接继电器吗,用不用加保护装置?可以直接驱动固态继电器吗?
答:晶体输出的PLC大带载能力为0.5A左右,固态继电器是可以自己驱动的,继电器看什么继电器,如果是24V这样的中间继电器是可以驱动的。
26、为什么说PLC系统可靠性高,抗干扰能力强?
答:PLC硬件设计上,为了提高抗干扰性能,开关量输入输出均采用光耦器件,PLC内部电路与外部电路之间做到了电隔离,较好地消除了外部电磁干扰对PLC内部所产生的影响。而且,PLC的电源线路与I/O回路还设计了多重滤波电路,如LC滤波器、RC滤波器、数字滤波器等,以减少高频干扰的影响。以上硬件设计,使得PLC具有抗干扰能力强,可靠性高等特点。
27、8进制数35+47的结果用8进制表示是多少?用10进制表示又是多少?
答:8进制数35+47的结果用8进制表示是104,用10进制表示是82。8进制的数字只有 0 - 7,逢 8 进 1,也就是说:8 进制的 10 就是10进制 8,8进制 11 就是10进制 9,以此类推。
28、FX1s-20m可以扩展模块吗?扩展模块怎么定义输入输出端口号的?比如X13后面是不是X14?
答:三菱FX1s系列PLC只有基本单元,没有扩展I/O的扩展单元和扩展模块。扩展模块后输入输出端口号应该按顺序使用,不能跳跃编号。X13后面不是X14,而是X20。
29、16位和32位运算怎么理解?
答:数据寄存器是16位参与运算的,因为三菱的每个数据寄存器都是16位,如果想进行32位运算,就必须两个相邻的数据寄存器,比如B0和B1组成32位,而且规定了B0是低16位,是低位,B1是高16位,是高位,它的符号位在高位的高的位置,B31位叫做符号位,16位在16位寄存器的高位,也就是B15是符号位,16位就是16位和16位加减乘除,32位就是32位
30、在调试程序时,怎么利用END指令进行分段调试?
答:PLC中的END指令为结束指令,在调试程序时可以将END指令插在各段程序之后,从第一段开始分段调试,调试好以后必须删去程序中间的END指令,这种方法对程序的查错也很有用处。
来源:PLC发烧友,作者:技成辅导员,留言处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。。。
回复:三菱全套,领三菱系列电子资料
相关问答
三菱plc数据块编程方法?
您好,在三菱PLC中,数据块是一组相关的数据,可以在程序中进行编程。以下是三菱PLC数据块编程方法:1.创建数据块:在工程中选择“数据区块”并创建一个新的数...
plc怎么编写运行时间并在触摸屏上显示?
关于这个问题,编写PLC的运行时间并在触摸屏上显示可以通过以下步骤实现:1.在PLC程序中创建一个计时器(Timer),用于记录运行时间。根据PLC的型号和编程软件...
关于三菱PLC的文本显示器_汽配人问答
[最佳回答]现在很多国产的文本显示器都很便宜,比如信捷,,等。不一定非要三菱出的才支持三菱PLC
三菱plc怎么样写程序才能在威纶触摸屏上显示一分钟生产产品的个数?
三菱plc怎么样写程序才能在威纶触摸屏上显示一分钟生产产品的个数这个问题还是很好解决的,我们先搞清楚原理再编写程序。首先对“产品”的个数进行计数例如下图...
三菱plc触摸屏页面怎么编辑?
编辑操作比较简单,需要使用GXWorks3软件。明确结论是需要在GXWorks3软件中进行操作才能编辑三菱PLC触摸屏页面。原因是该软件是三菱PLC编程软件,可以用于编...
三菱PLC怎么与信捷OP320-A文本显示器通讯?
有三种情况:第一先检验通讯电缆,该电缆与普通串口电缆不一样,最好用文本显示器配置的通讯电缆(需跳线)。第二就是查看文本显示器所编写的程序中所选择的pl...
三菱plcpld指令说明?
这在变频器频率控制中属于PID调节常常用于流量、风量或者压力等的过程控制,而且不需要外部控制器编程PID程序自身就带有的调节功能很实用。我们只要设置一些参...
学会这三菱PLC编程技巧,你离大师又进了一步?
在三菱的PLC编程软件(GXWrok2、GXWork3)中,有一个功能叫做“连续粘贴”。当我们需要编写一段或一部分功能相同的程序时,我们可以先对程序进行分析,将其启...在...
文本显示器MD204与三菱PLC怎样工作?
采用通讯的方式,文本显示器MD204读取和改写三菱PLC内部的开关量状态和寄存器的数据采用通讯的方式,文本显示器MD204读取和改写三菱PLC内部的开关量状态和寄存...
三菱plc断电后为什么显示屏上参数不保存?
三菱PLC在断电后,显示屏上的参数不会保存,主要是因为PLC编程时采用的是模拟量输入输出(PLC指令中的I/O点数均为模拟量,如0或1),而非数字量。因此,在断电后...