线下实训
HOME
线下实训
正文内容
plc编程括号里带r FANUC(发那科)PMC(PLC)基础介绍15:R地址
发布时间 : 2025-01-20
作者 : 小编
访问数量 : 23
扫码分享至微信

FANUC(发那科)PMC(PLC)基础介绍15:R地址

一、R地址概述:

R地址是PMC的内部继电器地址,可当作输入点使用,也可以被用作继电器线圈当作输出点使用。R地址在PMC中仅作为中间继电器(中间变量)使用,自身的状态变化不会像G地址与Y地址那样引起CNC系统或者机床本身执行相关动作,R地址的范围如下图所示:

R地址范围

需要强调的是,R地址在接通电源时会被清零 ,我们在编程的时候一定要注意这一特点。

二、特殊R地址:

用户区域的R地址在使用时完全取决于PMC的逻辑关系,设计者可以按照自己的需求定义地址功能,但是系统区域的R地址功能是固定的,设计者只能使用,而不能重新定义。

1、运算结果继电器R9000

R9000(功能指令 ADDB、SUBB、MULB、DIVB、COMPB 的运算输出寄存器)

R9000(功能指令 EXIN、WINDR、WINDW 的错误输出)

2、余数输出寄存器R9002~R9005

当执行功能指令DIVB进行运算时,R9002~R9005被用作运算输出寄存器,输出执行功能指令 DIVB 的结果余数的数据。

3、系统定时器R9091

R9091.0、R9091.1为始终信号,R9091.5、R9091.6为循环信号

4、梯形图状态信号R9015

使用梯形图执行开始信号和梯形图停止信号时,可在梯形程序中了解梯形程序的 开始和停止。

[三菱PLC] 俄罗斯方块程序:ST语言程序

三菱plc高级编程语言。st语言编写的俄罗斯方块程序,st语言是plc编程高级语言,学会了st才算是高级工程师,无任何加密,有注释。对于想学三菱st语言控制等有很好的学习借鉴意义。

三菱PLC高级编程语言ST语言与俄罗斯方块程序的融合

一、引言

随着工业自动化水平的不断提高,PLC(可编程逻辑控制器)技术得到广泛应用。三菱PLC作为其中的佼佼者,其高级编程语言ST语言更是受到广泛关注。本文将介绍如何将ST语言与俄罗斯方块程序结合,展示ST语言的强大功能,并对有志于学习三菱ST语言控制技术的朋友们提供有益的参考。

二、三菱PLC与ST语言概述

三菱PLC是三菱电机自动化产品线中的主力产品,广泛应用于各种工业控制领域。ST语言是PLC编程的高级语言,其强大的功能和灵活性使得工程师能够更高效地编写复杂的控制程序。掌握ST语言,意味着工程师具备了解决复杂问题的能力,是迈向高级工程师的重要一步。

三、俄罗斯方块程序在ST语言中的实现

俄罗斯方块是一个经典的电子游戏,其编程实现对于学习ST语言具有很好的借鉴意义。下面将详细介绍如何在ST语言中编写俄罗斯方块程序。

俄罗斯方块游戏逻辑分析

俄罗斯方块游戏的核心逻辑包括:方块的生成、移动、旋转和消除。这些逻辑可以通过ST语言中的程序结构、函数和指令来实现。

ST语言中的程序结构设计

在ST语言中,我们可以使用结构化程序设计的方法,将游戏逻辑分为多个模块,如初始化模块、游戏循环模块、方块生成模块、移动/旋转模块等。这样的设计使得程序更加清晰、易于维护。

ST语言中的函数与指令应用

在编写俄罗斯方块程序时,我们将大量使用ST语言中的函数和指令。例如,使用数组来存储方块和矩阵的数据,使用循环和条件语句来控制游戏流程,使用位移和变换指令来实现方块的移动和旋转。

四、ST语言学习的路径与建议

对于想要学习三菱ST语言控制技术的朋友们,建议从以下几个方面入手:

