您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 西门子S7200PLCModbus通信
HardwareSoftwareWorkshopS7-2001NEW!NEW!S7-200Modbus通信1•概述–定义–Modbus报文传输格式–Modbus主站协议指令–Modbus从站协议指令•Micro/Win指令库的管理–指令库的安装–指令库的卸载–指令库的添加–指令库的删除•编程示例–功能要求–实现步骤2S7-200Modbus通信•定义•Modbus报文传输格式•Modbus主站协议指令•Modbus从站协议指令3概述•使用Modbus通信协议是Modicon公司提出的一种报文传输协议,它广泛应用于工业控制领域,并已经成为一种通用的行业标准。不同厂商提供的控制设置可通过Modbus协议连成通信网络,从而实现集中控制。•根据传输网络类型的区别,Modbus通信协议又分为串行链路上的Modbus和基于TCP/IP协议的Modbus。•Modbus串行链路协议只有一个主站,可以有1~247个从站。Modbus通信只能从主站发起,从站在未收到主站的请求时,不能发送数据或互相通信。•Modbus串行链路协议的通信接口可采用RS-485接口,也可使用RS-232C接口。其中RS-485接口可用于远距离通信,RS-232C接口只能用于短距离通信。定义•定义•Modbus报文传输格式–Modbus寻址–ASCII模式–RTU模式•Modbus主站协议指令•Modbus从站协议指令5概述•Modbus寻址•ASCII模式•RTU模式6Modbus报文传输格式•Modbus地址通常是包含数据类型和偏移量的5个或6个字符值。第一个或前两个字符决定数据类型,最后的四个字符是符合数据类型的一个适当的值。Modbus主设备指令能将地址映射至正确的功能,以便发送到从站。•1Modbus主站寻址•Modbus主设备指令支持下列Modbus地址:•(1)00001至09999是离散输出(线圈)。•(2)10001至19999是离散输入(触点)。•(3)30001至39999是输入寄存器(通常是模拟量输入)。•(4)40001至49999是保持寄存器。•所有Modbus地址均以1为基位,表示第一个数据值从地址1开始。有效地址范围将取决于从站。不同的从站将支持不同的数据类型和地址范围。Modbus寻址•2Modbus从站寻址•Modbus从站指令支持以下地址:•(1)000001至000128是实际输出,对应于Q0.0——Q15.7。•(2)010001至010128是实际输入,对应于I0.0——I15.7。•(3)030001至030032是模拟输入寄存器,对应于AIW0至AIW2。•(4)040001至04XXXX是保持寄存器,对应于V区。•Modbus从站协议允许您对Modbus主站可访问的输入、输出、模拟输入和保持寄存器(V区)的数量进行限定。MBUS_INIT指令的参数MaxIQ指定Modbus主站允许访问的实际输入或输出(I或Q)的最大数量。MBUS_INIT指令的MaxAI参数指定Modbus主站允许访问的输入寄存器(AIW)的最大数量。MBUS_INIT指令的MaxHold参数指定Modbus主站允许访问的保持寄存器(V存储区字)的最大数量。Modbus寻址•Modbus地址与S7-200地址对应关系如下表所示。Modbus寻址•Modbus寻址•ASCII模式•RTU模式10Modbus报文传输格式•Modbus通信协议有ASCII和RTU(远程传输单元)两种报文传输模式。Modbus网络中所有的站必须采用相同的传输模式和串口参数。•ASCII模式采用LRC(纵向冗余校验)方式进行校验,其报文格式如下表所示:•ASCII模式中,报文帧中的每个8位字节都转换为两个ASCII码发送。报文中的每个ASCII码都由16进制字符组成,传输的每个字符都包括1个起始位、7个数据位、1个奇偶校验位、1个停止位;如果没有校验位,则有两个停止位。•LRC计算时不包括开始的冒号符、LRC本身和回车换行符。Modbus报文传输格式•Modbus寻址•ASCII模式•RTU模式12Modbus报文传输格式•RTU模式的报文格式如下表所示:•地址:Modbus地址,1个字节。•功能码:Modbus功能代码,1个字节。Modbus协议支持的功能码共16条(1~16),其中西门子ModbusRTU协议库支持最常用的8条。•信息数据:N个字节,格式与功能码有关。•CRC:循环冗余校验,两个字节。Modbus报文传输格式•西门子ModbusRTU协议库支持最常用的8条功能码如下表所示。Modbus报文传输格式•RTU模式下,报文中的每个8位字节被转化为两个16进制字符,然后以字节为单位进行传输,并采用CRC(循环冗余校验)方式进行校验。RTU模式的优点在于同波特率下有着比ASCII模式更高的传输效率。•目前支持Modbus通信的DCS系统和过程仪表大都采用基于串行接口的ModbusRTU模式,西门子提供了针对西门子PLCModbusRTU通信的协议库。•如果要在西门子PLC上实现ModbusASCII模式通信,用户可根据相关协议规定利用自由口模式自主编程实现。Modbus报文传输格式•西门子专门为ModbusRTU通信开发了指令库,极大地简化了ModbusRTU通信的开发,以便于快速实现相关应用。通过ModbusRTU从站指令库,使得S7-200可作为ModbusRTU中的从站设备集成到Modbus网络中,以实现与Modbus主站设备的通信。•而在最近推出的STEP7-Micro/WinSP5升级包中,西门子又增加了MobusRTUMaster指令库,使得S7-200CPU可作为Modbus主站,实现与ModbusRTU从站的通信任务。•要使用Modbus指令库必须注意以下四点:•(1)使用Modbus指令库前,需要将其安装到Step7-Micro/Win中,STEP7-Micro/WIN必须为V3.2或以上版本。•(2)S7-200CPU必须是固化程序修订版2.00或最好支持Modbus主设备协议库(CPUMLFB21x-2xx23-0XB0)。Modbus报文传输格式•(3)由于目前已经推出了针对端口0和端口1的ModbusRTU主站指令库ModbusMasterPort0和ModbusMasterPort1、以及针对端口0的ModbusRTU从站指令库,故可利用指令库实现端口0的ModbusRTU主/从站通信。•(4)一旦CPU端口被用于ModbusRTU主/从站协议通信时,该端口就无法用于任何其它用途,包括与STEP7-Micro/WIN通讯。Modbus报文传输格式•定义•Modbus报文传输格式•Modbus主站协议指令–MBUS_CTRL指令–MBUS_MSG指令•Modbus从站协议指令–MBUS_INIT指令–MBUS_SLAVE指令18概述•MBUS_CTRL指令•MBUS_MSG指令19Modbus主站协议指令•西门子Modbus主站协议库包括两条指令:MBUS_CTRL指令和MBUS_MSG指令。•MBUS_CTRL指令用于初始化主站通信,MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于启动对Modbus从站的请求并处理应答。•MBUS_CTRL指令用于S7-200端口0的MBUS_CTRL指令(或用于端口1的MBUS_CTRL_P1指令)可初始化、监视或禁用Modbus通讯。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。指令完成后立即设定“完成”位,才能继续执行下一条指令。•MBUS_CTRL指令在每次扫描且EN输入打开时执行。MBUS_CTRL指令必须在每次扫描时(包括首次扫描)被调用,以允许监视随MBUS_MSG指令启动的任何突出消息的进程。除非每次调用MBUS_CTRL,否则Modbus主设备协议将不能正确运行。MBUS_CTRL指令•西门子EN:指令使能位。•Mode:“模式”参数。“模式”输入数值选择通讯协议。输入值1将CPU端口分配给Modbus协议并启用该协议。输入值0将CPU端口分配给PPI系统协议,并禁用Modbus协议。•Baud:“波特率”参数。MBUS_CTRL指令支持的波特率为1200、2400、4800、9600、19200、38400、57600或115200bit/s。•Parity:“奇偶校验”参数。“奇偶校验”参数被设为与Modbus从站奇偶校验相匹配。所有设置使用一个起始位和一个停止位。可接受的数值为:•0无奇偶校验•1奇校验•2偶校验MBUS_CTRL指令•Timeout:“超时”参数。“超时”参数设为等待来自从站应答的毫秒时间数。“超时”数值可以设置的范围为1毫秒到32767毫秒。典型值是1000毫秒(1秒)。“超时”参数应该设置的足够大,以便从站有时间对所选的波特率作出应答。•Done:MBUS_CTRL指令成功完成时,“完成”输出为1,否则为0。•Error:“错误”输出代码。“错误”输出代码由反应执行该指令的结果的特定数字构成。“错误”输出代码的含义如下:•0无错误•1奇偶校验选择无效•2波特率选择无效•3超时选择无效•4模式选择无效MBUS_CTRL指令•上述参数支持的操作数和数据类型如下表所示。MBUS_CTRL指令
本文标题:西门子S7200PLCModbus通信
链接地址:https://www.777doc.com/doc-320250 .html