通讯协议(例子)
单片机通讯协议有哪些

单片机通讯协议有哪些1. 串行通信协议串行通信协议是一种逐位传输数据的通信协议,常用于单片机与外部设备之间的通信。
以下是几种常见的串行通信协议:(1) 串行通信协议1该协议使用一条数据线和一条时钟线进行通信。
数据线上的数据根据时钟线上的时钟信号进行同步传输。
这种协议简单易用,适合短距离通信。
(2) 串行通信协议2该协议采用多条数据线和一条时钟线进行通信。
数据线上的数据同时传输,时钟信号用于同步数据。
这种协议具有较高的传输速率和抗干扰能力,适合长距离通信。
(3) 串行通信协议3该协议使用一条数据线和一条使能线进行通信。
数据线上的数据根据使能线上的使能信号进行传输。
这种协议适合于低速率的通信。
2. 并行通信协议并行通信协议是一种同时传输多个数据位的通信协议,常用于高速数据传输。
以下是几种常见的并行通信协议:(1) 并行通信协议1该协议使用多条数据线进行通信,每条数据线传输一个数据位。
并行通信协议1适用于要求高速率和并行传输的应用。
(2) 并行通信协议2该协议使用多条数据线传输多个数据位,并使用握手信号进行数据的同步。
并行通信协议2具有较高的传输速率和较低的传输延迟,适用于多媒体数据传输等应用。
(3) 并行通信协议3该协议使用多条数据线进行通信,并采用差分信号传输方式,提高了抗噪声和抗干扰能力。
并行通信协议3适用于长距离通信和高速数据传输。
3. 总线通信协议总线通信协议是一种多个设备共享同一条数据线进行通信的协议,常用于单片机与外围设备的通信。
以下是几种常见的总线通信协议:(1) 总线通信协议1该协议采用主从结构,主设备控制整个通信过程,从设备根据主设备的指令进行响应。
总线通信协议1具有简单可靠的特点,适用于小规模系统。
(2) 总线通信协议2该协议采用多主结构,多个主设备可以同时控制总线上的从设备。
总线通信协议2适用于大规模系统和多任务环境。
(3) 总线通信协议3该协议采用分布式结构,各个设备之间通过总线进行通信。
485通信讲解(附案例)解析

2
3
4
状 态 字
5
实际 运行 数据
6
实际 运行 数据
7
异 或 校 验
校验
起 始 字 节
从 状 机 态 地 字 址
字节定义 头 地址 状态区
数据区
RS485通讯协议
长帧(起始字节=02H)
发送顺序 1 (字节) 控制器至变频器:
2 3 4 5 6 7 8 9 10 11
起 始 字 节
从 功 命 功能 机 能 令 码设 地 码 字 定值 址 号
1 0
RS485通讯协议
响应字定义 控制字 (位)
bit5
值
1 0
含义
停机2状态 非停机2状态
功能描述
变频器执行停机2命令,处于停机状态
bit6
1 0
控制禁止状态 控制允许状态 上位机控制 本地控制方式
到达设定频率/ 速度 未到达设定频率 /速度
因停机1或停机2或变频器故障或异常命令使变 频器停机的状态,需控制字恢复到准备运行状态 使其复位
bit9
1 0
bit10
1 0
变频器只允许本地控制(面板和端子)
RS485通讯协议
响应字位定义 控制字 (位)
bit11
值
1 0
含义 变频器运行状态 变频器停止状态 变频器接受出错
功能描述
bit15
1
0
bit0 bit7~8 bit12~1 4,
变频器接收正确
预留 预留 预留
本位表示来自控制器的通讯帧经 校验出错,控制器应再次发送该 帧。
RS485通讯协议
控制字定义 控制字 (位) bit0 值 1 0 bit1 含义 运行命令 方式0停车 功能描述 起动变频器 减速停车
自定义通信协议例子

