您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > PLC中级技术培训胶片-EC20PLC之间通信(MODBUS_RTU)讲解
PLC中级培训胶片EC20PLC之间MODBUS通信PLC技术服务部EC20plcMODBUS/自由协议组态软件/HMI仪表传感器变送器变频器其他智能装置EC20PLC组网浏览通信功能—COM0插座形式:MiniDIN8信号电平:RS232提供协议:编程协议(只支持9600/19200bps)MODBUS从站协议自由通信协议注意事项:通过TM位置,强制切换为编程协议通信功能—COM1插座形式:EK500V信号电平:RS232/485提供协议:MODBUS主站/从站协议自由通信协议注意事项:COM1通讯口的RS232与RS485端口不可同时使用MODBUS通信协议通信端口:COM0,COM1支持格式:ASCII,RTU网络接口:主站(仅COM1),从站组网配置:1-30个,0号广播参数设置:系统块指令:MODBUS(S1)(D1)(D2)传播速率:1200-38400关于主模式超时时间和重试次数的说明主模式超时时间的含义:是指主站发送数据完毕到接收数据前等待的时间;如果从站没有响应,则产生超时错误,SD139=0X10,同时SM136=ON;一般设置的超时时间为50-100MS即可;如果设置有重试次数(大于0)的话,那么如果重试完毕还没有响应则此时SD139=0X10,SM136=ON;重试次数:是指主站在超时时间内没有接到从站的响应,则重新发送数据;重试次数不包括第1次发送;如:如果超时时间设为50MS,重试次数为2,则主站在发送数据后,如果在50MS内收不到响应数据,则重新发送数据,如果50MS后还收不到响应数据,则又重新发送数据,如果在50MS还接收不到响应数据,则SD139=0X10,SM136=ON;如果在50MS内收到错误的数据响应,则SM136=ON,不再重新发送数据;MODBUS通信指令操作数说明S1指定的通讯通道;S2发送数据起始地址;S3接收数据起始地址;功能说明1)当作为主站,输入条件满足时,把从S2开始保存的数据发送出去,然后自动接收数据,并保存到S3开始的地址单元;2)当作为从站,接收和发送数据不需要指令控制;3)MODBUS指令的执行实际上是通过上升沿触发的,一旦有上升沿后,MODBUS开始发送数据,在规定的时间内自行重发数据或接收数据,不再受前面的条件的限制;注意事项MODBUS发送数据,无论用户设置成RTU模式还是ASCII模式,都只需从S2开始保存RTU形式的数据,不需要保存起始字符,结束字符和校验和。发送过程中,自动加上所需的起始字符,结束字符和校验和。发送的数据,不需设定发送的数据长度,系统会根据功能码自动按系统内部设定长度进行发送。MODBUS的接收,无论用户设置成RTU模式还是ASCII模式,数据都是采用RTU形式存放,即用户设成ASCII模式,系统自动将其转换成十六进制,去掉起始字符、结束字符,保存在S3开始的数据区。发送和接收的数据都是保存在字元件的低字节,高字节没有使用。发送完成/通信错误标志SM135:是指在规定的超时时间内(包括重试次数完成),接收到数据准确无误时,才有SM135=ON,表示这次通信准确完成;SM136:是指规定的超时时间内(包括重试次数完成),从站没有响应或接收到的数据不正确,则SM136=ON;如果SM135=ON,表示通信完成,则系统可以进行其他的通信任务处理;如果SM136=ON,则表示通信有误,可以做报警处理,或根据系统的特点决定是否继续进行其他任务的通信;本质上讲:MODBUS指令的是否执行和SM135/SM136的状态没有直接的关系,所以可以不必采用SM135/SM136的状态作为MODBUS指令执行是前提条件。EC20PLCMODBUS协议通信有关信息SD139里保存着MODBUS通信的具体错误代码,在发生通信错误时可以查阅判断,并把错误信息送到报警内容里;MOBUS协议的基本概念Modbus是工业控制器的网络协议中的一种,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。控制器通信使用主—从技术,即仅唯一主设备能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:HMI,PC,PLC;典型的从设备:PLC,仪表,变频器,其他智能装置。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据,错误检验等。格式RTU为例:从站地址功能代码读写数据起始地址数据数量1或数据数据数量2。。。数据数量n校验和MODBUS通信协议—RTU模式RTU传输模式1.十六进制数据格式,每8位的字节包含2个4位的16进制字符;2.字符间间隔应该少于1.5个字符时间;3.没有帧头和帧尾,帧间间隔至少为3.5个字符时间;4.使用CRC-16校验;5.RTU帧的最大帧长度是256个字节,帧结构如下表:6.字符间隔时间计算:通信波特率为19200,那么1.5个字符时间=1/19200×11×1.5×1000=0.86ms3.5个字符间隔=1/19200×11×3.5×1000=2ms。7.优点:同时间传的信息多;缺点:字符间隔时间短;MODBUS通信协议—ASCII模式ASCII传输模式1.使用ASCII数据通讯,每8位字节包含2个ASCII字符;2.帧使用“:(3A)”作为头,CRLF(0D0A)两个字符作为尾3.允许的字符间的间隔时间是1s;4.使用LRC校验;5.ASCII的帧结构比RTU的帧要长,ASCII模式传送一个字节(HEX)需要两个字符编码,ASCII的数据域(2×252)的最大长度是RTU数据域(252)的两倍,ASCII的最大帧长为513个字符,帧构成如下表:6优点:字符间隔时间长,缺点:同时间传的信息少;目前EC20支持的功能码(7种)注:以下各功能解释以EC20PLC之间通信为例EC20PLC元件与MODBUS的对应关系注:协议地址是在数据传输中使用的地址,协议地址与Modicon的数据的逻辑地址有对应关系,协议地址是从0开始,Modicon的数据的逻辑地址是从1开始的;如:FIX访问EC20PLC的M0时:设备类型:0X;设备地址:2001D100时:设备类型:4X:设备地址:101C0时:设备类型:4X;设备地址:9501如:KINGVIEW访问时:Y0:寄存器为0XXXX,一定为5位数;地址:00001不同功能码—“01”(0X01)读线圈状态读从站的位元件的ON/OFF状态,不支持广播模式,最多支持2000个位元件;AddressFunctioncode(01H)起始地址元件个数校验码(CRC或LRC)HLHL请求帧响应帧如果读取的地址不是8的倍数,剩下的位由0填充(由高位开始填充)。AddressFunctioncode(01H)Numberofbyteread读取的元件个数(字节数)(n)Readdata读取的数据No.1••••••Readdata读取的数据No.n校验码(CRC或LRC)B7B6B5B4B3B2B1B0不同功能码—“01”例子接收到的数据保存在:D103:Y7-Y0;D104:Y13-Y10可以用Kn寻址方式“1”表示ON,”0”表示OFF;不同功能码—“02”(0X02)读离散量输入读取从站的位元件的状态,不支持广播。最多支持256个位元件(目前的型号只定义256个X元件)。请求帧:AddressFunctioncode(02H)起始地址元件个数校验码(CRC或LRC)HLHL响应帧如果读取的地址不是8的倍数,剩下的位由0填充(由高位开始填充)。AddressFunctioncode(02H)Numberofbyteread读取的元件个数(字节数)(n)Readdata读取的数据No.1••••••Readdata读取的数据No.n校验码(CRC或LRC)B7B6B5B4B3B2B1B0不同功能码—“02”例子1)接收到的数据保存在:D103:X7-X0;D104:X17-X10;可以用Kn寻址方式D105:X23-X20,其他补0;2)“1”=ON,”0”=OFF;不同功能码—“03”(0X03)读寄存器读取保持寄存器是读取从站的数据(字)寄存器值,(最多可以有125个数据寄存器)。不支持广播。请求帧:AddressFunctioncode(03H)起始地址元件个数校验码(CRC或LRC)HLHL响应帧:AddressFunctioncode(03H)Numberofbyteread读取的元件个数(字节数)(n)Readdata读取的数据No.1••••••Readdata读取的数据No.n校验码(CRC或LRC)HLHL不同功能码—“03”例子收到的数据按照:D510HI,D510LO,D511HI,D511LO…D103,D104,D105,D106…不同功能码—“05”(0X05)写单个线圈强置(写)单线圈是向从站写入位元件值,与编程协议的强制不同。允许通知(broadcast),即写入所有从站的相同元件。最多支持1个位元件。支持广播。请求帧:注:写入元件的值为0xFF00(ON,1)或者0x00FF(OFF,0)AddressFunctioncode(05H)起始地址写入的元件值校验码(CRC或LRC)HLHL响应帧响应帧是请求帧的重复。AddressFunctioncode(05H)起始地址写入的元件值校验码(CRC或LRC)HLHL不同功能码—“05”例子不同功能码—“06”(0X06)写单个寄存器强置(写)单寄存器是向从站写入字元件值,与编程协议的强制不同。允许通知(broadcast),即写入所有从站的相同元件。最多支持1个字元件。支持广播请求帧:AddressFunctioncode(06H)起始地址写入的元件值校验码(CRC或LRC)HLHL响应帧:AddressFunctioncode(06H)起始地址写入的元件值校验码(CRC或LRC)HLHL不同功能码—“06”例子不同功能码—“15”(0X0F)写多个线圈请求帧:最多能写1968个(0x07b0),根据元件的定义范围有变化。AddressFunctioncode(0FH)起始地址元件个数字节数(n)写入元件值No.1••••••写入元件值No.N校验码(CRC或LRC)HLHLB7B6B5B4B3B2B1B0响应帧:AddressFunctioncode(0FH)起始地址元件个数校验码(CRC或LRC)HLHL不同功能码—“15”例子注意:1.“1”ISON,”0”ISOFF;2.注意对应的位的顺序,3.不用的用“0”填充;不同功能码—“16”(0X10)写多个寄存器请求帧:最多写120个寄存器(0x78)AddressFunctioncode(0x10H)起始地址元件个数字节数(n)写入元件值No.1••••••写入元件值No.N校验码(CRC或LRC)HLHLHLHL响应帧:AddressFunctioncode(0x10H)起始地址元件个数校验码(CRC或LRC)HLHL不同功能码—“16”例子通信问题-1拆字方法1拆字:如果是1个字的高低字节都要发送的时候,必须先拆成2个只含低字节的字;如果是1个双字要发送的时候,必须拆成4个只含低字节的字;例:D510=510=16#1FE=2#0000,0001,1111,1110MOVD510K4M0MOVK2M8D610M15-M8=2#0000,0001=16#1=D610MOVK2M0D611M7-M0=2#1111,1110=16#FE=D611按照先高字节后低字节的顺序拆字通信问题-1拆字方法2例把D810的高字节给D68,低字节给D69;SHRD810D688右移8位,取高字节WANDD81016#FFD69位与,留低字节按照先高字节后低字节的顺序拆字通信问题-2合字合字:因为MODBUS中接收到的数据都是8位的,这说明接收到
本文标题:PLC中级技术培训胶片-EC20PLC之间通信(MODBUS_RTU)讲解
链接地址:https://www.777doc.com/doc-309948 .html