PLC用ST语言 在CODESYS软件中,编写手柄控制程序实例
首先定义:
PROGRAM handctrl
VAR
HandX:UINT;
HandY:UINT;
Joy_XL:u4_20var; (*手柄X轴 左移*)
Joy_XR:u4_20var; (*手柄X轴 右移*)
Joy_YUP:u4_20var; (*手柄Y轴 上移*)
Joy_YDW:u4_20var; (*手柄Y轴 下移*)
Joy_XLu:UINT;(*手柄X轴 左移输出值*)
Joy_XRu:UINT;(*手柄X轴 右移输出值*)
Joy_YUPu:UINT;(*手柄Y轴上移输出值*)
Joy_YDWu:UINT;(*手柄Y轴下移输出值*)
END_VAR
然后编写程序部分:
(*手柄上移*)
Joy_YUP(
x:=handle_AinY , (*Y轴的端口采集端数据*)
xMin:=32750 , (*Y轴中位*)
xMax:=58000 , (*Y轴上移动最大值*)
yMin:= 0,
yMax:=18500 ); (*给的资料比例阀资料显示最大极限电流是1A, 电阻是13.4欧姆。 测量下给PWM端口上数据多大值是电压是13V,并把此值作为最大开启的电压数值*)
Joy_YUPu:=REAL_TO_UINT(Joy_YUP.y);(*手柄Y轴上移输出值*)
(*手柄下移*)
Joy_YDW(
x:=handle_AinY , (*Y轴的端口采集端数据*)
xMin:=6500 , (*Y轴下移动最大值*)
xMax:=32650 , (*Y轴中位*)
yMin:= 0,
yMax:=18500 ); (*给的资料比例阀资料显示最大极限电流是1A, 电阻是13.4欧姆。 测量下给PWM端口上数据多大值是电压是13V,并把此值作为最大开启的电压数值*)
Joy_YDWu:=REAL_TO_UINT (18500 - Joy_YDW.y );(*手柄Y轴下移输出值*)
(*手柄X轴 左移*)
Joy_XL(
x:=handle_AinX , (*X轴的端口采集端数据*)
xMin:=6400 , (*X轴左移动最大值*)
xMax:=31950 , (*X轴中位*)
yMin:= 0,
yMax:=18500 ); (*给的资料比例阀资料显示最大极限电流是1A, 电阻是13.4欧姆。 测量下给PWM端口上数据多大值是电压是13V,并把此值作为最大开启的电压数值*)
Joy_XLu:=REAL_TO_UINT ( 18500 - Joy_XL.y ) ;(*手柄X轴左移输出值*)
(*手柄X轴 右移*)
Joy_XR(
x:=handle_AinX , (*X轴的端口采集端数据*)
xMin:=32050 , (*X轴中位*)
xMax:=58300 , (*X轴右移动最大值*)
yMin:= 0,
yMax:=18500 ); (*给的资料比例阀资料显示最大极限电流是1A, 电阻是13.4欧姆。 测量下给PWM端口上数据多大值是电压是13V,并把此值作为最大开启的电压数值*)
Joy_XRu:=REAL_TO_UINT ( Joy_XR.y );(*手柄X轴右移输出值*)
IF (32050 > handle_AinX) AND (handle_AinX >31950) AND handle_AinY >=32750 THEN (*X轴在中位 手柄上移 输出*)
ProvalveA_out:=Joy_YUPu;(*比例阀APWMXM1.01手柄Y轴上移输出值*)
ProvalveB_out:=Joy_YUPu;(*比例阀BPWMXM1.02手柄Y轴上移输出值*)
ProvalveE_out:=18500;
ELSIF (32050 > handle_AinX) AND (handle_AinX >31950) AND handle_AinY <=32650 THEN (*X轴在中位 手柄下移 输出*)
ProvalveC_out :=Joy_YDWu ; (*比例阀CPWMXM1.03手柄Y轴下移输出值*)
ProvalveD_out :=Joy_YDWu ; (*比例阀D输出XM1.04手柄Y轴下移输出值*)
ProvalveE_out:=18500;
ELSIF (32750 > handle_AinY) AND (handle_AinY>32650) AND handle_AinX <=31950 THEN (*Y轴在中位 手柄左移*)
ProvalveB_out:=Joy_XLu;(*比例阀BPWMXM1.02手柄X轴左移输出值*)
ProvalveC_out :=Joy_XLu ; (*比例阀CPWMXM1.03手柄X轴左移输出值*)
ProvalveE_out:=18500;
ELSIF (32750 > handle_AinY) AND (handle_AinY>32650) AND handle_AinX >=32050 THEN (*Y轴在中位 手柄右移*)
ProvalveA_out:=Joy_XRu;(*比例阀APWMXM1.01手柄X轴右移输出值*)
ProvalveD_out :=Joy_XRu ; (*比例阀D输出XM1.04手柄X轴右移输出值*)
ProvalveE_out:=18500;
ELSIF handle_AinY >=32750 AND handle_AinX <31950 THEN (* B区*)
ProvalveB_out:=18500;(*比例阀BPWMXM1.02*)
ProvalveE_out:=18500;
ELSIF handle_AinY >=32750 AND handle_AinX >32050 THEN (* A区*)
ProvalveA_out:=18500; (*比例阀APWMXM1.01*)
ProvalveE_out:=18500;
ELSIF handle_AinY <=32650 AND handle_AinX >32050 THEN (*D区*)
ProvalveD_out :=18500;
ProvalveE_out:=18500;
ELSIF handle_AinY <=32650 AND handle_AinX <=31950 THEN (*C区*)
ProvalveC_out :=18500;
ProvalveE_out:=18500;
ELSE
ProvalveA_out:=0;(*比例阀APWMXM1.01手柄Y轴上移输出值*)
ProvalveB_out:=0;(*比例阀BPWMXM1.02手柄Y轴上移输出值*)
ProvalveC_out :=0 ; (*比例阀CPWMXM1.03手柄Y轴下移输出值*)
ProvalveD_out :=0 ; (*比例阀D输出XM1.04手柄Y轴下移输出值*)
ProvalveE_out:=0;
END_IF
(* 手柄数据和 PWM 都要实际测试的
X轴测试数据 左6400 中位 32000 右58300
Y轴测试数据 上58000 中位 32700 下 6500
上 AB 下CD 左BC 右AD
*)
其实写起来,挺方便简单的,ST语言能实现复杂算法的编程,相比梯形图等语言,可复制粘贴,大大缩短编程效率。
PLC入门编程实例之“无暇手柄”安全系统
无暇手柄
用两个按钮构成一个无暇手柄,两按钮必须同时按下,防止操作员单手就能控制,两按钮间的距离保持在300mm左右。
相关问答
实现机械、人、屏幕三者交互?麻烦懂人机交互PLC单片机等赐教?
plc可选西门子的,其他的也行,支持公开通信协议就行。组态软件,比如组态王等。剩下的就是搭建应用系统了,也就是业务逻辑控制关系这些。plc可选西门子的,其...
如何控制机械臂?
这个问题有点笼统,现在机械手臂主要有以下几种:1横移为步进电机,上下气缸控制(最早的结构),用机械手柄编程存储在单片机或PLC中控制机械手动做。2私服类...
工业机器人编程难学吗?
机器人的开发语言一般为C、C++、C++Builder、VB、VC等语言,主要取决于执行机构(伺服系统)的开发语言;而机器人编程分为示教、动作级机器人编程语言、任务级...
航车吊电路怎么控制?
一:电路系统有多种变频定子调压接触器PLC二:同样也有多种控制方式手柄控制遥控器控制驾驶室控制我们制造航车吊这类设备及电气系统一:电路系统有多种变...
液压绞车电控手柄控制的是什么?,绞车电控价格高么??
[回答]防过卷装置就是绞车到达停车位置未能及时停车之后自动断电停车的装置,一般是一个行程开关,把行程开关的常闭触点串联到绞车电控里面,如果用PLC控制...
司控器模拟实训台选哪家?
[回答]“标准测试”:为计算机设定的标准测试流程,用户按照屏幕要求一步一步进行操作,两个状态显示图模拟显示转换手柄和调速手柄位置。“单项测试”:可随...
自动化控制柜PLC维修?
[回答]电源与接地保护PLC本身的抗干扰能力一般都很强。通常.将PLC的电源与系统的动力设备电源分开配线对于电源线来的干扰,一般都有足够强的抑制能力。但...
怎么在控制面板开启cpu-ZOL问答
如果没看到这个图标说明你没安装成功STEP7Micro/WINV4.0SP9软件,那就谈不上连接PLC通讯了。计算机有COM1可用于与PLC通讯时,设置PG/PC接口参...
自动化控制柜PLC常见问题?
[回答](1)燃烧器在点火时未点着,但是油或瓦斯进人炉内,这时司炉工必须立即关闭油阀或瓦斯阀,然后往炉膛内吹蒸汽,待烟囱见汽后再重新点火。(2)燃烧器在点...
天车卷扬升降控制电路介绍?
具备故障自查反应。作为控制系列目前有两大类。一是继电器普通控制。故障率高,对维护人员要求不高,零件更换容易,价格便宜。二是PLC控制。故障率低,显示直...