基于Python语言的数字信号通讯装置及方法与流程

文档序号:16854376发布日期:2019-02-12 23:05阅读:449来源:国知局
基于Python语言的数字信号通讯装置及方法与流程

本发明涉及数据通讯技术领域,具体涉及一种基于python语言的数字信号通讯装置及方法。



背景技术:

python语言是一种功能强大的具有解释性、交互性和面向对象的第四代计算机编程语言。python也是一种脚本语言,它开发代码的效率非常高,它具有强大和丰富实用的第三方标准库,使得编程变得简洁快python语言的语法表达也非常优美易读;python支持广泛的应用程序开发,从简单的文字处理到基于web的开发及游戏设计的应用。使用python等高级语言编写控制程序、人工智能程序是未来的趋势。

数据通信主要有并行通信和串行通信两种方式。并行通信是以字节或字为单位的数据传输方式,除了8根或16根数据线、一根公共线外,还需要数据通信联络用的控制线。并行通信的传送速度快,但是传输线的根数多,成本高,一般用于近距离的数据传送。并行通信一般用于plc(programmablelogiccontroller)的内部,如plc内部元件之间、plc主机与扩展模块之间或近距离智能模块之间的数据通信。

串行通信是以二进制的位(bit)为单位的数据传输方式,每次只传送一位,除了地线外,在一个数据传输方向上只需要一根数据线,这根线既作为数据线又作为通信联络控制线,数据和联络信号在这根线上按位进行传送。串行通信需要的信号线少,最少的只需要两三根线,适用于距离较远的场合。计算机和plc都备有通用的串行通信接口,工业控制中一般使用串行通信。串行通信多用于plc与计算机之间、多台plc之间的数据通信。

在串行通信中,传输速率常用比特率(每秒传送的二进制位数)来表示,其单位是比特/秒(bit/s)或比特率(bps,bitspersecond)。传输速率是评价通信速度的重要指标。常用的标准传输速率有300、600、1200、2400、4800、9600和19200bps等。不同的串行通信的传输速率差别极大,有的只有数百bps,有的可达100mbps。

现有技术中,对于自动化的生产线的通讯方法主要为基于rs485通讯协议的plc与plc之间的数据交换,以及基于以太网通讯协议的plc与上位机之间的数据交换。基于高级程序语言python编写的plc与电脑主机之间的通讯方式暂时还是空白。



技术实现要素:

本发明实施例的目的在于提供一种基于python语言的数字信号通讯装置及方法,能够实现plc与控制主机之间不同类型的数字信号传输,解决新编程序与现有工业控制体系之间的通讯与信息交互问题。

为实现上述目的,本发明实施例提供一种基于python语言的数字信号通讯装置,所述通讯装置包括控制主机,所述控制主机配置有数据循环读取模块、进制转换模块、字符串判断模块、数据类型转换模块和数据回传模块;所述数据循环读取模块用于控制主机循环获取plc发送的开关量信号数据;所述进制转换模块与所述数据循环读取模块建立连接关系,进制转换模块用于对plc发送的开关量信号数据进行进制转换;所述字符串判断模块与所述进制转换模块建立连接关系,字符串判断模块用于进制转换后的开关量信号数据进行字符串判断;所述数据类型转换模块与所述字符串判断模块建立连接关系,数据类型转换模块用于对开关量信号数据进行字符串类型转换;所述数据回传模块与所述数据类型转换模块建立连接关系,数据回传模块用于控制主机将开关量信号数据发送到plc。

作为基于python语言的数字信号通讯装置的优选方案,所述通讯装置还包括usb接口模块,所述usb接口模块与所述数据循环读取模块和数据回传模块建立连接关系,usb接口模块用于控制主机与plc进行数据通讯。

作为基于python语言的数字信号通讯装置的优选方案,所述通讯装置还包括串口继电器模块,所述串口继电器模块通过所述usb接口模块与所述控制主机建立连接关系,串口继电器模块用于通过继电器接口供控制主机与plc发送对应于继电器接口的开关量信号。

作为基于python语言的数字信号通讯装置的优选方案,所述通讯装置还包括发送时间设定模块,所述发送时间设定模块与所述数据回传模块建立连接关系,发送时间设定模块用于对控制主机向plc发送开关量信号数据的周期时间进行设定。

作为基于python语言的数字信号通讯装置的优选方案,所述通讯装置还包括发送接口指定模块,所述发送接口指定模块与所述数据回传模块建立连接关系,发送接口指定模块用于在控制主机发送开关量信号给plc的过程中对继电器接口进行指定。

