发布于 2004-10-28 17:18:50
0楼
我10.24发的贴,后来经过这几天,我靠自己的力量解决了用PLC的RCV指令和VB通讯的问题,可能编的不好,只供大家参考。
主程序(MAIN):
LD SM0.0CALL SBR_0 开通扫描后调用SRB_0
SBR0
LD SM0.1 首次扫描接通后;
MOVB 16#09, SMB30 初始化自由口,9600,8,1;
MOVB 16#E0, SMB87 接收功能启用、检测信息的开始位、检测信息的结束位
MOVB 16#01, SMB88 设定信息的开始字符位为1(16#01);
MOVB 16#03, SMB89 设定信息的结束字符位为3(16#03);
MOVB 4, SMB94 设定信息的长度为4个字符位(注意:一定要为4位),传送字符串 长度加1;
ATCH INT_0, 23 当接收完成时,产生中断事件23,发生中断INT_0;
ENI
RCV VB100, 0 允许中断;把VB100的地址指向串口的接收缓存。
INT_1
LDB= SMB86, 16#20 如果SMB86=20(接收信息结束),调用子程序1(SBR_1)
CALL SBR_1, VB102 ,传入地址VB102(注意:一定是VB102,在VB100的基础上加2位)
RCV VB100, 0 如果接收完成,则再次接收。
SBR_1
LDB= #IN1, 16#41
S Q1.0, 1 如果传入的数(16进制)是41,Q1.0接通;
LDB= #IN1, 16#42
R Q1.0, 1 如果出入的数(16进制)是42,Q1.0断开。
VB程序
Option Explicit
Private Sub Command1_Click()
Dim Buff(2) As Byte
Buff(0) = &H1
Buff(1) = &H41
Buff(2) = &H3
MSComm1.Output = Buff '通过串口发送字符串1 41 3
End Sub
Private Sub Command2_Click()
Dim Buff(2) As Byte
Buff(0) = &H1
Buff(1) = &H42
Buff(2) = &H3
MSComm1.Output = Buff '通过串口发送字符串1 42 3
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
做个诚实、正直、有能力的科技工作者