老师们能帮我看看这个程序为什么下载到PLC再接上TD200上显示无参数块?
TITLE=程序注释:
modbus 主站读写程序
//
// 注意:1.
modbus RTU主站功能是通过指令库中预先编好的程序功能块实现的,该库只针对Port 0口有效
// 2.
modbus RTU主站使用了一些用户中断,在用户程序中不能禁止中断
// 3. 该例程访问的为一个从站台达变频器,
// 4.本次任务为用一块TD200,F1(M0.1)启动变频F2(M0.2)停止工作F3M0.3增频率F4同0.4减频率,F5M0.5正转F6M0.6反转。
//
Network 1
// 第一扫秒周期, 复位各标志位和起始位
LD SM0.1
R M2.0, 8
R M4.0, 8
R M0.0, 2
Network 2
//
modbus 主站初始化完成后, 启动读写指令
LD M0.0
EU
S M0.1, 1
Network 3 // 网络标题
//
// 网络注释 初始化
modbus 主站通信,
//
// EN 使能:必须保证每一扫描周期都被使能(使用SM0.0)
//
// Mode 模式:常为1,使能
modbus 协议功能;为0 时恢复为系统 PPI 协议
//
// Baud 波特率:设为9600,要与从站波特率对应
//
// Parity 校验:校验方式选择 0=无校验
//
// Timeout 超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),
// 允许设置的范围为 1-32767。
// 注意: 这个值必须设置足够大以保证从站有时间响应。
//
// Done 完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作
//
// Error 初始化错误代码(只有在 Done 位为1时有效):0= 无错误
// 1= 校验选择非法
// 2= 波特率选择非法
// 3= 模式选择非法
//
LD SM0.0
= L60.0
LD SM0.0
= L63.7
LD L60.0
CALL SBR1, L63.7, 9600, 0, 1000, M0.0, MB1
Network 4
//
// 读取从站保持寄存器的数据
//
// EN 使能:同一时刻只能有一个读写功能(即 MBUS_MSG)使能
// 注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激
// 活,以保证所有读写指令循环进行(见程序)。
//
// First 读写请求位:每一个新的读写请求必须使用脉冲触发
//
// Slave 从站地址:可选择的范围 1-247
//
// RW 读写操作:0=读, 1=写
// 注意:1. 开关量输出和保持寄存器支持读和写功能
// 2. 开关量输入和模拟量输入只支持读功能
//
// Addr 读写从站的数据地址:选择读写的数据类型 00001至0***x-开关量输出
// 10001至1***x-开关量输入
// 30001至3***x-模拟量输入
// 40001至4***x-保持寄存器
//
// Count 通讯的数据个数(位或字的个数)
// 注意:
modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)
//
// DataPtr 数据指针:1. 如果是读指令,读回的数据放到这个数据区中
// 2. 如果是写指令,要写出的数据放到这个数据区中
//
// Done 读写功能完成位
//
// Error 错误代码 只有在 Done 位为1时,错误代码才有效
// 错误代码: 0=无错误
// 1=响应校验错误
// 2=未用
// 3=接收超时(从站无响应)
// 4=请求参数错误(slave address,
modbus address,count,RW)
// 5=
modbus/自由口未使能
// 6=
modbus正在忙于其它请求
// 7=响应错误(响应不是请求的操作)
// 8=响应CRC校验和错误
//
// 101= 从站不支持请求的功能
// 102= 从站不支持数据地址
// 103= 从站不支持此种数据类型
// 104= 从站设备故障
// 105= 从站接受了信息,但是响应被延迟
// 106= 从站忙,拒绝了该信息
// 107= 从站拒绝了信息
// 108= 从站存储器奇偶错误
//
//
//
// 常见的错误及其错误代码:
//
// 1. 如果多个 MBUS_MSG 指令同时使能会造成6号错误
//
// 2. 从站 delay 参数设的时间过长会造成3号错误
//
// 3. 从站掉电或不运行,网络故障都会造成3号错误
//
LD M0.1
O M2.3
= L60.0
LD M0.1
EU
LD M2.3
EU
OLD
= L63.7
LD L60.0
CALL SBR2, L63.7, 3, 0, 40001, 8, &VB1000, M2.1, MB3
Network 5
// 读取从站保持寄存器的数据完成,复位请求
LD M2.1
R M2.3, 1
R M0.1, 1
Network 6
// 读取从站输入点
LD M2.1
= L60.0
LD M2.1
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 3, 0, 10001, 8, &VB2000, M2.2, MB4
Network 7
// 读取从站输入点完成,复位请求
LD M2.2
R M2.1, 1
Network 8
// 写从站实际输出值
LD M2.2
= L60.0
LD M2.2
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 3, 1, 1, 8, &VB3000, M2.3, MB5
Network 9
// 写从站实际输出值完成,复位请求
LD M2.3
R M2.2, 1