MCGS触摸屏可通过三种方法模拟WASD移动控制:一、虚拟按钮+循环脚本,用四个方向按钮修改Move_X/Move_Y变量并驱动目标对象位移;二、触摸热区坐标映射,通过GetTouchPos获取触点位置,按屏幕四象限触发对应方向增量;三、PLC寄存器联动,读取PLC输出的W/A/S/D信号控制变量实现硬件级响应。

如果您希望在MCGS触摸屏项目中实现类似PC端WASD键的移动控制逻辑(例如控制设备位移、滑块位置或动画对象方向),但当前触摸屏界面未提供原生键盘映射功能,则需通过组态逻辑与脚本模拟该行为。以下是实现该功能的多种可行方法:
一、使用循环脚本+虚拟按钮组合模拟WASD
该方法通过在用户窗口绘制四个方向按钮(W/A/S/D),绑定点击事件触发变量自增/自减,再由循环脚本驱动目标对象移动。适用于无物理键盘、仅依赖触控操作的场景。
1、在用户窗口工具箱中选择“标准按钮”,分别绘制四个按钮,文字标注为W、A、S、D,并设置其位置便于拇指操作。
2、在实时数据库中新建两个数值型数据对象:Move_X(X轴偏移量)、Move_Y(Y轴偏移量),初始值均设为0。
3、为W按钮设置“按下时”脚本:!Move_Y = Move_Y + 5;S按钮对应脚本为:!Move_Y = Move_Y - 5。
4、为A按钮设置“按下时”脚本:!Move_X = Move_X - 5;D按钮对应脚本为:!Move_X = Move_X + 5。
5、双击用户窗口空白处,打开“用户窗口属性设置”,点击“循环脚本”,将循环时间设为50毫秒,在脚本区输入:!TargetObj.X = TargetObj.X + Move_X; !TargetObj.Y = TargetObj.Y + Move_Y; !Move_X = 0; !Move_Y = 0;(其中TargetObj为需移动的图形元件名称)。
二、利用触摸区域坐标映射实现滑动式WASD响应
该方法将屏幕划分为四个热区(上/下/左/右),当手指在对应区域持续按压时,自动触发方向位移,无需点击按钮,更接近游戏手柄体验。
1、在用户窗口中不放置任何按钮,而是启用“窗口属性→循环脚本”,并定义两个全局变量:TouchArea_X和TouchArea_Y,用于暂存当前触摸坐标。
2、在循环脚本中添加坐标捕获逻辑(需配合MCGS嵌入版V6.2及以上版本支持的GetTouchPos函数):GetTouchPos(TouchArea_X, TouchArea_Y);
3、设定屏幕中心坐标为基准点(如宽=800,高=480,则中心为400,240),编写条件判断:IF TouchArea_Y (上区:Y
4、同理设置其余三区:IF TouchArea_Y > 360 THEN !Move_Y = Move_Y - 3; ENDIF(下区);IF TouchArea_X (左区);IF TouchArea_X > 600 THEN !Move_X = Move_X + 3; ENDIF(右区)。
5、保持与方法一相同的位移执行与清零逻辑,确保每次循环只应用一次增量。
三、通过外部PLC寄存器联动实现硬件级WASD控制
该方法适用于已连接PLC且PLC程序具备方向解析能力的系统,由PLC输出WASD状态信号,MCGS仅作状态读取与可视化反馈,降低组态端计算负载。
1、在PLC程序中定义四个布尔型输出点:Q0.0(W)、Q0.1(A)、Q0.2(S)、Q0.3(D),由上位机或HMI按键触发。
2、在MCGS设备窗口中完成PLC通讯配置后,在设备通道中新增四个只读位通道,地址分别对应上述Q点。
3、在实时数据库中创建四个开关型数据对象:PLC_W、PLC_A、PLC_S、PLC_D,并将其与对应通道连接。
4、在用户窗口循环脚本中编写联动逻辑:IF PLC_W = 1 THEN !Move_Y = Move_Y + 4; ENDIF;IF PLC_A = 1 THEN !Move_X = Move_X - 4; ENDIF;依此类推完成四向判断。
5、目标元件的位置更新语句与前述方法一致,确保Move_X和Move_Y在每次循环末尾归零。