自定义通信协议例子自定义通讯协议本协议是由甲方(以下简称“甲方”)和乙方(以下简称“乙方”)共同签署,为规范双方之间的通讯行为而制定。
本协议中的各方身份、权利、义务、履行方式、期限、违约责任均是符合中国相关法律法规的。
一、双方的基本信息:甲方:名称:(填写甲方名称)地址:(填写甲方地址)联系人:(填写甲方联系人)联系电话:(填写甲方联系电话)电子邮件:(填写甲方电子邮件)乙方:名称:(填写乙方名称)地址:(填写乙方地址)联系人:(填写乙方联系人)联系电话:(填写乙方联系电话)电子邮件:(填写乙方电子邮件)二、各方身份、权利、义务、履行方式、期限、违约责任1.甲方的身份是通讯服务提供者,乙方是通讯服务使用者。
2.甲方的权利和义务:(1)提供稳定可靠的通讯服务。
(2)保障乙方的通讯隐私。
(3)保证服务质量及时有效的维护服务可靠性。
(4)在服务中不得出现任何违反中国相关法律法规的行为。
(5)服务期限为双方签署本协议之日起至协议终止。
(6)违约责任:如果甲方严重违反本协议规定,乙方有权要求甲方给予赔偿,赔偿数额以实际损失为准。
3.乙方的权利和义务:(1)按照本协议规定的规定向甲方支付通讯服务费用。
(2)按照甲方规定的方式、时间和条款向甲方提交通讯服务需求。
(3)在使用甲方的通讯服务时,不得进行违反中国相关法律法规的行为。
(4)服务期限为双方签署本协议之日起至协议终止。
(5)违约责任:如果乙方严重违反本协议规定,甲方有权要求乙方给予赔偿,赔偿数额以实际损失为准。
三、遵守中国相关法律法规本协议所涉及到的各项规定及双方行为均应遵守《中华人民共和国电信条例》、《中华人民共和国网络安全法》等相关法律法规。
双方应当严格遵守法律法规的规定,不得以任何方式违反法律法规。
四、法律效力和可执行性本协议自甲方与乙方签署之日起生效,在协议有效期内,双方应严格遵守本协议,协议到期前双方未达成续约或协议终止后,本协议自动失效。
如本协议的任何条款因与法律法规相抵触或被迫废止,其他条款仍然有效。
通信协议模板

1 应用范围本规范要求了电能表进行点对点或者一终端对多台电能表进行一主多从当地通讯接口进行数据交换技术要求, 要求了当地系统硬件和协议规范。
要求了物理连接、通讯链路及应用技术规范(数据基础格式、校验方法、编码传输规则等)。
本规范关键参考了部颁DL/T 645- 1997 多功效电能表通信规约, 依据我企业DSSD331-3、DTSD341-3 电能表特色做了对应扩展。
本规范中未给出部份例子和示意图请参见部颁规约。
2 引用标准下列标准所包含条文, 经过在本标准中引用而组成为本标准条文。
本标准出版时, 所表示版本均为有效, 全部标准都会被修订, 使用本标准各方应探讨使用下列标准最新版本可能性。
DL/T 645- 1997 DL/T 614- 1997 多功效电能表通信规约多功效电能表3 术语3.1 费率装置tariff device固定数据采集与处理单元, 通常与电能表连接或者与电能表组装在一起。
3.2 手持单元(HHU) hand-heldunit能与费率装置或者电能表进行数据交换便携式设备。
3.3 数据终端设备data terminal equipment由数据源、数据宿或者二者组成设备。
3.4 直接当地数据交换direct local data exchange一组费率装置与数据终端设备经过总线连接进行数据交换。
3.5 当地总线数据交换local bus data exchange一组费率装置与数据终端设备经过总线连接进行数据交换。
3.6 远程数据交换remote data exchange经过数据网络, 数据采集中心与一台或者一组费率装置之间数据交换。
3.7 主站master station含有选择从站并与从站进行信息交换功效设备。
本标准中指手持单元或者其它数据终端设备。
3.8 从站slave station预期从主站接收信息并与主站进行信息交换设备。
本标准中指费率装置。
3.9 总线bus连接主站与多个从站并许可主站每次只与一个从站通信系统连接方法(广播命令除外)。
RS485例子+

