瓷砖生产系统可用这个PLC控制
瓷砖是重要的装修材料,可以镶嵌在地面上,也可以镶嵌在墙壁上,具有造型美观,易于清理等优点。在进行烧制之前,瓷砖需要先用模具压成大概的形状,然后干燥印花烧制和上釉。那瓷砖是怎么压成型的呢?靠人力一块一块的弄吗?也不是不可以,但效率太低了,人工成本也太高了,当然是通过专门的机器系统进行流水线生产。
一个完整的瓷砖冲压系统,包括上模具、下模具,成品传送带,冲压头,物料台等等。我们将原料放在物料台以后,会通过传送带递送到模具中,冲压头冲压,将物料变为预成品,然后通过传送带传输到烧制车间去。这么多的步骤,需要统一配合实现,那自然就得有好用的PLC了。
我们的PLC支持codesys以及OpenPCS软件编程,可以应用到瓷砖冲压项目中,欢迎咨询。晚上我们“广成工控”直播间也会聊相关内容,欢迎观看。
教你用三菱PLC制作《超级玛丽》,仿真运行无需硬件
昨天在我的西瓜视频更新了PLC制作的《超级玛丽》的演示视频:
视频链接: (GX Works3制作《超级玛丽》(2))
再来个动图:
这个游戏虽然玩起来简单,但做起来内容太多了,以一人之力做起来不太现实,所以希望通过讲解这个程序的制作方法,来让更多的人参与其中,丰富游戏内容。
私信“超级玛丽”可以获得程序下载地址。
HMI界面
想要显示出内容必须要有屏幕,常用的HMI都有内置的开关、指示灯,可以用字指示灯 来代替屏幕的像素,通过D软元件的值来控制指示灯显示的颜色。
那这个颜色是按照什么规律设置的呢?我是按照Excel里面get.cell函数里对于单元格颜色定义的顺序来设置HMI指示灯颜色的,这个函数的颜色定义可以在网上找到:
为什么要用excel的函数定义呢?后面会讲到。
这个函数一共定义了56种颜色,虽然我们用不到这么多,但我还是勤劳的把所有颜色都设置了!
一个像素(指示灯)的颜色设置完成后,我们将像素的大小尺寸调整一下,这里设置的是10*10;常用屏幕都由很多像素构成,也就是所谓的分辨率,但由于HMI能显示的指示灯数量有限,我们设置这个虚拟屏幕的分辨率为 30*30;方法是右键点击刚刚制作的指示灯,选择“连续复制”:
在连续复制的窗口中设置X,Y方向的数量、间隔,最重要的是要勾选“进行软元件号增量”,方向要先↓后→,这是为了方便跟程序中的数组地址对应。最后添加4个方向按钮用于控制游戏人物的动作,HMI虚拟屏幕制作完成:
我们在PLC全局标签内建立一个容量为30*30的二维数组,设定起始地址软元件为D0与HMI的虚拟屏幕对应
这样就可以用XY坐标来定位像素的具体位置,例如我们想要将第4列第5行的像素显示黑色,通过查看颜色定义知道黑色色号为1,只需要写gDisplay[3.4]:=1 即可。
制作游戏元素
超级玛丽游戏中包含很多元素,背景:大地、山丘、树木、蓝天白云、水管、石块。。。。
动态人物:马里奥、蘑菇怪、乌龟怪、炮弹。。。。
想要将这些元素在我们制作的屏幕中显示出来,需要算出这些图片在我们的屏幕数组中每一个变量的颜色号。以主角马里奥为例,展示我的制作方法:
1.先在excel中,按照网上找到的像素图片,使用“填充颜色”画出马里奥模型:
2.然后使用get.cell函数,得出每一个单元格颜色号(get.cell函数的使用方法自行百度):
想要保存这个数据,需要在程序中建立一个容量为16*17的二维数组。为了简化程序篇幅,我们将数据保存至FC函数中。
3.建立函数 FC_Mario,设定返回值为:字[有符号](0..15,0..16),
4.在刚才的excel中使用简单的公式和下拉操作,将FC_mario赋值:
5.将表格中的内容复制到程序的FC_Mario中:
这样一个图片元素的制作就完成了,我这里在马里奥的FC中还添加了States变量,来选择马里奥的不同姿态。
使用上述方法制作所有元素:
到这里,我们已经可以写几行代码的在虚拟屏幕中显示图片了,可以将上面建立的FC返回值传递给一个容量相同的数组,再使用两层for循环传递给屏幕显示数组gDisplay,画面中就会显示对应的图片。例如显示马里奥:
adjMario:=FC_Mario(0);
for ii:=0 to 15 do
for jj:=0 to 16 do
gDisplay[ii,jj]:=adjMario[ii,jj];
end_for;
end_for;
adjMario为与FC_Mario元素相同的双层字数组,感兴趣的可以试试。
编程
我们将程序通过iStep的值分为3个部分来编辑:
case iStep of
0:
//初始化地图
1:
//计算显示位置
2:
//刷新屏幕
end_case;
初始化地图
屏幕的尺寸很小,不能显示游戏的整个地图,所以我们需要一个容量更大的数组来存储整个地图的所有元素。
我们仍然先在excel中复制刚才画好的元素构建出整个地图:
1:根据地图大小,声明一个容量对应的数组做为游戏背景地图 ,例如我这个是176*60;
我这里建立了4个标签,两个常量表示数组X、Y两个方向的最大值,方便后面程序更改。一个背景元素显示数组BackGround ,和一个背景元素属性数组bgAttribute 。显示数组用来保存各个元素的颜色数据;属性数组用于保存元素的属性,比如0是背景,人物可以重叠,1是固定物体,人物不能重叠,用于判断碰撞。
以后可以增加其他属性,比如怪物可以是2,可以下蹲进入的管道是3,变大的蘑菇buff是4等等。
2:设置背景色
在地图中没有元素的格子认为是蓝天,设为蓝色,查找一个蓝色的号码比如47,属性是可重叠,设为0:
3:添加位置不变的元素
比如地砖、山丘、石块等元素都是相对地图位置固定不变的,我们可以直接初始化的步骤里添加。例如添加地砖:
先使用上个步骤建立好的函数生成一个地砖的颜色数据,保存在地砖数组objGround里面,然后指定地砖在地图中的位置(由于屏幕、地图、所有元素的数组零点位置都是左上角,所以用数组零点[0.0]来定位)。
比如第一块砖的零点[0.0]在地图的[0,55]的位置,在X方向,一块砖占8个格子,所以第kk块砖的零点[0,0]在地图的[0+8*kk,55]的位置。再使用两层for循环传递所有砖块的所有X、Y的值。别忘了元素属性,地砖是不可重叠的,属性设置为1。
用同样的方法赋值所有的元素,如果元素中存在数值为0的空位,需要增加判断将空位去掉:
计算显示位置
在演示视频中,Mario的在屏幕中的位置、窗口显示地图的位置都是随着按钮上下左右移动的,实现这个目的需要根据马里奥的相对于屏幕偏移、屏幕相对地图的偏移 来计算。
1:声明两组变量,记录偏移量,并设定初始值:
Mariooffset用于记录马里奥元素[0..15,0..16]相对于屏幕[0..29,0..29]零点的偏移,也就是马里奥在屏幕中的显示位置。
偏移为0时
偏移X=8,Y=6 时
bgOffset用于记录屏幕[0..29,0..29]相对地图[0..175,0..59]的偏移,不再展示了。
2:设定屏幕刷新率
用1000ms除以刷新率FPS(默认值15)得到一帧画面的保留时间,使用ton功能块计时,计时结束后做一次计算,并复位计时触发。
3:根据上下左右移动方向进行偏移计算
我们以向右移动为例:
M0为右移按钮的地址,M0触发时,马里奥的姿态在pose=1,2,3之间循环变化,做出走动的动作。
在移动前我们要判断是否将要接触到属性为1的固定物体,先将接触状态变量 iTouch复位,通过for循环遍历马里奥右侧的地图属性是否为1,判断的距离为马里奥一帧内移动的距离(也就是马里奥的移动速度),我们用变量iSpeed来表示。这样我们就可以根据itouch的状态,判断马里奥右侧有无障碍。
根据touch变量的状态来决定我们是不是要改变两组偏移。如果touch为false,先判断马里奥是不是在屏幕左面(mariooffsetX<7),在左面的情况下增加马里奥X方向的偏移mariooffsetX的值(mariooffsetX+ispeed),将马里奥移动至画面的中间。
当mariooffsetX=7时,马里奥在屏幕的中间,此时马里奥位置不动,将背景地图在屏幕中向左侧移动,并判断屏幕是否还没超过地图的最右侧(bgOffsetX<175-30,30为屏幕的宽度),如果屏幕已经显示到了地图的最右侧,地图的位置不动,马里奥继续向屏幕的右侧移动,直到移动到屏幕的最右侧(mariooffsetX=29-13,13为马里奥的宽度)。
上下和左移动都与此类似。
刷新屏幕
位置计算完成,我们需要根据两组偏移的值刷新屏幕内显示的内容即可,但要先刷新背景地图,后刷新马里奥,目的是将上一帧马里奥的图形抹掉。
马里奥的左右朝向使用iDirection变量来表示,实现的方法是马里奥在X方向上赋值顺序的变化。
程序编辑完成,将PLC和HMI进行仿真开始游戏。
你学会了么!
相关问答
请问PLC柜子的预算怎么做呢
1大家说说西门子plc洗衣机的自动控制怎么做这个程序相当简单了。水位控制按照你那个要求就是控制了进水时间的不同么。如果是毕设的话很简单,你选择I0.0,I0...
西门子PLC可以分为哪几类?
[回答]木质地板,若是按结构与材料来分,可以分成实木地板、实木复合地板、增强木地板、竹地板、软木地板五大类,1.实木地板:又称作原木地板,是现代家庭翻...
全自动水泥彩瓦机产量规格参数是什么?
[回答]彩色水泥瓦与粘土瓦比较1、成型速度快,产量大,性能可靠。采用PLC自动控制,人机界面,性能更可靠,操作更方便。全液压气动,生产速度可达8片/分钟,成品...
水泥压瓦机有什么用_其他
[回答]泊头市天丰压瓦机厂生产的压瓦机最好,我厂地处河北省东南部被誉为“铸造之乡”“鸭梨之乡”的泊头市境内,京沪高速104国道贯穿全境,交通便利。我厂...
楼上地板噪音怎样消除谁可以讲下_土巴兔装修问答
问怎样钻瓷砖谁可以讲下答你好,有一种进口冲击钻在给瓷砖钻孔时先调至不冲击,把瓷砖钻透后在调至冲击位置,即可钻瓷砖后面的水泥墙体。保证瓷砖的开孔光滑整...
卫生间瓷砖品牌与瓷砖价格分享
卫生间装修,除了要选择合适的卫浴产品之外,还要了解卫生间瓷砖品牌与卫生间瓷砖价格的信息,以便于能够选择合适的瓷砖产品。以下就是小编为大家整理的关于卫生...
博世地暖使用说明书房间温控器使用方法_一起装修网
2、同时按下最左边的时钟编程键和模式键5秒钟以上,进入选项设定模式。进入模式后可按“M”键切换到第五项,再按上调键将地温保护温度由出厂的45度调整为60度即...
pvc管热熔器使用方法是什么地暖管焊接方法_一起装修网
pvc管热熔器使用方法是什么地暖管焊接方法
如何安装圆弧抛光机?
[回答]圆弧抛光机的数控安装只需是安装PLC的功用:安装变频器在圆弧机上,经过旋转按钮更便当的控制皮带的转动速度。plc可以控制圆弧抛光机在圆弧中的磨头...
大神们!麻烦回答一下自然石材对开机工作注意有哪些?急!急...
[回答]自然石材对开机的产品描述?1.这是具有多叶片的桥式结构的块式切割机,自动将石块切割并分割成板块。2.采用4柱式液压系统,还配有先进的电脑自动和PLC...