200和lenze伺服采用RS485 自由口通讯,由于是测试通讯,我只做了一条读的命令,但是有这样一个问题,lenze伺服通讯灯会闪一下,不过200这边接收不到信息,VB2000 开始仍然为0请帮忙看一下,程序见下:
数据块内容:
//读C104地址,
//发送格式为ASCII码
VB99 11 //发送字节数
VB100 16#03 //开始字符
VB101 16#30 //以下2字节为伺服地址
VB102 16#31
VB103 16#21 //以下五字节为设置地址
VB104 16#30
VB105 16#31
VB106 16#30
VB107 16#34
VB108 16#30 //子代码
VB109 16#30
VB110 16#05 //发送结束
主程序:
// 端口定义
LD SM0.1
CALL SBR_0:SBR0
SBR_0内容:
//定义通讯口0为自由口,9600,1start,7bit,1stop,偶校验
LD SM0.0
MOVB 16#69, SMB30
//接收指令,16#03结束字,空闲5MS,最大50字符,接收结束中断于INT_0
LD SM0.0
MOVB 16#B0, SMB87
MOVB 16#03, SMB89
MOVB 16#05, SMB90
MOVB 50, SMB94
ATCH INT_0:INT0, 23
ATCH INT_2:INT2, 9
ENI
XMT VB99, 0
INT_0内容:
//接收正常结束,开始发送
LDB= SMB86, 16#20
XMT VB99, 0
ATCH INT_1:INT1, 10
CRETI
NOT
RCV VB2000, 0
INT_1内容:
LD SM0.0
DTCH 10
XMT VB99, 0
INT_2内容
LD SM0.0
RCV VB2000, 0