一、中断、多线程、多任务

中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。在运行一个程序的过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段。

硬件多线程是指多核的CPU,例如英特尔的入门级CPU i3 10100为4核八线程、AMD的Ryzen 3 3300X为4核八线程。

软件多线程则是通过快速的在不同线程之间进行切换,由于时间间隔很短从而给人造成一种多个线程同时运行的假象。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

多任务,任务是指独立的应用程序,“多任务”类似于手机或者电脑的应用程序的“两开”、“多开”。abb有一个选项包623-1 multitasking 可以实现最多同时运行14个RAPID程序,用于监控外部设备或先进计算。

二、中断触发socket发送实时位置给上位机,0.1s周期,精确到小数点后2位

abb提供了永久变量改变时中断、模拟量信号到达指定范围时中断、数字量及组输入组输出信号为1时或改变时中断、定时触发中断等。

那么,咱们做个例子,plc或上位机点击按钮实现实时位置上传功能。首先想到的实现方法是为abb添加623-1 multitasking选项包,不过现在咱们了解了中断,用两个中断也可实现这个功能。

先用永久变量改变时中断触发一个中断程序,再在这个中断程序中添加此永久变量为1时,启动定时中断,触发最小间隔为0.1s的、发送当前实时位置的程序。

    LOCAL VAR num server_port:=4002;LOCAL VAR socketdev server_socket;LOCAL VAR socketdev client_socket;PERS num Sync_var_robot;LOCAL VAR intnum intr_var;LOCAL VAR intnum intr_send_robstatus;LOCAL CONST num send_cycletime:=0.1;VAR string receiveStr;VAR num receiveDataNumb;VAR bool OK;VAR robtarget CurrentPos;VAR num CurrentX;VAR num CurrentY;VAR num CurrentZ;VAR num CurrentA;VAR num CurrentB;VAR num CurrentC;VAR string sendStr;PROC main()Init_socket server_socket,server_port;Wait_for_client server_socket,client_socket;init_var_interrupt;WHILE TRUE DOIF (SocketGetStatus(client_socket)=SOCKET_CONNECTED) THENSocketReceive client_socket, \str:=receiveStr\NoRecBytes:=receiveDataNumb;ELSEExitCycle;ENDIFOK:=StrToVal(receiveStr,Sync_var_robot);ENDWHILEENDPROCPROC Init_socket(VAR socketdev server_socket,num port)IF (SocketGetStatus(client_socket)<>SOCKET_CLOSED) SocketClose client_socket;IF (SocketGetStatus(server_socket)<>SOCKET_CLOSED) SocketClose server_socket;IF (SocketGetStatus(server_socket)=SOCKET_CLOSED) SocketCreate server_socket;! GetSysInfo(\LanIp) return "VC" in vitual controler!IF (SocketGetStatus(server_socket) = SOCKET_CREATED) SocketBind server_socket, GetSysInfo(\LanIp), port;IF (SocketGetStatus(server_socket)=SOCKET_CREATED) SocketBind server_socket,"127.0.0.1",port;IF (SocketGetStatus(server_socket)=SOCKET_BOUND) SocketListen server_socket;ERROR! raise errors to calling codeRAISE ;ENDPROCPROC Wait_for_client(VAR socketdev server_socket,VAR socketdev client_socket,\num wait_time)VAR string client_ip;VAR num time_val:=WAIT_MAX;! default to wait-foreverIF Present(wait_time) time_val:=wait_time;! close client_socket for this portIF (SocketGetStatus(client_socket)<>SOCKET_CLOSED) SocketClose client_socket;WaitUntil(SocketGetStatus(client_socket)=SOCKET_CLOSED);! waiting for the connectionTPWrite "waiting for connection.";SocketAccept server_socket,client_socket,\ClientAddress:=client_ip,\Time:=time_val;TPWrite "Client at "+client_ip+" connected.";ERRORRAISE ;ENDPROCLOCAL PROC init_var_interrupt()IDelete intr_var;CONNECT intr_var WITH var_handler;IPers Sync_var_robot,intr_var;ERRORRAISE;ENDPROCLOCAL TRAP var_handlerIDelete intr_send_robstatus;IF (Sync_var_robot=1) THEN! Sync_var_robot = 1 means send robstatusinit_send_robstatus_interrupt;ENDIFENDTRAPLOCAL PROC init_send_robstatus_interrupt()IDelete intr_send_robstatus;CONNECT intr_send_robstatus WITH send_robstatus;ITimer send_cycletime,intr_send_robstatus;ERRORRAISE;ENDPROCLOCAL TRAP send_robstatusCurrentPos :=CRobT();CurrentX:=CurrentPos.trans.x;CurrentY:=CurrentPos.trans.y;CurrentZ:=CurrentPos.trans.z;CurrentC:=EulerZYX(\x,CurrentPos.rot);CurrentB:=EulerZYX(\y,CurrentPos.rot);CurrentA:=EulerZYX(\z,CurrentPos.rot);sendStr:=NumToStr(CurrentX,2)+";"+NumToStr(CurrentY,2)+";"+NumToStr(CurrentZ,2)+";"+NumToStr(CurrentA,2)+";"+NumToStr(CurrentB,2)+";"+NumToStr(CurrentC,2);SocketSend client_socket\str:=sendStr;ENDTRAP

