热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

碰焊机触摸屏软件开发

1软件需求人机界面为MCGS10寸触摸屏1062KW,接口为RS232RS484以太网,供电电源为24V。机触摸屏的功能为机器人的基本状态信息显示和对

1 软件需求

人机界面为MCGS 10寸触摸屏1062KW,接口为RS232/RS484/以太网,供电电源为24V。机触摸屏的功能为机器人的基本状态信息显示和对机器人的控制及参数给定。

目前设计的小车分成两栏共10格,需要将对应的触摸屏大致分成相应的10大格,会在工艺上规定每个格子只能放哪几类工件,然后在触屏上每个格子上给出相应的型号,下拉菜单或者缩略图等需要具体沟通,当来料小车停到位,工人在触屏上选好对应的工件,开启,触屏跟机器人控制柜通信,机器人控制柜控制碰焊机进行对应的碰焊作业。

采用RS232让触摸屏和贝加莱控制器通讯,通讯线缆距离大约为2米。控制信息包括:使能、启动、停止、急停、工件型号、槽位(1~10),数量,初始化(复位)。状态显示信息有机器人状态(就绪,使能,运行,暂停),故障信息,工序信息等。


2 通讯接口开发


2.1 硬件连接

触摸屏COM口RS485/RS232的通讯接口定义如下:


RS485 A+

RS485B-

RS232 RX

RS232 TX

GND

7

8

2

3

5

RS232需要将贝加莱控制器的RX连接触摸屏的3口,将控制器的TX连接至触摸屏2口,GND连接至触摸屏的5口。


2.2 通讯设备设置

RS232通讯设备采用通用串口父设备,子设备采用莫迪康ModbusRTU协议,添加以下设备窗口,如图2所示。

图2 添加通讯设备

       通用串口父设备的属性为:

串口端口号:RS232对应的是0-COM1,1-COM2对应的是RS485通讯

通讯波特率:11 - 57600bps

数据位:1 - 8位

停止位:0 - 1位

数据校验位:0 – 无校验

莫迪康ModbusRTU设备的属性需要设置设备的地址,将从站地址设为1,该地址需要与控制器下面的地址相对应。


2.3 通讯协议定义

(1)读取寄存器(功能码:03)

触摸屏请求指令格式为:


字节

0

1

2

3

4

5

6

7

含义

1

03

ADDRH

ADDRL

NUMH

NUML

CRCL

CRCH

地址

功能码

待读取参数首地址

指令数(参数个数1~125)

CRC校验

控制器响应指令格式为:


字节

0

1

2

3

4

5

6

含义

1

03

BYTECNT 

DATAH

DATAL

DATAH

DATAL

CRCL

CRCH

地址

功能码

响应字节数=

指令数*2

DATA1

DATA2

CRC校验

例:触摸屏请求读取地址为101的参数的值,控制器返回值为5

触摸屏请求:1 3 0 100 0 1 CRC

控制器响应:1  03  02  00  05 CRC

要读取的状态信息依次为:机器人状态,故障信息

(2)写乘法寄存器(功能码 16)

触摸屏向控制器连续写入多个字节,客户端发送数据格式为:


字节

0

1

2~3

4~5

6

7~8

……

含义

1

16

ADDR

NUM

BYTECNT 

DATA1

DATAn

CRCL

CRCH

地址

功能码

首地址参数

指令数

(1~100)

字节数

第1个数据

第n个数据

CRC校验

控制器响应返回数据格式为:


字节

0

1

2~3

4~5

6

7

含义

1

16

ADDR

NUM

CRCL

CRCH

地址

功能码

写入首地址

指令数

CRC校验

第1个槽位的地址为0020,共10个槽,依次写入每一个槽位放置的物料的类型

和数量

触摸屏发送:1 16 0 20 0 10 20 1 2 3 4 5 6 7 8 ……CRC

控制器返回:1  16  0  20  0 10 CRC

使能命令:

使能:地址为0001

启动:地址为0002

停止:地址为0003

急停:地址为0004

发送启动命令的数据为:
客户端请求: 1 16  0 2  0 1  2  0 1 CRC

服务器响应: 1 16   0 2   0 1  CRC

(3)CRC校验函数

cBuffer:计算CRC校验码的数组。

iBufLen:该数组的长度。

unsigned int CRC_Verify(unsigned char *cBuffer, unsigned int iBufLen)

{

    unsigned int i, j;                 //#define wPolynom 0xA001

    unsigned int wCrc = 0xffff;

    unsigned int wPolynom = 0xA001;

/*---------------------------------------------------------------------------------*/

    for (i = 0; i

    {

        wCrc ^= cBuffer[i];

        for (j = 0; j <8; j++)

        {

            if (wCrc &0x0001)

            {   wCrc = (wCrc >> 1) ^ wPolynom;  }

            else

            {  wCrc = wCrc >> 1;  }

         }

     }

return wCrc;

}


推荐阅读
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
author-avatar
可爱鼠标1985
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有