西门子S7-200PLCModbus从站设置2013-01-2711:43:43|分类:PLC|举报|字号订阅西门子S7200做Modbus从站需要使用MBUS_INIT、MBUS_SLAVE即可。MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。指令完成后立即设定完成位,才能继续执行下一条指令。在每次扫描且EN输入打开时执行该指令。应当在每次通讯状态改变时执行MBUS_INIT指令。因此,EN输入应当通过一个边缘检测元素用脉冲打开,或者仅在首次扫描时执行。模式输入数值选择通讯协议:输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0指定给PPI,并禁用Modbus协议。波特参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。地址参数将地址设为1和247之间(包括1和247)的数值。校验参数被设为与Modbus主设备校验相匹配。可接受的数值为:*0-无校验*1-奇数校验*2-偶数校验时延参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。该参数的典型数值在有线网络上应为0。如果您在使用带有纠错功能的调制解调器,将时延设为50至100毫秒的数值。如果您在使用扩展频谱无线电,将时延设为10至100毫秒的数值。时延数值可以是0至32767毫秒。MaxIQ参数将供Modbus地址00xxxx和01xxxx使用的I和Q点数设为0至128之间的数值。数值0禁止所有向输入和输出的读取。建议使用的MaxIQ数值是128,该数值可在S7-200中存取所有的I和Q点。MaxAI参数将供Modbus地址03xxx使用的字输入(AI)寄存器数目设为0至32之间的数值。数值0禁止模拟输入的读数。建议使用的MaxAI数值如下,这些数值可允许存取所有的S7-200模拟输入:*0用于CPU221*16用于CPU222*32用于CPU224、226和226XMMaxHold参数设定供Modbus地址04xxx使用的V内存中的字保持寄存器数目。例如,为了允许主设备存取2000个字节的V内存,将MaxHold设为1000个字的数值(保持寄存器)。HoldStart参数是V内存中保持寄存器的起始地址。该数值一般被设为VB0,因此HoldStart参数被设为&VB0(VB0地址)。其他V内存地址可指定为保持寄存器的起始地址,以便在项目的其他地方使用VB0。Modbus主设备可存取V内存MaxHold个字数,从HoldStart开始。MBUS_INIT指令完成时,完成输出打开。错误输出字节包含执行指令的结果。请参阅Modbus从属协议执行错误代码中可能因执行指令而产生的错误条件。MBUS_SLAVE指令被用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。在每次扫描且EN输入开启时执行该指令。MBUS_SLAVE指令无输入参数。当MBUS_SLAVE指令对Modbus请求作出应答时,完成输出打开。如果没有需要服务的请求时,完成输出关闭。错误输出包含执行该指令的结果。该输出只有在完成打开时才有效。如果完成关闭,错误参数不会改变。请参阅Modbus从属协议执行错误代码中可能因执行该指令而导致的错误条件。错误代码说明0无错误1内存范围错误2非法波特率或校验3非法从属地址4非法Modbus参数值5保持寄存器与Modbus从属符号重叠6收到校验错误7收到CRC错误8非法功能请求/功能不受支持9请求中的非法内存地址10从属功能未启用程序举例如下:NETWORK2//首次扫描时初始化Modbus从属协议//将从站地址设为6,将端口0设为9600波特,将校验设为无校验,//不允许存取所有的I、Q和AI数值,允许存取20台保存寄存器(40个字节)//从VB1000开始(即VB1000-VB1039)。程序书写后,需要对Modbus进行存取区的设定,如下:在菜单栏下:文件》库存储区--库存储区分配在库存储区分配中,设立分配地址,确定。PLC启动运行后,如下:PLC运行后,使用KepseverOPC读取PLC地址,Kepsever配置情况:ID:COM4为PC连接PLCModbus串口的端口;波特率:9600,需与PLC对应;数据位:8,需与PLC对应;校验:无,需与PLC对应;流控制:无,需与PLC对应;Name:为连接设备名称,可以自由定义;Model:选择为Modbus,需与PLC对应;ID:为PLCModbus地址,等于6,需与PLC对应;V对应MODBUS地址项次名称PLC地址Modbus地址备注1A_01VW10004000012A_02VW10024000024:代表V区vb1000后地址3A_03VW1004400003PLC地址=(Modbus地址-1)*24A_04VW10064000045A_05VW1008400005例如:6A_06VW1010400006VW1008=(5-1)*27A_07VW10124000078A_08VW10144000089A_09VW101640000910A_10VW101840001011A_11VW102040001112A_12VW102240001213A_13VW102440001314A_14VW102640001415A_15VW102840001516A_16VW103040001617A_17VW103240001718A_18VW103440001819A_19VW103640001920A_20VW1038400020Kepsever配置如下:Kepsever配置后,进入运行监视,即可看见可PLC的连接情况,如下: