我用MODBUS从站功能编写了一段程序在SR60上可以使用,但是在CR60上就会提示#10从站功能未启用。可以编个程序给我看看吗
问题补充:
问题已经解决,因为CR60和CR40不带扩展所以MaxIQ要写成0,这是我写的程序
最佳答案
重新确认MBUS_INIT进行初始化指令,并用SM0.1调用,使用SM0.0调用MBUS_SLAVE,检查硬件连接。
参考官方例子:
从站:
在第一个循环周期内初始化Modbus从站协议
Mode:模式选择,启动/停止MODBUS,1=启动;0=停止
Address:从站地址,MODBUS从站地址,取值1~247
Baud:波特率,可选1200,2400,4800,9600,19200,38400,57600,115200
Parity:奇偶校验,0=无校验;1=奇校验;2=偶校验
PoRT:0=CPU集成的RS485通信口Port0,1=可选信号板通讯口Port1
Delay:延时,附加字符间延时,缺省值为0
MaxIQ:最大I/Q位,参与通信的最大I/O点数,S7-200SMART的I/O映像区为256/256,缺省值为256
MaxAI:最大AI字数,参与通信的最大AI通道数,取值范围0-56。值为0时将禁止读取模拟量输入。
MaxHold:最大保持寄存器区,参与通信的V存储区字(VW)
HoldSTart:保持寄存器区起始地址,以&VBx指定(间接寻址方式)
Done:初始化完成标志,成功初始化后置1
Error:初始化错误代码
在本例子中,设置从站地址为3
Port0通讯波特率为9600
无校验
可以使用的S7-200SMART最大数字量输入输出点数为256
可以使用的S7-200SMART最大模拟量输入寄存器字数为56
可以使用的V区寄存器地址字数为1000,起始地址为VB1000
注意:本例子中,ModbusRTU从站指令使用的库存储为VB0—VB780,这寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT和MBUS_SLAVE指令在内
LDFirst_Scan_On:SM0.1
CALLMBUS_INIT:SBR1,1,3,9600,0,0,0,256,56,1000,&VB1000,M10.1,MB11
在每个循环周期内执行Modbus从站协议
Done:MODBUS执行,通信中时置1,无MODBUS通信活动时为0
Error:错误代码:0=无错误
LDAlways_On:SM0.0
CALLMBUS_SLAVE:SBR2,M10.2,MB12
补充问题回复:
是的啊,疏忽了这个。长知识了,谢谢你。
提问者对于答案的评价:
cr60和cr40没有扩展所以Maxai应该设置成0