使用java实现类似nc的功能_在FANUC机器人中使用后台运行逻辑实现PLC功能

后台逻辑概念

PLC是工业自动化领域常用的一种逻辑控制产品,以其性能稳定、兼容性好、可扩展性强、体积小、性价比高而被广泛应用。在机器人产品中,为了降低系统集成的难度,很多机器人产品自身也会在控制系统中嵌入一款小型的PLC系统,FANUC机器人也不例外,只是在机器人中它不在被称为PLC,而是被称为后台逻辑功能。

顾名思义,后台逻辑就是机器人前台运动程序运行过程中,同时后台也在运行的一种用于处理信号逻辑关系的控制程序,二者在运行关系上相互独立。后台逻辑程序可以监视前台的运行状态,同时也可以向前台发送控制信号。当然后台逻辑也可以通过I/O通信,与外部设备连接对机器人周边设备进行运行监视与控制。

后台逻辑功能特点

FANUC机器人后台逻辑功能具有以下特点:

  • 使用后台逻辑时,可以在后台执行只包含对应后台逻辑指令的TP程序,程序从头至尾周而复始的循环扫描,这一点与PLC的运行模式一致的。
  • 后台逻辑执行过程中不受急停、暂停、报警的影响。
  • 可同时执行8个TP程序作为后台逻辑,优先运行模式下,程序数目超过最大值时,程序停止执行,并发出错误报警。
  • 在后台逻辑程序执行期间,不能编辑该程序,不能作为通常的任务来执行。尚未开启后台运行的程序,可以将该程序作为通常的任务来执行。
  • 在后台执行程序时,不能通过改写相同名称的程序来加载。
  • 电源切断后,在下次通电时,后台逻辑程序将以相同的执行模式被自动执行。

后台逻辑运行模式与扫描时间

FANUC机器人后台逻辑功能具有两种运行模式:通常运行模式与优先运行模式。

通常运行模式下,可以在后台逻辑程序中执行所有复合运算指令。对每一个ITP(机器人扫描周期,通常为8ms),可扫描600个程序数据或者逻辑运算符。数目超过600时,扫描时间延长。比如,一个具有1600个操作逻辑,处理时间大约需要24ms。但是,如果优先运行模式的程序已经在后台执行时,每个ITP中执行的逻辑操作数量是:600 -优先运行模式的逻辑操作数的合计。

优先运行模式下,可以在后台执行所有复合运算指令。在优先运行模式下,可以保证每个机器人ITP内后台逻辑程序都可以被执行一次。优先模式下的最大逻辑操作数为540个。对需要高周期执行的指令,其将分割为若干个通常模式的后台逻辑,然后在优先运行模式下执行。

056b1e46a2155a518a1fba5531626530.png

后台逻辑程序可运行指令

机器人后台逻辑程序对指令与数据有一定的要求,与普通的TP程序不同,其不能控制任何运动轴。因此在编程时不能含有任何机器人轴运动指令,比如Joint、Linear、Circular等指令。后台逻辑程序中可运行的指令与数据如下表所示。

aa317d383b10dc373a1bd04ee6502f4c.png