RS485P/CSMC轿厢C/R门禁层站C/R居室对讲#FSMEC和MESE电梯协议转换器与第三方IC卡、门禁、对讲通过RS485通讯协议范例波特率:9600bps 1位起始位,8位数据位,1位偶校验位,1位停止位。
以下各范例中红色表示第三方IC卡、门禁、对讲(以上三者销售人员常称为弱电SMC)发给电梯协议转换器(PROCON),绿色表示电梯协议转换器(PROCON)应答第三方IC卡、门禁、对讲(SMC)。
有电梯状态回电梯状态,没有的话回空包。
数据发送和接收的数据均用16进制表示。
电梯楼层,-1,1~15层,共16层。
系统构成,1个bank 1台电梯(#F号梯),系统构成图如下所示:第一部分适用于单开门电梯(1D1G/1D2G)●范例1:查询空包Event: no eventCommand code: None02 00 80 00 80 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例2:轿内——管理员刷卡(楼层信息FF)Event:administrator logs in carCommand code: 0X0902 00 03 06 09 00 00 10 FF 00 DF 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例3:轿内——业主刷卡1个权限,目的层为前门6楼Event:owner logs in car to one floorCommand code: 0X0902 00 03 06 09 00 00 00 06 00 E8 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例4:轿内——业主刷卡多个权限,目的层为前门1、前门3、前门5、前门7、前门前门8、前门10、前门12、前门14楼Event:owner logs in car to many floorsCommand code: 0X0A02 00 03 07 0A 00 00 00 02 AA 55 EB 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例5:层站——7楼业主出门(居室内呼梯)Event:owner go outCommand code: 0X0102 00 01 06 01 00 80 07 00 01 70 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例6:层站——11楼业主进楼(门禁刷卡)Event:owner go homeCommand code: 0X0102 00 01 06 01 00 40 01 00 0B AC 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例7:层站——访客去6楼(业主在居室内开放权限)Event:visitor visit owner.Command code: 0X0102 00 01 06 01 00 80 01 00 067E 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例8:层站——业主层间互访3楼去8楼Event:owner visit another owner.Command code: 0X0102 00 01 06 01 00 80 03 00 08 6D 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)第二部分适用于双开门电梯(2D2G)●范例9:查询空包Event: no eventCommand code: None02 00 80 00 80 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例10:轿内——后门刷卡1个权限,目的层为后门9楼Event:owner logs in car (rear door) to one floor(rear door)Command code: 0X0902 00 03 06 09 00 12 00 09 00 D3 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例11:轿内——前门刷卡1个权限,目的层为后门9楼Event:owner logs in car (front door) to one floor(rear door)Command code: 0X0902 00 03 06 09 00 10 00 09 00 D5 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例12:轿内——后门刷卡多个权限,目的层为后门1、后门3、后门5、后门7、后门8、后门10、后门12、后门14楼Event:owner logs in car (rear door) to many floors(rear door)Command code: 0X0A02 00 03 07 0A 00 02 00 20 AA 55 CB 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例13:层站——8楼业主出门(后门出发前门到达)Event:owner go out (from rear door to front door)Command code: 0X0102 00 01 06 01 00 81 08 00 01 6E 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例14:层站——11楼业主回家(后门出发前门到达)Event:owner go home (from rear door to front door)Command code: 0X0102 00 01 06 01 00 41 01 00 0B AB 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例15:层站——访客去6楼(后门出发后门到达)Event:visitor visit owner. (from rear door to rear door)Command code: 0X0102 00 01 06 01 00 91 01 00 06 60 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)●范例16:层站——层间互访3楼去8楼(后门出发后门到达)Event:owner visit another owner. (from rear door to rear door)Command code: 0X0102 00 01 06 01 00 91 03 00 08 5B 0302 80 03 03 91 01 00 E8 03(电梯状态)或者02 80 80 00 00 03(空包)。
MODBUS通讯协议-RTU(DOC)

MODBUS通讯协议-RTU(DOC)简介Modbus通讯协议是一种通用语言,广泛应用于电子控制器上。
通过该协议,不同厂商生产的控制设备可以连接成工业网络,进行集中监控,已成为通用工业标准。
该协议定义了控制器能够认识使用的消息结构,并描述了控制器请求访问其他设备的过程,回应其他设备的请求的方式,以及如何侦测错误并记录。
在Modbus网络上通信时,每个控制器需要知道设备地址、识别按地址发来的消息,并决定产生何种行动。
该协议只允许在主计算机和终端设备之间进行数据交换,不允许独立设备之间的数据交换。
传输方式在Modbus总线上进行通讯时,使用RTU模式,信息中的每8位字节分成两个4位16进制的字符,并且每个信息必须连续传输。
传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则。
代码系统采用8位二进制和十六进制数0.9,A。
F,消息中的每个8位域都是由两个十六进制字符组成。
每个字节的位包括1个起始位、8个数据位(最小的有效位先发送)、1个奇偶校验位(无校验则无)和1个停止位(有校验时为2个Bit,无校验时为1个Bit)。
错误检测域采用CRC(循环冗长检测)。
协议简介Modbus通讯协议是一种通用语言,广泛应用于电子控制器上。
通过该协议,不同厂商生产的控制设备可以连接成工业网络,进行集中监控,已成为通用工业标准。
该协议定义了控制器能够认识使用的消息结构,并描述了控制器请求访问其他设备的过程,回应其他设备的请求的方式,以及如何侦测错误并记录。
传输方式在Modbus总线上进行通讯时,使用RTU模式,信息中的每8位字节分成两个4位16进制的字符,并且每个信息必须连续传输。
传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则。
代码系统采用8位二进制和十六进制数0.9,A。
F,消息中的每个8位域都是由两个十六进制字符组成。
每个字节的位包括1个起始位、8个数据位(最小的有效位先发送)、1个奇偶校验位(无校验则无)和1个停止位(有校验时为2个Bit,无校验时为1个Bit)。
三菱plc,通讯协议

三菱plc,通讯协议篇一:三菱PLC通讯协议三菱PLC编程口通讯协议一、三菱PLC编程口通讯协议三菱PLC编程口的通讯协议比较简单,只有四个命令,即: 命令命令码目标设备DEVICE READ CMD0X,Y,M,S,T,C,DDEVICE WRITE CMD 1X,Y,M,S,T,C,DFORCE ON CMD7 X,Y,M,S,T,CFORCE OFF CMD 8X,Y,M,S,T,C五个标示:ENQ05H 请求ACK06H PLC正确响应NAK15H PLC错误响应STX02H 报文开始ETX03H 报文结束使用累加方式的和校验,帧格式如下:STX CMD DATA ...... DATA ETX SUM(upper)1SUM(lower)和校验:SUM= CMD+??+ETX。
如SUM=73H,SUM=“73”。
1、DEVICE READ(读出软设备状态值)计算机向PLC发送:始命令首地址位数终和校验STXCMD GROUP ADDRESS BYTESETX SUMPLC 返回STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 2、DEVICE WRITE(向PLC 软设备写入值)计算机向PLC发送:始命令首地址位数数据终和校验PLC 返回ACK (06H) 接受正确NAK (15H) 接受错误3、位设备强制置位/复位FORCE ON 置位始命令地址终和校验STX CMD ADDRESSETXSUM02h 37h address03hsumFORCE OFF 复位始命令地址终和校验2STX CMD ADDRESSETXSUM02h 38h address03hsumPLC 返回ACK(06H) 接受正确NAK(15H) 接受错误以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢,下面就是三菱Fx系列PLC地址对应表: Public Const PLC_D_Base_AddRess = 4096Public Const PLC_D_Special_Base_AddRess = 3584 Public Const PLC_Y_Group_Base_AddRess = 160 Public Const PLC_PY_Group_Base_AddRess = 672 Public Const PLC_T_Group_Base_AddRess = 192 Public Const PLC_OT_Group_Base_AddRess = 704 Public Const PLC_RT_Group_Base_AddRess = 1216 Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)Public Const PLC_M_Group_Base_AddRess = 256 Public Const PLC_PM_Group_Base_AddRess = 768 Public Const PLC_S_Group_Base_AddRess = 0Public Const PLC_X_Group_Base_AddRess = 128 Public Const PLC_C_Group_Base_AddRess = 4483Public Const PLC_OC_Group_Base_AddRess = 960 Public Const PLC_RC_Group_Base_AddRess = 1472 Public Const PLC_TV_Group_Base_AddRess = 2048 Public Const PLC_CV16_Group_Base_AddRess = 2560 Public Const PLC_CV32_Group_Base_AddRess = 3072 当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。
(完整word)通讯协议大全,推荐文档

