plc通信协议.docx
《plc通信协议.docx》由会员分享,可在线阅读,更多相关《plc通信协议.docx(7页珍藏版)》请在冰豆网上搜索。
plc通信协议
竭诚为您提供优质文档/双击可除
plc,通信协议
篇一:
西门子plc通信协议
西门子plc通信协议
a.协议综述
1.本协议为uss协议(universalserialinterfaceRrotocol)。
采用主从寻址方式,最多一个主机,31个从机(数据报中只有5位用来表示地址)。
2.数据报传输方式
数据报传输有循环和非循环方式。
循环方式:
主机定时发送任务数据报给从机,并等待接收从机发回的响应数据报。
从机收到任务数据报后,如果校验无错,且地址相符,就发送相应的响应数据报。
在此种方式下,从机应监视数据传送时间看是否超时,若过了一定时间仍未收到新的任务数据报,则继续发送对上一任务的响应,但数据使用当前的实时数据。
循环方式可用于过程控制。
非循环方式:
主机发送任务数据报不需按任何时间规律,从机不监视任务数据报是否超时。
3.广播
数据报的地址字节中“广播位”置为1表示为广播数据报,所有从机都接收,但不发送响应数据报。
4.数据报结构
stx:
1字节,数据报头,值为0x02。
由于仅根据0x02并不能准确判断是否是一帧的开始,所以在一帧之前必须有至少2字符的起始延迟,具体时间如下表:
lge:
1字节,为报文长度,指从adR到bcc的字节数。
lge≤254lge=n+2
adR:
1字节
第1-4位表示从机地址;
第5位为1表示广播数据报,则0-4位无用;
第6位为1表示此数据报为镜像数据报,从机应不作任何改变原样发回;第7位为1表示特殊数据报,它的格式与本协议所定义的不同,各设备自己定义,仍根据是否广播决定是否回应;第5、6位不能同时为1。
1-n为有效数据,其意义和长度见第c节。
bcc:
blockcheckcharacter,校验字节,为从stx到n.的异或和。
诊断:
通信状态信息可以显示在控制面板上,各参数意义见第a-10页。
发送顺序:
发送字时先发送高字节,发送双字时先发送高字。
b.物理接口
采用eia485标准,若点对点通信也可用Rs232。
c.有效数据的定义
2.有效数据块的总体结构
有效数据分成两个区域:
pkw区和pzd区。
pkw区为参数id和值,包括任务id、响应id、参数号、参数值等;
pzd区为过程数据区,包含自动控制所需的数据:
控制字和设定值(主机→从机)、状态字和实时值(从机→主机)。
uss协议在串行接口上可以设置波特率、总线地址、超时时限、pkw长度和pzd长度(以word为单位)。
pkw长度为127时表示变长,需根据具体任务来判断长度。
pzd则最长不超过16个字。
通过此处的设置使主从取得
一致。
3.pkw区
pkw区包含任务(主→从)或者响应(从→主)信息。
分为3部分:
pke:
1word,用于标识任务、响应。
ind:
1word,即索引index,具体见后。
pwe:
根据任务不同长度不同,携带参数值、文本或参数描述数据。
3.1pkw结构
pkw区可定义为3word定长、4word定长或变长。
3word定长:
4word定长:
变长:
3.2pkw各部分说明3.2.1pke(parameterid)
3.2.1.1ak:
任务和响应id
ak由15、14、13、12
四位组成,作为任务和响应的标识。
例如:
任务id0001表示召唤一个word参数值,至于具体哪个参数,在参数号pnu中指定。
响应id0001则表示上传一个word参数值,pnu仍指明参数号,数值放在pwe中。
其他id定义见第c-12、13、14页。
若任务不能被执行,则返回响应id0111,并将错误代码放在pwe中。
错误代码定义见第c-14页。
有的任务会用到索引ind,例如任务0110召唤参数值,参数存在于一个数组中,由ind指明所要召唤的元素下标,ind为255表示召唤所有元素。
一个任务和响应一般只涉及到一个参数,只有当ind值为255时例外。
对于任务id0000(notask),从机应返回id0000(noresponse)。
主机收到响应数据报后不需要通知从机。
3.2.1.2sp:
参数改变报告
pke的第11位sp为参数改变报告标志。
当某个参数值(pwe)改变时,从机向主机发送参数改变报告。
所有参数都在pbe中被定义为主动或被动参
bitno:
ak:
任务和响应idsp:
参数改变报告pnu:
参数号
数,只有主动参数改变时从机才报告。
过程如下:
正常的任务/响应顺序被中断,响应数据报不再是对上一任务的响应,其id被设为1001~1100(parameterchangereport),改变的参数编号放在pnu中,数值放在pwe中,同时改变sp位(0→1或1→0)。
主机接收后将sp置为与此响应数据报相同,作为确认消息发送给从机。
从机不断发送同一参数改变报告,直到收到确认数据报后才恢复任务执行,或者如果还有其他参数改变,则发送下一个参数改变报告。
若是一个任务数据报同时改变了所有的参数值(ind=255),而从机只能发定长数据报时,响应帧中不发送改变后的参数值,只是置ind为255。
关于参数改变的例子请见第c-17页。
3.2.1.3pnu:
参数号
参数及其编号各种设备各不相同,需在手册中查找。
3.2.2ind索引
索引ind在如下任务中会被用到:
读写参数描述pbe;读写数组中的值;读写文本。
ind为1个字长,但只有0-7位才表示索引值。
8、9位为读写文本扩展。
10-15位各种设备自定义。
详细使用情况见第c-19至c-22页。
3.2.3pwe参数值
用以存放参数值,其长度和内容详见第c-23、24页。
4.pzd区
pzd区独立于pkw区,是有效数据的第二部分。
pzd区的长度由pzd数据个数和大小(字,双字)决定。
在控制面板上设定后pzd区长度即固定,但不超过16个字。
也可以不传送pzd,则pzd长度设为0。
控制字和状态字总在pzd1,主要设定值和实时值在pzd2,其他控制字、状态字、设定值和实时值均在pzd3-pzdn。
控制字、状态字各位的意义见第c-27~c-31页。
关于通信的例子见第c-38页。
篇二:
plc通信协议
一、通信原理分析1.1自由口通信模式介绍
cpu的串行通信口可以由用户程序控制,这种操作模式称为自由端口模式,当选择了自由端口模式时,用户程序可以使用接收中断,发送中断,发送指令(xmt)和接收指令(RcV)来进行通信操作。
在自由端口模式下,通信协议完全由用户程序控制,有很大的灵活性。
smb30(用于端口0)和smb130(如果cpu有两个端口,则用于端口1)用于选择波特率、奇偶校验、数据位数、通信协议。
只有cpu处于Run模式下时,才可以进行自由端口通信,通过向smb30(端口0)和smb130(端口1)的协议选择区置1,可以允许自由端口模式。
处于自由端口模式时,ppi通信协议被禁止,此时不可以于编程设备通信(比如对程序进行监控或对cpu进行操作)当cpu处于stop模式时,自由端口被禁止,通信口自动切换为ppi协议,从新建立与编程设备的正常通信。
在程序中可以用sm0.7(反应cpu当前方式的模式开关)来控制自由端口模式进入,当sm0.7为“0”时,模式开关处于tRem位置;当sm0.7为“1”时,模式开关处于Run位置。
只有模式开关位于Run位置时,才允许自由端口模式,当需要使用编程设备对程序进行状态监控或对cpu进行操作可以将模式开关改变到其他位置。
1.2发送与接收指令介绍
用xmt指令可以方便的发送一个或多个字节缓冲区的内容,最多为255个字节。
如果有一个中断服务程序连接到发送结束事件上,在发完缓冲区的最后一个字符时,则会产生一个中断(对端口0的中断事件为9,对端口1的中断事件为26),当然也可以不用中断来判断发送指令是否完成,而是监控sm4.5或sm4.6的状态,以此来判断发送是否完成。
用RcV指令可以方便的接收一个或多个字节缓冲区的内容,最多为255个字节。
这些字符存储在接收缓冲区中。
如果有一个中断程序连接到接收完成事件上,在接收到缓冲区中的最后一个字符时,则会产生一个中断(对端口0为中断事件23,对端口1为中断事件24)。
当然还是可以不用中断事件来判断接收信息是否结束,而是通过监视smb86(端口0)或smb186(端口1)状态的变化来判断接
收状态的结束。
当接收指令没有被激活或者是接收已经结束时,smb86或smb186为1,当正在接收时,它们为0。
1.3Rs-485串行通信硬件实现
图1串行通信实现
由于s7-200plc采用Rs485标准接口,msp430开发板也是标准的Rs485接口,所以plc与msp430的连接可以直接通过一根Rs485电缆相连接。
但是由于电脑的端口为Rs232端口,所以plc与电脑的连接需要用到Rs232转Rs485,硬件连接如图1。
二、通信协议设计
图2plc与单片机通信结构图
如图2示:
1、plc与单片机采用自由口通信模式,plc与单片机之间是主从关系。
s7-200的通信端口是半双工Rs-485芯片,发送指令和接收指令不能同时有效,其通信采用主从轮询的方式:
plc始终处于主导地位,始终具有初始传送优先权,所有通讯均由plc来启动,向从站发送数据或者从从站中读取数据都是主站以命令帧形式发送。
plc与单片机初始化状态时均处于接收信息状态
2、plc可以主动的向各单片机发送数据,各单片机依据plc所发数据的站地址来区分该信息是否该自己响应。
单片机在需要主动向plc发送数据的时候,
必须先向plc发送申请。
plc在接收到某个单片机的申请信号后,会根据实际情况先向所有单片机发送禁止向主机发送数据的命令,然后向申请通讯的单片机发送命令允许其发送数据给主机。
plc接收完该单片机的数据后,再向所有单片机发广播允许所有单片机向其发送申请。
2.1通信设备参数设置
s7-200系列plc(cpu226)与自由口模式通信有关的寄存器为smb30、smb130及其它特殊寄存器,它们主要用于通讯方式的设置与运行管理。
在本次设计中,用到cpu226端口0,其通讯控制由smb30设置。
smb30=16#09(00|0|010|01),即:
无奇偶校验(00)、每个字符8位(0)、波特率为9600bit/s(010)、自由口协议(01)。
2.2数据格式2.2.1广播
plc作为主站,可以直接向单片机发送数据;而单片机作为从站不能主动向plc发送数据。
当单片需要主动向plc发送数据的时候,可先向plc发送申请。
plc接收到申请以后,判断此时通讯通道是否空闲,如果空闲则响应申请,并向所有单片机广播此时通信繁忙不允许发送申请,然后只允许已发送申请的单片机发送数据;当plc与该单片机通讯完毕后,plc向所有单片机发广播,此时通信空闲,允许单片机发送申请。
同时,当单片机接收到广播消息的时候,首先判断是通信繁忙的信号还是通信空闲的信号,只有当接收到了通信空闲信号时,才可以向plc发申请。
单片机对plc的广播信号不做反馈处理。
通信忙碌(字符@,ascii码为64)、通信空闲(字符$,ascii码为36),单片机在接收到@时,不可向plc发送申请。
只有当接收到$且需要向plc传输数据的时候才能发送申请。
广播数据格式:
2.2.2plc发送数据格式
经过分析得知:
plc向单片机发送的数据包括两种,一种是控制单片机动作的控制信号;另一种是当接收到单片机发送来的数据以后,经过比较校验要发