本发明实施例还提供一种基于python语言的数字信号通讯方法,所述通讯方法包括以下步骤:

步骤一:控制主机通过python语言程序段监控指定的com口,当打开串口后调用数据循环读取模块循环获取plc发送的开关量信号数据;

步骤二:调用进制转换模块对plc发送的开关量信号数据进行进制转换,将获取开关量信号数据转为16进制;

步骤三:调用字符串判断模块对进制转换后的开关量信号数据进行字符串判断;

步骤四:在python语言程序的自定义函数中执行指定串发送数据的方式,调用数据类型转换模块对开关量信号数据进行字符串类型转换;

步骤五:调用发送接口指定模块对控制主机发送开关量信号给plc过程中的继电器接口进行指定,调用数据回传模块控制主机将开关量信号数据发送到plc。

作为基于python语言的数字信号通讯方法的优选方案,所述步骤五中还包括,调用发送时间设定模块对控制主机向plc发送开关量信号数据的周期时间进行设定。

作为基于python语言的数字信号通讯方法的优选方案,所述步骤五中,数据回传模块在发送开关量信号给plc的过程中,发送接口指定模块指定的y0或y1继电器接口发送开关量信号数据,数据格式采用16进制数据包。

作为基于python语言的数字信号通讯方法的优选方案,所述控制主机和串口继电器模块通过usb接口模块物理连接,控制主机通过com口与串口继电器模块产生通信,串口继电器模块和plc物理相连,当控制主机发送数据至串口继电器模块时,串口继电器模块通过y0或y1继电器接口将开关量信号数据发送给plc,当plc触发信号时,通过python语言程序监控串口继电器模块的指定com口获取plc发送的开关量信号数据。

作为基于python语言的数字信号通讯方法的优选方案,控制主机通过usb接口模块连接8路串口继电器模块进行硬件物理上的通信,数据循环读取模块使用串口通信的方式实时获取plc发送的开关量信号,并通过高级编程语言python自带的程序类库serial控制物理连接的com口的开关。

本发明实施例具有如下优点:基于python高级语言的数据循环读取模块、进制转换模块、字符串判断模块、数据类型转换模块和数据回传模块等运用到和工业硬件的通信及工业体系的生产过程中。通过连接串口继电器模块可以方便的控制数据的输出和输入,实现更加有效的和硬件plc建立高效的消息交互。

附图说明

图1为本发明实施例提供的基于python语言的数字信号通讯装置示意图;

图2为本发明实施例提供的串口继电器模块采用干接点连接原理示意图;

图3为本发明实施例提供的串口继电器模块采用湿接点连接原理示意图;

图4为本发明实施例提供的基于python语言的数字信号通讯方法流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合

参见图1、图2和图3,基于python语言的数字信号通讯装置,所述通讯装置包括控制主机1,所述控制主机1配置有数据循环读取模块2、进制转换模块3、字符串判断模块4、数据类型转换模块5和数据回传模块6;所述数据循环读取模块2用于控制主机1循环获取plc发送的开关量信号数据;所述进制转换模块3与所述数据循环读取模块2建立连接关系,进制转换模块3用于对plc发送的开关量信号数据进行进制转换;所述字符串判断模块4与所述进制转换模块3建立连接关系,字符串判断模块4用于进制转换后的开关量信号数据进行字符串判断;所述数据类型转换模块5与所述字符串判断模块4建立连接关系,数据类型转换模块5用于对开关量信号数据进行字符串类型转换;所述数据回传模块6与所述数据类型转换模块5建立连接关系,数据回传模块6用于控制主机1将开关量信号数据发送到plc。

基于python语言的数字信号通讯装置的一个实施例中,所述通讯装置还包括usb接口模块7,所述usb接口模块7与所述数据循环读取模块2和数据回传模块6建立连接关系,usb接口模块7用于控制主机1与plc进行数据通讯。所述通讯装置还包括串口继电器模块8,所述串口继电器模块8通过所述usb接口模块7与所述控制主机1建立连接关系,串口继电器模块8用于通过继电器接口供控制主机1与plc发送对应于继电器接口的开关量信号。所述通讯装置还包括发送时间设定模块9,所述发送时间设定模块9与所述数据回传模块6建立连接关系,发送时间设定模块9用于对控制主机1向plc发送开关量信号数据的周期时间进行设定。所述通讯装置还包括发送接口指定模块10,所述发送接口指定模块10与所述数据回传模块6建立连接关系,发送接口指定模块10用于在控制主机1发送开关量信号给plc的过程中对继电器接口进行指定。