(完整word)通讯协议大全,推荐文档TCP/IPTCP/IP是网络中使用的基本的通信协议。
TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。
IPX/SPX(多用于局域网)是基于施乐的XEROX’S Network System(XNS)协议,而SPX是基于施乐的XEROX’S SPP(Sequenced Packet Protocol:顺序包协议)协议NetBEUI即NetBios Enhanced User Interface,或NetBios增强用户接口。
网络通信协议:RS-232-C、RS-449、V.35、X.21、HDLC简单网络管理协议:简单网络管理协议SNMP、点到点协议PPP3G标准:WCDMA(欧洲版)、CDMA2000(美国版)和TD-SCDMA (中国版)Modbus协议Modbus就是工业控制器的网络协议中的一种包括ASCII、RTU和TCP现在Modbus已经是工业领域全球最流行的协议。
此协议支持传统的RS-232、RS-422、RS-485和以太网设备。
许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
网络协议大全1、ARP(address resolution protocol)地址解析协议2、SNMP(simple network management P)网络管理协议,是TCP/IP的一部分3、AppleShare protocol(AppleShare 协议)4、AppleTalk 协议5 、BOOTP协议(Bootstrap Protocol) 应用一个基于TCP/IP协议的协议,该协议主要用于有无盘工作站的局域网6、CMIP(Common Management Information Protocol)通用管理信息协议,它是建立在开放系统互连通信模式上的网络管理协议。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进程模块说明1(通道)
MODULE chrs() VAR contents[0..QSL]: {ack,red,green,blue}; seq[0..QSL]: 0..ML; len: 0..QS; start: 0..QSL; INIT (for xx in [0..QSL]): contents[xx]=0; (for xx in [0..QSL]): seq[xx]=0; len=0; start=0; TRANS len>0: (len,start):=(len-1,(start+1)%M); //loosy channel
过程说明3a
PROCEDURE mpsscase1(wd,s) VAR pc: {s0,s1,s2,s3}; tmp: {ack,red,green,blue}; INIT pc=s0; tmp=0; TRANS pc=s0: chget(aa,tmp,s)&(pc):=(s1); pc=s1: (wd,pss.busy[s],pss.obuf[s],pc):=(wd+1,1,tmp,s2); pc=s2: chput(rr,tmp,s)&(s):=((s+1)%M)&RETURN;
过程说明2
PROCEDURE chput(nn,c,s) VAR pc: {s0,s1}; pos: 0..QS; INIT pc=s0; pos=0; TRANS nn=0&pc=s0: (pos,pc):=((chr.start+chr.len)%QS,s1); nn=0&pc=s1: (chr.contents[pos],chr.seq[pos],chr.len):=( c,s,chr.len+1)&RETURN; nn=1&pc=s0: (pos,pc):=((chs.start+chs.len)%QS,s1); nn=1&pc=s1: (chs.contents[pos],chs.seq[pos],chs.len):=( c,s,chs.len+1)&RETURN; nn=2&pc=s0: (pos,pc):=((cha.start+cha.len)%QS,s1); nn=2&pc=s1: (cha.contents[pos],cha.len):=(c,cha.len+1)&RETURN; nn=3&pc=s0: (pos,pc):=((chb.start+chb.len)%QS,s1); nn=3&pc=s1: (chb.contents[pos],chb.len):=(c,chb.len+1)&RETURN;
过程说明1
PROCEDURE chget(nn,c,s) VAR INIT TRANS nn=rr: (c,s,chr.start,chr.len):=( chr.contents[chr.start],chr.seq[chr.start], (chr.start+1)%QS,chr.len-1)&RETURN; nn=ss: (c,s,chs.start,chs.len):=( chs.contents[chs.start],chs.seq[chs.start], (chs.start+1)%QS,chs.len-1)&RETURN; nn=aa: (c,cha.start,cha.len):=( cha.contents[cha.start],(cha.start+1)%QS,cha.len-1)&RETURN; nn=bb: (c,chb.start,chb.len):=( chb.contents[chb.start],(chb.start+1)%QS,chb.len-1)&RETURN;
进程模块说明3(pss)
MODULE mpss() VAR busy[0..ML]: 0..1; obuf[0..ML]: {ack,red,green,blue}; q: 0..ML; s: 0..ML; //q=oldest unacked,s=next to send y: 0..ML; wd: 0..W; INIT (for xx in [0..ML]): busy[xx]=0; (for xx in [0..ML]): obuf[xx]=0; q=0; s=0; y=0; wd=0; TRANS wd<W&cha.len>0&chr.len<QS: mpsscase1(wd,s)&(wd):=(wd); chs.len>0: chget(ss,ack,y)&(busy[y]):=(0); wd>0&busy[q]=0: (wd,q):=(wd-1,(q+1)%M); chr.len<QS&wd>0&busy[q]=1: mpsscase2(q)&(wd):=(wd);
过程说明3b
进程模块说明2(通道)
MODULE chab() VAR contents[0..QSL]: {ack,red,green,blue}; len: 0..QS; start: 0..QSL; INIT (for xx in [0..QSL]): contents[xx]=0; len=0; start=0; TRANS FALSE: TRUE;
通讯协议 (例子)
通讯协议
A B
通讯协议
A B
S
R
通讯协议
A B
S
R
通讯协议A BchaSchb chrR
chs
通讯协议
pra prb
cha
pss
chb chr
prr
obuf[] busy[] s q
chs
M W QS
ibuf[] recv[] m p
通讯协议模型(主程序)
VVM ft001 DEFINE QS=2 QSL=1 M=4 ML=3 W=2 WL=1 rr=0 ss=1 aa=2 bb=3 VAR err: 0..1; INIT err=0; PROC chr: chrs(); chs: chrs(); cha: chab(); chb: chab(); pra: mpra(); prb: mprb(); SPEC AG(err!=1);