ABB机器人socket通讯实时位置上传,中断触发相关推荐

  1. ABB机器人socket通讯

    文章目录 前言 一.效果展示 二.知识储备 1.准备工作 2.套接字通信的示意图 3.客户端指令 4.服务器指令 三.源码说明 前言 Socket Messaging的作用是允许RAPID程序员通过T ...

  2. ABB机器人socket通讯和数据提取及转换

    ABB机器人创建socket,需要有616-1 PC-INTERFACE选项 同时需要新建socketdev类型的变量 套接字可分为客户端和服务端,这里一般把ABB作为客户端 PROC TCP_Soc ...

  3. abb和plcsocket通讯_详解ABB机器人SOCKET通讯

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...

  4. narwal无法连接机器人_ABB机器人驱动通讯连接不上故障维修方法

    ABB机器人驱动通讯连接不上故障维修方法 上海恒税电气有限公司专注ABB工业机器人保养维修,ABB机器人电机维修,ABB机器人驱动器维修,ABB机器人周边上门维修,ABB机器人伺服电机维修,ABB机器 ...

  5. 实现C# 与ABB机器人建立通讯,并对机器人进行实时的控制

    C# 与ABB机器人建立通讯 安装软件 VS2013+RobotStudio5.61+PC SDK5.61 注: 1.RobotStudio 和 PC SDK 可以去官网下载 .http://deve ...

  6. 【无标题】音频蓝牙语音芯片,WT2605C-32N实时录音上传技术方案介绍

    基于WT2605C-32N音频蓝牙语音芯片的实时录音上传技术方案介绍 现代社会,信息技术的发展尤其迅速,信息和数据的重要性和安全性日渐深刻,在某些特殊场合,因为工作上的需要,或者日常生活的需求,往往需 ...

  7. ABB机器人profinet通讯传输正负整数及浮点数

    前言 大家好,之前在其它公众号上看到有篇 付费文章 介绍 ABB机器人profinet通讯传输正负整数及浮点数 ,抽空测试了以下,发现它提供的代码还是有问题的. 今天我把完整的测试后的代码发布出来,供 ...

  8. 监测现场实时数据上传到中移物联网OneNet云平台

    OneNet,中移物联网云平台,是由中国移动打造的PaaS物联网开放平台.平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件.智能家居产品提供完善的物联网解决方案(摘自36 ...

  9. H5调用手机摄像头,实时拍照上传(旧)

    H5调用手机摄像头,完成拍照,实时上传(旧) 项目开发中,偶尔会遇到网页中调用手机摄像头,通过相册选择或直接实时拍照的方式,完成图片上传的功能型需求. 今天,就通过一个小的案例,演示一下完整的实现流程 ...

最新文章

  1. des vue 双倍长 解密_3DES双倍长加密 - osc_ojx9hm4t的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. docker下的mysql my.ini_Docker + MySQL 主从环境搭建
  3. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
  4. 死磕 java集合之TreeMap源码分析(三)- 内含红黑树分析全过程
  5. 数据库 MySQL 如何设置表的主键自增起始值
  6. [Err] 22007 - [SQL Server]从 nvarchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值。
  7. 第二周linux微职位
  8. php 魔术方法 isset,PHP 魔术方法 __isset __unset (三)
  9. ZetCode Servlet 教程
  10. JVM(4):Jvm调优-命令篇
  11. 企业互联网+转型实战:如何进行PB级别数据的架构变迁
  12. 课设——C语言学生成绩管理系统
  13. Excel图表制作(二):动态图表制作
  14. 有没有什么软件可以把视频转文字?看看这些转换软件
  15. 聚合支付与第四方支付平台的本质区别
  16. java 多个PDF合成一个
  17. 程序员入职蚂蚁金服第一天就想离职,这并不是个例!
  18. 结合Bootstrap实现头像上传前预览
  19. VUE父组件向子组件传递数据
  20. HDU 5128 The E-pang Palace

热门文章

  1. 类模板函数模板从属类型
  2. java数组显示_关于java:如何在数组中显示某些值的组合?
  3. k210自学快速入门(附网址)
  4. 华为7c系统语言在哪里,(简单)华为畅玩7C LND-AL30的Usb调试模式在哪里开启的步骤...
  5. 拒绝垃圾专业化学:选择正确的专业远比多考几分更重要 ——致全国高考考生和家长的一封信...
  6. 激光测距传感器有哪些优势
  7. 程序员如何选择macbookpro以及新macbookpro开箱
  8. websocket协议详解与抓包分析
  9. java识别不了欧元 符号_java – 使用unicode显示欧元符号并将字符更改为大写
  10. 计算机网络中对等层是什么,对等层的概念