本实施例中串口通讯设置为:波特率9600(默认值),8位数据位,1位停止位,无校验;开关量信号数据的形式为:485地址+功能码+数据个数+数据+crc校验码低+crc校验码高。本发明实施例中控制主机1通过python语言程序段监控指定的com口,当打开串口后调用数据循环读取模块2循环获取plc发送的开关量信号数据,获取开关量信号数据并将其转为16进制,程序对接收的数据字符串进行判断,根据数据执行其它操作。

数据转换的实现代码如下:

str(binascii.b2a_hex(l_serial.readline(n)),encoding='utf-8')

具体的,控制多个串口继电器模块8输出数据:“210f0000000801693ca3”(16进制),其中,“21”为1字节,代表本模块地址,地址范围:01-ff;“0f”占1字节,代表功能代码,控制多个继电器吸合;“0000”占2字节,代表寄存器地址,用于输出寄存器地址;“0008”占2字节,代表输出线圈长度,用于输出8路继电器;“01”占1字节,代表输出的字节数,后跟1个字节输出的数据,“69”占1字节,为输出的数据,用于继电器输出数据;“3ca3”占2字节,代表循环冗余(cyclicredundancycheck,crc)校验,用于前面所有数据的crc校验码。数据返回:210f00000008536d(16进制)。输出的数据“69”转换成2进制数为“01101001”,从左至右分别对应8路继电器输出信号y07-y00的状态,即y6、y5、y3、y0吸合,y1、y2、y4、y7断开。装置各模块接收到正确的命令后,根据命令作出相应动作,并将应答指令发回控制主机1,表示通讯成功。

具体的控制单个继电器(写单个线圈)输出,发送:“21050000ff008b5a”,“21”占1字节,代表本模块地址,地址范围:01-ff;“05”占1字节,代表功能代码,用于吸合某一路继电器;“0000”占2字节,代表寄存器地址,即0000代表继电器y0地址;同理0001代表继电器y1地址;0002代表继电器y2地址;0003代表继电器y3地址;0004代表继电器y4地址;0005代表继电器y5地址;0006代表继电器y6地址;0007代表继电器y7地址;“ff00”占2字节,用于输出数据,ff00代表继电器吸合,当为0000时代表继电器断开;“8b5a”占2字节,代表crc校验,用于前面所有数据的crc校验码。原数据返回:“21050000ff008b5a”(16进制),装置各模块接收到正确的命令后,根据命令作出相应动作,并将应答指令发回控制主机1,表示通讯成功。

参见图4,本发明实施例还提供一种基于python语言的数字信号通讯方法,所述通讯方法包括以下步骤:

s1:控制主机1通过python语言程序段监控指定的com口,当打开串口后调用数据循环读取模块2循环获取plc发送的开关量信号数据;

s2:调用进制转换模块3对plc发送的开关量信号数据进行进制转换,将获取开关量信号数据转为16进制;

s3:调用字符串判断模块4对进制转换后的开关量信号数据进行字符串判断;

s4:在python语言程序的自定义函数中执行指定串发送数据的方式,调用数据类型转换模块5对开关量信号数据进行字符串类型转换;

s5:调用发送接口指定模块10对控制主机1发送开关量信号给plc过程中的继电器接口进行指定,调用数据回传模块6控制主机1将开关量信号数据发送到plc。

基于python语言的数字信号通讯方法的一个实施例中,所述s5中还包括,调用发送时间设定模块9对控制主机1向plc发送开关量信号数据的周期时间进行设定,本实施例中周期时间设置为1s。数据回传模块6在发送开关量信号给plc的过程中,发送接口指定模块10指定的y0或y1继电器接口发送开关量信号数据,数据格式采用16进制数据包。所述控制主机1和串口继电器模块8通过usb接口模块7物理连接,控制主机1通过com口与串口继电器模块8产生通信,串口继电器模块8和plc物理相连,当控制主机1发送数据至串口继电器模块8时,串口继电器模块8通过y0或y1继电器接口将开关量信号数据发送给plc,当plc触发信号时,通过python语言程序监控串口继电器模块8的指定com口获取plc发送的开关量信号数据。控制主机1通过usb接口模块7连接8路串口继电器模块8进行硬件物理上的通信,数据循环读取模块2使用串口通信的方式实时获取plc发送的开关量信号,并通过高级编程语言python自带的程序类库serial控制物理连接的com口的开关。程序类库serial封装了对串口的访问,支持不同的字节大小、停止位、校验位和流控设置。可以有或者没有接收超时。类似文件的api(applicationprogramminginterface,应用程序编程接口),例如读和写,也支持读取流读数据等。支持二进制传输,没有零值消除,没有换行符转换。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1