西门子S7 |
您所在的位置:网站首页 › 西门子md0 › 西门子S7 |
Modbus-RTU协议是一种开放的串行通信协议,在不同的行业中都有非常广泛的应用,因为其是串行通信,所以其报文的传送需要按照串行队列来发送,而具体到S7-200 SMART的Modbus-RTU主站通信的编程中就需要考虑针对不同地址和不同站的轮询的问题。 为了提高轮询的效率和轮询程序的通用性,本文推出了Modbus轮询的应用库,可以简化用户轮询编程,也可以实现根据需要写入功能,更可以实现仅当设定值改变时的参数值写入功能。 小贴士 硬件及软件需求 1. 硬件要求 S7-200 SMART CPU控制器 SIMATIC S7-200 SMART产品家族 2. 软件要求 STEP 7-Micro/WIN SMART V2.7 程序库 该程序库实现了Modbus轮询队列的产生,可以产生两种独立的队列,读队列和写队列,并可以根据需要实时操作写队列,也可以实现当设定值改变时实时写入的功能。 程序库 轮询队列控制块 程序块引脚 使用说明 该子程序主要用于产生Modbus轮询队列,会产生读队列readCtrl控制字和写队列writeCtrl控制字,正常执行时,仅执行读队列readCtrl控制字运算,当有写操作时,中断读操作,优先执行写操作队列writeCtrl控制字运算,仅当写操作完成后,会返回到之前读队列的中断点开始继续执行读队列。 注意事项:该子程序需要配合Modbus通信库使用。 整数设定值改变时输出功能块 程序块引脚 使用说明 该子程序可以实现当输入整数值发生改变时,把对应地址传送到输出地址,并输出标志位write。 注意事项:该子程序需要配合Modbus通信库和ModbusQueue库使用,不需要可以不调用。 双整数设定值改变时输出功能块 程序块引脚 使用说明 该子程序可以实现当输入双整数值发生改变时,把对应地址传送到输出地址,并输出标志位write。 注意事项:该子程序需要配合Modbus通信库和ModbusQueue库使用,不需要可以不调用。 浮点数设定值改变时输出功能块 程序块引脚 使用说明 该子程序可以实现当输入浮点数值发生改变时,把对应地址传送到输出地址,并输出标志位write。 注意事项:该子程序需要配合Modbus通信库和ModbusQueue库使用,不需要可以不调用。 例程说明 本例程解释了Modbus轮询库的使用方法,以及当设定值改变时写入的功能,如果客户不需要设定值改变功能,仅需要调用ModbusQueue功能块即可。 Modbus初始化 初始化Modbus程序,本例程中并根据库存储区地址,设置VB4257(mModbusRetries)重试次数为0,即只尝试一次,加快轮询效率。 程序 Modbus轮询序列 该程序实现了Modbus轮询队列的产生,可以产生两种独立的队列,读队列和写队列,并可以根据需要实时操作写队列,也可以实现当设定值改变时实时写入的功能。 本例程中,读队列的控制字为MD0,写队列的控制字为MW4。MD0每一个位可以控制一个站点读指令MSG,Zui多可以控制32个MSG指令。MW0每一个位可以控制一个站点的写指令MSG,Zui多可以控制32个MSG写指令。 程序 Modbus读控制 本例程中读控制由读控制字MD0控制,其中 ▶M3.0~3.7为MD0的bit0~bit7;M2.0~2.7为MD0的bit8~bit15 ▶M1.0~1.7为MD0的bit16~bit23;M0.0~0.7为MD0的bit24~bit31 用户可以根据现场实际需要来灵活增加或者减少读指令个数,每个读指令的控制由MD0对应的位来控制即可。 程序 Modbus写控制 本例程中写控制由写控制字MW4来控制,其中 ▶M5.0~5.7为MW4的bit0~bit7; ▶M4.0~4.7为MW4的bit8~bit15; 用户可以根据现场实际需要来灵活增加或者减少写指令个数,每个写指令的控制由MW4对应的位来控制即可。 程序 Modbus设定值改变功能块 用户可以根据设定值的类型(INT/DINT/REAL)来选择合适的指令库来判断设定值是否变化,若发生变化,则传送对应参数到Modbus写指令,并启动写标志位。 用户可以根据需要修改的参数个数来灵活调用对应指令库。 程序 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |