伙家,我刚做了个S7-200与台达VFD-B的MODBUS RTU控制程序,与大家共享一下.不用主站程序也可以的,仅用CRC校验库程序即TITLE=子程序注释
Network 1 // 网络标题
// 网络注释
LD SM0.0
INCW VW48 //通讯地址自循环
LDW>= VW48, VW30 //vw30通讯地址总数
MOVW +1, VW48
Network 2
// 变频器控制字及给定值循环计算 实际参数从vw1100开始
LD SM0.0 //在变频器正确设定情况下:19.2K 8位 偶校验等
MOVD &VB1000, VD100 //初始化程序中MOVB, 16#45, SMB30 ENI
MOVD +0, VD90 //19.2K 8位 偶校验
MOVW VW48, VW92 //可以输入3000(30HZ)至vw1102
*I +100, VW92 //输入12h至vw1100实验一下程序
+D VD100, VD90 //movw 1 vw48 movd vd1100 vd90
Network 3 //
// s7-200与台达变频器vfd-b通讯地址参数 2000H :停止:01H 。 启动:2H。 正转:12H 。 反转:22H 。 2001H: 频率命令。
LD SM0.0
MOVB 11, VB200 //校验字节数
MOVB VB49, VB201 //从站地址vb49
MOVB 16#10, VB202 //功能码
MOVD 16#20000002, VD203 //通讯地址及字数
MOVB 4, VB207 //通讯字节数
MOVD *VD90, VD208 //控制字及给定值
Network 4
// 调用modbus-crc16库
LD SM0.0
CALL SBR12, &VB200, 1, 1, VW216
Network 5
// 发送准备
LD SM0.0
MOVB 13, VB200 //发送字节13BYTE
Network 6
// 其他用途
LD SM0.0
MOVW +4, VW54
MOVW +0, VW56
MOVW VW32, VW58
+I +2, VW58
Network 7
// 发送至变频器
LD SM0.0
XMT VB200, 0
Network 8
Network 9
Network 10 可.别的牌子变频器需要改变通讯地址等,应该不是什么大不了问题.祝好运.