熟练掌握ST语言的基本语法和指令集。通过实践项目来巩固所学知识,如编写俄罗斯方块程序。积极参与技术社区的交流与讨论,向资深工程师请教。不断阅读技术文档和参考资料,了解最新的技术趋势和最佳实践。

五、结语

通过将ST语言与俄罗斯方块程序结合,我们可以更深入地了解ST语言的强大功能,同时也为学习PLC技术提供了一个具体的实践项目。对于想要成为三菱PLC高级工程师的朋友们,掌握ST语言是必经之路。希望本文能够为大家的学习与实践提供有益的参考。

下面就是三菱PLC的俄罗斯方块程序。R_TRIG_1(_CLK:= ONOFF ,Q:=秒P );TON_E_1(EN:= TRUE ,IN:= NOT 计时启动 ,PT:= T#1000S ,Q:= 计时启动 ,ET:=扫描周期_us ); (*产生随机数*)TIME_TO_DINT_E(TRUE , 扫描周期_us , 扫描周期_D );DINT_TO_INT_E( TRUE, (扫描周期_D/K100) , 扫描周期_I );时钟随机数:=扫描周期_I; 左移P := NOT 左移ON AND 左移;右移P := NOT 右移ON AND 右移;启动P := 启动 AND NOT 启动ON;变形P := 变形 AND NOT 变形ON;左移ON := 左移;右移ON := 右移;启动ON := 启动;变形ON := 变形;i_tra:= 0;J_tra:= 0;k_tra := 0;可消行数据 := 0;消除数据[1] := 0;消除数据[2] := 0;消除数据[3] := 0;消除数据[4] := 0;Gen_实时后景数据图 := FALSE;Gen_实时前景数据图 := FALSE;撞后保存检测 := FALSE;允许下降 := TRUE;允许左移 := TRUE;允许右移 := TRUE;图形可变 := FALSE;IF 启动P THENGameover := FALSE;END_IF;IF NOT 启动 THEN (*停止清零*)Gen_实时后景数据图 := FALSE;Gameover := FALSE;FOR i_tra := 24 TO 1 BY -1 DOFOR J_tra := 16 TO 1 BY -1 DO显示图像[ i_tra, J_tra] := FALSE;实时前景数据图[ i_tra, J_tra] := FALSE;预判[ i_tra, J_tra] := FALSE;END_FOR;END_FOR;实时后景数据图Type := 0;实时后景数据图Stat := 0;实时前景数据图Type := 0;实时前景数据图Stat := 0;ELSIF 启动P OR 实时后景数据图Type = 0 THENGen_实时后景数据图 := TRUE;END_IF;IF Gen_实时后景数据图 AND NOT Gameover THEN实时后景数据图Type := ( 时钟随机数 MOD 7) + 1;实时后景数据图Stat := ( 时钟随机数 MOD 4) + 1;END_IF;IF 实时后景数据图Type > 0 AND 实时前景数据图Type = 0 AND NOT Gameover THEN (*NEXT上传NOW*)实时前景数据图Type := 实时后景数据图Type;实时前景数据图Stat := 实时后景数据图Stat;Gen_实时前景数据图 := TRUE;实时后景数据图Type := 0;实时后景数据图Stat := 0;END_IF;FOR i_tra := 1 TO 4 DOFOR J_tra := 1 TO 4 DO图形显示Next[ i_tra, J_tra] := FALSE;END_FOR;END_FOR;CASE 实时后景数据图Type OF (*NEXT图形显示*)1: IF ( 实时后景数据图Stat = 1 OR 实时后景数据图Stat = 3) THEN图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;图形显示Next[2, 4] := TRUE; END_IF;IF ( 实时后景数据图Stat = 2 OR 实时后景数据图Stat = 4) THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE;图形显示Next[4, 2] := TRUE;END_IF;2:IF 实时后景数据图Stat = 1 THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE;图形显示Next[3, 3] := TRUE;END_IF;IF 实时后景数据图Stat = 2 THEN图形显示Next[1, 3] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;END_IF;IF 实时后景数据图Stat = 3 THEN图形显示Next[1, 1] := TRUE;图形显示Next[1, 2] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE;END_IF;IF 实时后景数据图Stat = 4 THEN图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;图形显示Next[3, 1] := TRUE;END_IF;3:IF 实时后景数据图Stat = 1 THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE;图形显示Next[3, 1] := TRUE;END_IF;IF 实时后景数据图Stat = 2 THEN图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;图形显示Next[3, 3] := TRUE;END_IF;IF 实时后景数据图Stat = 3 THEN图形显示Next[1, 2] := TRUE;图形显示Next[1, 3] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE; END_IF;IF 实时后景数据图Stat = 4 THEN图形显示Next[1, 1] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;END_IF;4:IF 实时后景数据图Stat = 1 THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;END_IF;IF 实时后景数据图Stat = 2 THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE;END_IF;IF 实时后景数据图Stat = 3 THEN图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;图形显示Next[3, 2] := TRUE;END_IF;IF 实时后景数据图Stat = 4 THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE;图形显示Next[3, 2] := TRUE;END_IF;5: IF ( 实时后景数据图Stat = 1 OR 实时后景数据图Stat = 3) THEN图形显示Next[1, 1] := TRUE;图形显示Next[1, 2] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[2, 3] := TRUE; END_IF;IF ( 实时后景数据图Stat = 2 OR 实时后景数据图Stat = 4) THEN图形显示Next[1, 2] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 1] := TRUE; END_IF;6:IF ( 实时后景数据图Stat = 1 OR 实时后景数据图Stat = 3) THEN图形显示Next[1, 2] := TRUE;图形显示Next[1, 3] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE; END_IF;IF ( 实时后景数据图Stat = 2 OR 实时后景数据图Stat = 4) THEN图形显示Next[1, 1] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE;图形显示Next[3, 2] := TRUE;END_IF;7:IF ( 实时后景数据图Stat = 2 OR 实时后景数据图Stat = 4 OR 实时后景数据图Stat = 1 OR 实时后景数据图Stat = 3) THEN图形显示Next[1, 1] := TRUE;图形显示Next[1, 2] := TRUE;图形显示Next[2, 1] := TRUE;图形显示Next[2, 2] := TRUE; END_IF;END_CASE;CASE 实时前景数据图Type OF1:IF ( 实时前景数据图Stat = 1 OR 实时前景数据图Stat = 3) THENInit_X := 8;Init_Y := 24;IF GX > 1 AND GX < 15 AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY, GX + 2] THENXX1 := GX - 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX + 1;YY3 := GY;XX4 := GX + 2;YY4 := GY;图形可变 := TRUE;END_IF;END_IF;IF ( 实时前景数据图Stat = 2 OR 实时前景数据图Stat = 4) THENInit_X := 8;Init_Y := 23;IF GY < 24 AND GY > 2 AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY - 2, GX] THENXX1 := GX;YY1 := GY + 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY - 1;XX4 := GX;YY4 := GY - 2;图形可变 := TRUE;END_IF;END_IF;2:IF 实时前景数据图Stat = 1 THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GY > 1 AND GY < 24 AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY - 1, GX + 1] THENXX1 := GX;YY1 := GY + 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY - 1;XX4 := GX + 1;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 2 THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GX < 16 AND GY < 24 AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY + 1, GX + 1] THENXX1 := GX - 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX + 1;YY3 := GY;XX4 := GX + 1;YY4 := GY + 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 3 THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GY < 24 AND GY > 1 AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY + 1, GX - 1] THENXX1 := GX;YY1 := GY - 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY + 1;XX4 := GX - 1;YY4 := GY + 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 4 THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GX > 1 AND GY > 1 AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY - 1, GX - 1] THENXX1 := GX + 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX - 1;YY3 := GY;XX4 := GX - 1;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;3:IF 实时前景数据图Stat = 1 THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GY > 1 AND GY < 24 AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY - 1, GX - 1] THENXX1 := GX;YY1 := GY + 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY - 1;XX4 := GX - 1; YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 2 THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GX < 16 AND GY > 1 AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY - 1, GX + 1] THENXX1 := GX - 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX + 1;YY3 := GY;XX4 := GX + 1;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 3 THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GY < 24 AND GY > 1 AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY + 1, GX + 1] THENXX1 := GX;YY1 := GY - 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY + 1;XX4 := GX + 1;YY4 := GY + 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 4 THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GX < 16 AND GY < 24 AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY + 1, GX - 1] THENXX1 := GX + 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX - 1;YY3 := GY;XX4 := GX - 1;YY4 := GY + 1;图形可变 := TRUE;END_IF;END_IF;4:IF 实时前景数据图Stat = 1 THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GX > 1 AND GY < 24 AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY + 1, GX] THENXX1 := GX - 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX + 1;YY3 := GY;XX4 := GX;YY4 := GY + 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 2 THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GY < 24 AND GY > 1 AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX - 1] THENXX1 := GX;YY1 := GY - 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY + 1;XX4 := GX - 1;YY4 := GY;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 3 THENInit_X := 8;Init_Y := 24;IF GX < 16 AND GX > 1 AND GY > 1 AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY - 1, GX] THENXX1 := GX + 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX - 1;YY3 := GY;XX4 := GX;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;IF 实时前景数据图Stat = 4 THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GY > 1 AND GY < 24 AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY - 1, GX] AND NOT 预判[ GY, GX + 1] THENXX1 := GX;YY1 := GY + 1;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY - 1;XX4 := GX + 1;YY4 := GY;图形可变 := TRUE;END_IF;END_IF;5:IF ( 实时前景数据图Stat = 1 OR 实时前景数据图Stat = 3) THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GX < 16 AND GY < 24 AND NOT 预判[ GY, GX - 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY + 1, GX + 1] THENXX1 := GX - 1;YY1 := GY;XX2 := GX;YY2 := GY;XX3 := GX;YY3 := GY + 1;XX4 := GX + 1;YY4 := GY + 1;图形可变 := TRUE;END_IF;END_IF;IF ( 实时前景数据图Stat = 2 OR 实时前景数据图Stat = 4) THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GY > 1 AND GY < 24 AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY - 1, GX + 1] THENXX1 := GX;YY1 := GY + 1;XX2 := GX;YY2 := GY;XX3 := GX + 1;YY3 := GY;XX4 := GX + 1;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;6: IF ( 实时前景数据图Stat = 1 OR 实时前景数据图Stat = 3) THENInit_X := 8;Init_Y := 23;IF GX > 1 AND GX < 16 AND GY < 24 AND NOT 预判[ GY + 1, GX - 1] AND NOT 预判[ GY + 1, GX] AND NOT 预判[ GY, GX] AND NOT 预判[ GY, GX + 1] THENXX1 := GX - 1;YY1 := GY + 1;XX2 := GX;YY2 := GY + 1;XX3 := GX;YY3 := GY;XX4 := GX + 1;YY4 := GY;图形可变 := TRUE;END_IF;END_IF;IF ( 实时前景数据图Stat = 2 OR 实时前景数据图Stat = 4) THENInit_X := 8;Init_Y := 23;IF GX < 16 AND GY > 1 AND GY < 24 AND NOT 预判[ GY + 1, GX + 1] AND NOT 预判[ GY, GX + 1] AND NOT 预判[ GY, GX] AND NOT 预判[ GY - 1, GX] THENXX1 := GX + 1;YY1 := GY + 1;XX2 := GX + 1;YY2 := GY;XX3 := GX;YY3 := GY;XX4 := GX;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;7:IF ( 实时前景数据图Stat = 2 OR 实时前景数据图Stat = 4 OR 实时前景数据图Stat = 1 OR 实时前景数据图Stat = 3) THENInit_X := 8;Init_Y := 24;IF GX < 16 AND GY > 1 THENXX1 := GX;YY1 := GY;XX2 := GX + 1;YY2 := GY;XX3 := GX;YY3 := GY - 1;XX4 := GX + 1;YY4 := GY - 1;图形可变 := TRUE;END_IF;END_IF;END_CASE;IF Gen_实时前景数据图 THENGX := Init_X;GY := Init_Y;预判Stat := 实时前景数据图Stat; END_IF;IF ( XX1 > 1) THENIF 预判[ YY1, XX1 - 1] THEN允许左移 := FALSE;END_IF;END_IF;IF ( XX2 > 1) THENIF 预判[ YY2, XX2 - 1] THEN允许左移 := FALSE;END_IF;END_IF;IF ( XX3 > 1) THENIF 预判[ YY3, XX3 - 1] THEN允许左移 := FALSE;END_IF;END_IF;IF ( XX4 > 1) THENIF 预判[ YY4, XX4 - 1] THEN允许左移 := FALSE;END_IF;END_IF;IF ( XX1 < 16) THENIF 预判[ YY1, XX1 + 1] THEN允许右移 := FALSE;END_IF;END_IF;IF ( XX2 < 16) THENIF 预判[ YY2, XX2 + 1] THEN允许右移 := FALSE;END_IF;END_IF;IF ( XX3 < 16) THENIF 预判[ YY3, XX3 + 1] THEN允许右移 := FALSE;END_IF;END_IF;IF ( XX4 < 16) THENIF 预判[ YY4, XX4 + 1] THEN允许右移 := FALSE;END_IF;END_IF;IF XX1 = 1 OR XX2 = 1 OR XX3 = 1 OR XX4 = 1 THEN允许左移 := FALSE;END_IF;IF XX1 = 16 OR XX2 = 16 OR XX3 = 16 OR XX4 = 16 THEN允许右移 := FALSE;END_IF;IF ( YY1 > 1) THENIF 预判[ YY1 - 1, XX1] = TRUE THEN允许下降 := FALSE;END_IF;END_IF;IF ( YY2 > 1) THENIF 预判[ YY2 - 1, XX2] = TRUE THEN允许下降 := FALSE;END_IF;END_IF;IF ( YY3 > 1) THENIF 预判[ YY3 - 1, XX3] = TRUE THEN允许下降 := FALSE;END_IF;END_IF;IF ( YY4 > 1) THENIF 预判[ YY4 - 1, XX4] = TRUE THEN允许下降 := FALSE;END_IF;END_IF;IF YY1 = 1 OR YY2 = 1 OR YY3 = 1 OR YY4 = 1 THEN允许下降 := FALSE;END_IF;IF 允许下降 AND (秒P OR 下降) AND 启动 AND NOT 暂停 THENGY := GY - 1;END_IF;IF 允许左移 AND 左移P AND 启动 AND NOT 暂停 THENGX := GX - 1;END_IF;IF 允许右移 AND 右移P AND 启动 AND NOT 暂停 THENGX := GX + 1;END_IF;IF 变形P AND 启动 AND NOT 暂停 THEN预判Stat := 实时前景数据图Stat;实时前景数据图Stat := 实时前景数据图Stat + 1;IF 实时前景数据图Stat > 4 THEN实时前景数据图Stat := 1;END_IF;END_IF;IF NOT 图形可变 THEN实时前景数据图Stat := 预判Stat;END_IF;IF NOT 允许下降 THENIF 秒P AND NOT 暂停 THENCnt := Cnt + 1;END_IF;IF Cnt > 2 THEN撞后保存检测 := TRUE;Cnt := 0;实时前景数据图Type := 0;END_IF;ELSECnt := 0;END_IF;FOR i_tra := 24 TO 1 BY -1 DOFOR J_tra := 16 TO 1 BY -1 DO实时前景数据图[ i_tra, J_tra] := FALSE;END_FOR;END_FOR;IF 启动 THEN实时前景数据图[ YY1, XX1] := TRUE;实时前景数据图[ YY2, XX2] := TRUE;实时前景数据图[ YY3, XX3] := TRUE;实时前景数据图[ YY4, XX4] := TRUE;END_IF;FOR i_tra := 24 TO 1 BY -1 DOFOR J_tra := 16 TO 1 BY -1 DO显示图像[ i_tra, J_tra] := 实时前景数据图[ i_tra, J_tra] OR 预判[ i_tra, J_tra];END_FOR;END_FOR;IF 撞后保存检测 THEN IF YY1 = 24 OR YY2 = 24 OR YY3 = 24 OR YY4 = 24 AND NOT 允许下降 THEN (*碰撞后检测是否结束*)Gameover := TRUE;Gen_实时后景数据图 := FALSE;END_IF;FOR i_tra := 24 TO 1 BY -1 DO (*碰撞后检测是否消行*)可消行 := TRUE;FOR J_tra := 16 TO 1 BY -1 DOIF NOT 显示图像[ i_tra, J_tra] THEN可消行 := FALSE;END_IF;END_FOR;IF 可消行 THEN可消行数据 := 可消行数据 + 1;消除数据[ 可消行数据] := i_tra;END_IF;END_FOR;FOR k_tra := 1 TO 4 DOIF 消除数据[ k_tra] > 0 THENFOR i_tra := 消除数据[ k_tra] TO 23 DOFOR J_tra := 1 TO 16 DO显示图像[ i_tra, J_tra] := 显示图像[ i_tra + 1, J_tra];END_FOR;END_FOR;END_IF;END_FOR;FOR i_tra := 24 TO 1 BY -1 DOFOR J_tra := 16 TO 1 BY -1 DO预判[ i_tra, J_tra] := 显示图像[ i_tra, J_tra];END_FOR;END_FOR;END_IF;

相关问答

西门子PLC中(R)的符号意思是什么?

(R)是PLC中用来复位线圈的指令,对应的置位线圈指令是(S).英语分别是RESET和SET.(R)是PLC中用来复位线圈的指令,对应的置位线圈指令是(S).英语分别是RESET...

三菱plc中r是什么意思?

三菱PLCR代表的是一个程序模块。其实不管是哪个PLC都是大同小异了,R指的是plc的输出继电器了,如果是R0那就不会有输出,如果是R1的话在满足条件后会有输出的...

三菱FX2N-48MR-001中的各个字母含义_作业帮

[回答]三菱FX2N-48MR-001是三菱的继电器FX代表PLC(可编程控制器)的一个系列.FX2N是FX系列中功能最强、速度最高的微型PLC.48MR代表最大的输入/输出点数为4...

plc中kp指令是什么?

2.置位、复位信号同时接通优先执行复位信号。3.即使在mc(主控)指令运行期间,指定的继电器仍可保持其状态。4.当工作方式选择开关从“run”切换到“prog...

车辆出入管理PLC设计中计数器是怎么回事?为什么PV中要+2还有(+)加号是什么意思?

这是西门子的一个计数器指令在梯形图编程时可以在指令表里出来用,根据需要设置一些参数就可以。CTU是一个加计数器,CU为信号输入,R为复位端,PV为预置端,当C...

plc的字双字字长啥意思_作业帮

[最佳回答]mov-r:是实数传送,实数就是带有小数点的数值,一般在模拟量编程中经常会使用mov-w:这个是16位的2进制整数进行传送,整数就是不带小数点的数值.位、字...

plc里面A指令什么意思?

plc里面标准指令有LD、A、O、LDN、AN、ON等标准触点。详细解析如下:LD,取指令。表示一个与输入母线相连的常开接点指令,即常开接点逻辑运算起始。LDN,取反...

西门子PLCMOV_R是将0.2什么转换成VD200是什么意?

西门子MOV-R指令是实数移动指令,0.2就是实数,把0.2这个实数移到VD200这个地址里,不是转换的意思。西门子MOV-R指令是实数移动指令,0.2就是实数,把0.2这个实...

三菱Q系列PLC文件寄存器R怎么设定初始值?D能否同样设置?

三菱Q系列PLC要装有用户存储卡才能使用文件寄存器R存储用户数据,它的初始值赋值与数据接触器D一样,需要用数据传送指令MOV进行赋值。三菱Q系列PLC要装有用...

PLC输出20k和200k的区别?

因为:设置转速为20~70r/min减速机的减速比为15对应伺服电机速度300-1050r/min最高频率为20K伺服电机额定转速为3000r/minPLC输出1K=150...因为:...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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