欧姆龙NJ/NXPLC 全ST程序案例,全程序无加密,公司级框架,提供项目源码框架FB源码,触摸屏源码。 需要一定ST基础才能看懂。 重在分享编程思想 没用过该控制器的请慎用。 先安装1.2版本的环境 再升级到1.43 安装包里面的补丁一定要装。

嘿,各位PLC编程爱好者!今天来跟大家分享一个欧姆龙NJ/NX PLC的全ST程序案例,而且是无加密的公司级框架哦,同时还提供项目源码框架FB源码以及触摸屏源码~不过要提醒一下,这案例需要你有一定的ST基础才能看得懂,要是没用过该控制器,那可得慎用啦。
前期准备
在开始研究这些源码之前,环境安装可不能马虎。首先要安装1.2版本的环境,然后再升级到1.43。这里特别强调一下,安装包里面的补丁一定要装上,不然可能会出现各种意想不到的问题。这就好比搭建一座房子,地基打得稳,房子才能牢固嘛。
编程思想的核心——公司级框架
公司级框架是整个项目的骨架,它定义了整个项目的架构和运行逻辑。我们以一个简单的逻辑控制框架为例,假设我们有一个自动化生产线的控制项目。
// 定义一些全局变量
VAR_GLOBAL
// 生产线运行状态标志
ProductionLine_Running : BOOL;
// 设备故障标志
Equipment_Fault : BOOL;
END_VAR
// 主程序块
PROGRAM Main
// 初始化部分
ProductionLine_Running := FALSE;
Equipment_Fault := FALSE;
// 主逻辑部分
IF NOT Equipment_Fault THEN
ProductionLine_Running := TRUE;
// 这里可以添加生产线运行时的具体逻辑,比如设备的启动顺序等
// 例如启动输送带
CALL Conveyor_Start;
ELSE
ProductionLine_Running := FALSE;
// 处理故障逻辑,比如报警等
CALL Alarm_Handle;
END_IF;
END_PROGRAM
在这段代码里,我们首先定义了两个全局变量ProductionLineRunning和EquipmentFault,用来表示生产线的运行状态和设备是否故障。在主程序Main中,先对这两个变量进行初始化。然后通过判断EquipmentFault来决定生产线是否运行。如果没有故障,就将ProductionLineRunning设为TRUE,并调用启动输送带的功能块ConveyorStart;要是有故障,就将ProductionLineRunning设为FALSE,并调用处理报警的功能块Alarm_Handle。这就是一个简单的基于状态判断的控制逻辑,在实际的公司级框架中,会更加复杂和全面,涵盖更多的功能和设备。
FB源码:功能块的魅力
功能块(FB)源码是实现具体功能的关键部分。以刚才提到的Conveyor_Start功能块为例:
// Conveyor_Start功能块定义
FUNCTION_BLOCK Conveyor_Start
VAR_INPUT
// 输送带速度设定
Conveyor_Speed : REAL;
END_VAR
VAR_OUTPUT
// 输送带启动状态反馈
Conveyor_Started : BOOL;
END_VAR
VAR
// 内部变量,用于记录启动过程
Starting_Process : INT := 0;
END_VAR
// 功能块逻辑
CASE Starting_Process OF
0:
// 检查输送带是否准备好启动
IF Conveyor_Preparation_OK THEN
Starting_Process := 1;
END_IF;
1:
// 设置输送带速度
Set_Conveyor_Speed(Conveyor_Speed);
Starting_Process := 2;
2:
// 启动输送带
Conveyor_Start_Command := TRUE;
Conveyor_Started := TRUE;
Starting_Process := 3;
3:
// 等待输送带稳定运行
IF Conveyor_Running_Stable THEN
Starting_Process := 4;
END_IF;
4:
// 正常运行,保持状态
Conveyor_Started := TRUE;
END_CASE
END_FUNCTION_BLOCK
这个ConveyorStart功能块接收一个输入参数ConveyorSpeed,也就是输送带的速度设定值,输出一个反馈值ConveyorStarted,表示输送带是否成功启动。功能块内部使用一个StartingProcess变量来记录启动过程的不同阶段。首先检查输送带是否准备好启动,准备好就进入设置速度阶段,然后发送启动命令,等待输送带稳定运行,最后保持运行状态。这样通过功能块的形式,将输送带启动这样一个复杂的功能模块化,方便在不同的地方调用,也便于维护和管理。
触摸屏源码:人机交互的桥梁
触摸屏源码则负责搭建起人与PLC之间交互的桥梁。以一个简单的启动停止按钮界面为例:
// 触摸屏界面相关变量定义
VAR
// 启动按钮状态
Start_Button : BOOL;
// 停止按钮状态
Stop_Button : BOOL;
END_VAR
// 界面逻辑处理
IF Start_Button THEN
// 发送启动命令到PLC
PLC_Start_Command := TRUE;
END_IF;
IF Stop_Button THEN
// 发送停止命令到PLC
PLC_Stop_Command := TRUE;
END_IF;
在这段触摸屏源码中,定义了StartButton和StopButton两个变量来表示启动和停止按钮的状态。当检测到StartButton被按下时,就向PLC发送启动命令PLCStartCommand;当StopButton被按下时,就发送停止命令PLCStopCommand。通过这样的方式,操作人员可以在触摸屏上方便地控制PLC的运行,实现人机交互。

这次分享的欧姆龙NJ/NX PLC全ST程序案例,从环境准备到公司级框架、FB源码以及触摸屏源码,希望能给大家带来一些编程思路上的启发。大家要是有什么问题或者想法,欢迎在评论区交流呀!


被折叠的 条评论
为什么被折叠?



