资源描述:
《S7-200的MODBUS通讯设置_详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用下面的例程你可以在S7-200CPU之间建立一个简单的Modbus主-从通讯。这个例子是关于Modbus功能码6的(写从站保持寄存器),也可以作为其他所支持的功能码的基本参数设置步骤:1,2,3,4,5,15和16。要求:要使用Modbus协议必须先获得并在STEP7Micro/Win中安装指令库(条目17470979)。Modbus主站协议只被STEP7Micro/WinV4.0SP5及其以上版本支持。·1.硬件设置·2.参数匹配·3.指令库的存储地址·4.保持寄存器变量传输1.硬件设置例程中的Modbus通讯是在两个S7-2
2、00CPU的0号通讯口间进行的(最好每个CPU都有两个通讯口)。在主站侧也可以用相应库文件"MBUS_CTRL_P1"和"MBUS_MSG_P1"通过1号通讯口通信。通讯口1用Micro/WIN与PG或PC建立连接,两个CPU的通讯口0通过Profibus缆进行连接(电缆的针脚连接为3,3,8,8->见图01)。另外,需要确定逻辑地M相连。图.012.参数匹配对于MODBUS通讯,主站侧需要程序库"MBUS_CTRL"和"MBUS_MSG",从站侧需要程序库"MBUS_INIT"and"MBUS_SLAVE"。在Micro/WIN
3、中您需要为主站和从站新建一个项目,程序与参数设置见图.02。必须要保证主站与从站的“Baud”和“Parity”的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致(见图.02)。在Micro/WIN“系统块”中设置的通讯口0的波特率与MODBUS协议无关("Mode"="1")。图.02下面的表格列出了程序块各个参数选项及其含义。主站MBUS_CTRL参数意义选项EN使能Mode协议选择0=PPI,1=MODBUSBaud传输速率kbps1200,24
4、00,4800,9600,19200,38400,57600,115200Parity校验选择0=无校验,1=奇校验,2=偶校验Timeout从站的最长响应时间msDone“完成”标志位Erro错误代码1)r表011)参看STEP7Micro/WIN帮助:"MODBUS主站执行MBUS_MSG时的错误代码"。MBUS_MSG参数意义选项EN使能First读写请求位Slave从站地址RW"读"或"写"0=读,1=写Addr读写从站的数据地址0..128=数字量输出Q0.0..Q15.71001..10128=数字量输入I0.0..I
5、15.730001..30092=模拟量输入AIW0..AIW6240001..49999=保持寄存器2Count位或字的个数(0xxxx,1xxxx)/words(3xxxx,4xxxx)DataPtrV存储区起始地址指针Done'完成'标志位Error错误代码1)表021)参看STEP7Micro/WIN帮助:"MODBUS主站执行MBUS_MSG时的错误代码"。从站MBUS_INIT参数意义选项EN使能Mode协议选择0=PPI,1=MODBUSAddr从站地址Baud传输速率kbps1200,2400,4800,9600,
6、19200,38400,57600,115200Parity奇偶校验0=无校验,1=奇校验,2=偶校验Delay延时时间msMaxIQ最大数字输入输出点数2)MaxAI最大模拟量输入点数2)MaxHold最大保持寄存器字数量2)HoldStart保持寄存器区起始地址(40001)Done完成标志位Error错误代码3)表032)最大的地址取决于所用CPU的类型及其最大值。3)参看STEP7Micro/WIN帮助:“MODBUS从站协议的错误代码”。MBUS_SLAVE参数意义选项EN使能Done完成标志位Error错误代码3)表0
7、43)参看STEP7Micro/WIN帮助:“MODBUS从站协议的错误代码”。3.库的存储地址项目完成后必须要在Micro/WIN中定义库的存储地址,当定义完存储区后,要保证在任何情况下不能再被其它程序所使用(主站侧:"DataPtr"+"Count"从站侧:"HoldStart"+"MaxHold")。图.034.保持寄存器值的传输将程序下载到相应的CPU后,可以在状态表中给主站侧的V存储区赋值,然后从站侧监视数值的变化。当主站的I0.0使能后,VW2中的内容就被发送到从站并写入从站的VW2。保持寄存器值的传输见图.04。指针
8、"DataPtr"代表了被读的V区起始地址。参数"Count"指定了被写入地址"Addr"="4xxxx"(保持寄存器)字的个数。相应V存储区的变量将被写到保持寄存器启始地址"Addr"="40002"("RW"="1")中。保持寄存器是以字为单位