后台逻辑程序在使用这些指令与数据时,应注意以下几点要求:

  • 不能将数据M[]指定为后台逻辑赋值语句等号左边部分。
  • 程序中包含有可运行的指令以外的指令时,在执行时会发生错误报警。
  • 在后台逻辑程序中不能使用脉冲指令,这点和PLC指令有所不同。
  • 后台逻辑,可以执行具有条件表达式的赋值语句,条件表达式为OFF的情况下,赋值语句不予执行。如指令IF(DI[1]),DO[1]=(DI[2]),程序被执行时,当Dl[l]为ON时,DI[2]被赋值给DO[1];当DI[1]为OFF时,DO[1]不会改变。
  • 使用JMP、 LBL指令时,请指定比JMP指令更后面行的LBL,指定前面行的LBL时,程序执行时系统会发生错误报警。
  • 执行包含JMP指令的程序时,由于程序具有分支,因此扫描时间会有变动。
  • 编写的条件表达式务必要用括弧圈起来,没有用括弧圈起来的将不被执行。例如普通TP程序中的条件表达式IF DI[1] =ON,JMP LBL[I],在后台逻辑程序中要修改为IF (DI[1]=ON,JMP LBL[1],才能被执行。
  • 对于在后台逻辑程序中使用RUN指令执行的程序,要求其暂停时,该程序不会暂停而结束。
  • 后台逻辑中执行了用户报警指令时,后台逻辑的程序不会停止。

后台逻辑实现方法

FANUC机器人后台逻辑功能的实现还是比较简单的,首先创建一个TP程序,名称可随意命名,如这里使用EXIO1。然后在程序详细信息中,将程序的组掩码全部设置为“*”,即在后台逻辑程序中将机器人运动轴(运动指令)全部屏蔽,只保留逻辑控制功能,这是使用后台逻辑的基本条件。

b5cfdf5e203fe60c7ad5bbae216fbe37.png

在创建的TP程序中添加需要的后台运行指令,如下图所示的指令。指令含义:如果后台扫描到信号DO[1]为ON,那么数值寄存器R[1]执行累加1;当DO[1]为OFF程序停止执行。如果扫描到DO[1]为ON时,那么数值寄存器R[1]被重置为0。

7cbefb8fdd4f821527a132171b852648.png

后台程序编写完成后,示教器的操作面板中按“MENU”按钮,然后依此选择“6 设置”→“1 后台逻辑”。

b772b5c18be3b1a98d154ffa8cfb4ee4.png

在打开的后台逻辑界面中,程序列下使用“[选择]”键选择需要后台运行的TP程序,如EXIO1。然后按“[运行]”键,将后台运行程序激活运行。

7e8b4fd5dac1bd16f729827ce768b369.png

示教器界面中依次打开I/O数字输出窗口与数值寄存器窗口,在I/O数字输出窗口中使用“ON”、“OFF”键分别置位与复位数字量输出信号DO[1]、DO[2],可以看到数字寄存器R[1]进行累加1操作、停止累加操作、被重置为0。

0ab8a4225cb811cd04cd68a8dc125711.png

返回后台逻辑界面,重新将后台运行程序EXIO1置为停止状态。再次切换到I/O数字输出窗口与数值寄存器窗口,重复上述步骤,可以发现,数值寄存器R[1]不在发生变化。

综上,可以看出,机器人后台运行逻辑功能非常类似于独立运行在机器人外部设备中的PLC,只要机器人处于开机状态,运行状态中的后台逻辑程序就会自动循环运行,来完成一些简单的信号监视与控制之类的逻辑功能。

The End


上一篇:Roboguide软件:基于I/O信号的机器人行走轴添加与配置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在IDEA使用Spark Streaming套接字数据源实现实时查找,可以按照以下步骤进行操作: 1. 首先,需要在pom.xml文件添加Spark Streaming依赖: ```xml <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.4.0</version> </dependency> ``` 2. 然后,创建一个Java类,编写Spark Streaming代码。下面是一个简单的例子: ```java import org.apache.spark.SparkConf; import org.apache.spark.streaming.Durations; import org.apache.spark.streaming.api.java.JavaDStream; import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; import org.apache.spark.streaming.api.java.JavaStreamingContext; public class CourseSearch { public static void main(String[] args) throws InterruptedException { // 创建SparkConf对象 SparkConf conf = new SparkConf().setAppName("CourseSearch").setMaster("local[*]"); // 创建JavaStreamingContext对象 JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(5)); // 创建套接字数据源,监听9999端口 JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999); // 过滤出包含“Java”关键词的行 JavaDStream<String> javaLines = lines.filter(line -> line.contains("Java")); // 打印符合条件的行 javaLines.print(); // 启动Streaming处理流 jssc.start(); // 等待Streaming处理流结束 jssc.awaitTermination(); } } ``` 3. 在控制台上启动Netcat服务,监听9999端口: ```sh nc -lk 9999 ``` 4. 运行CourseSearch类,在IDEA的控制台可以看到符合条件的行被打印出来。当你在Netcat输入一行包含“Java”的文本时,它将被过滤出来并打印出来。 这就是如何在IDEA使用Spark Streaming套接字数据源实现实时查找的简单步骤。你可以根据自己的需求修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值