台达PLC源码FORM VB60.docx

上传人:b****5 文档编号:2927186 上传时间:2022-11-16 格式:DOCX 页数:18 大小:18.65KB
下载 相关 举报
台达PLC源码FORM VB60.docx_第1页
第1页 / 共18页
台达PLC源码FORM VB60.docx_第2页
第2页 / 共18页
台达PLC源码FORM VB60.docx_第3页
第3页 / 共18页
台达PLC源码FORM VB60.docx_第4页
第4页 / 共18页
台达PLC源码FORM VB60.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

台达PLC源码FORM VB60.docx

《台达PLC源码FORM VB60.docx》由会员分享,可在线阅读,更多相关《台达PLC源码FORM VB60.docx(18页珍藏版)》请在冰豆网上搜索。

台达PLC源码FORM VB60.docx

台达PLC源码FORMVB60

Publicstr_outAsString

DimsetaddrAsString,charAsString,setadAsString

DimdzAsString

Dimdz1AsString

PublicstrAsString

PrivateSubCOMBO1_Change()

SelectCaseCOMBO1.ListIndex

CaseY

dz1=Right(COMBO1.Text,Len(COMBO1.Text)-1)

CaseM

dz1=Right(COMBO1.Text,Len(COMBO1.Text)-1)

CaseT

dz1=Right(COMBO1.Text,Len(COMBO1.Text)-1)

CaseC

dz1=Right(COMBO1.Text,Len(COMBO1.Text)-1)

CaseS

dz1=Right(COMBO1.Text,Len(COMBO1.Text)-1)

EndSelect

EndSub

PrivateSubCommand1_Click()'PLC运行停止按钮

IfMSComm1.PortOpen=FalseThen'如果串口未打开

MSComm1.PortOpen=True'则打开串口

EndIf

SelectCaseCommand1.Caption'选择事件

Case"PLCRUN"

str="00050C30FF00"'通讯字符串

LRC=Chr_lrc(str)'计算lrc校验值

stx=":

"'起始字符冒号

str_out=stx+str+LRC+Chr$(13)+Chr$(10)'发送字符串内容

MSComm1.Output=str_out'通过串口发送

Command1.Caption="PLCSTOP"'按钮显示PLCSTOP等待下次按压此按钮

Command1.BackColor=&HFF&'按钮背景颜色为红色

Case"PLCSTOP"'事件PLCSTOP

str="00050C300000"'通讯字符串

LRC=Chr_lrc(str)'计算lrc校验值

stx=":

"'起始字符冒号

str_out=stx+str+LRC+Chr$(13)+Chr$(10)'发送的字符串

MSComm1.Output=str_out'通过串口发送

Command1.Caption="PLCRUN"'按钮显示PLCRUN等待下次按压此按钮

Command1.BackColor=&HFF00&'按钮背景颜色为绿色

EndSelect

EndSub

PrivateSubCommand2_Click()'写寄存器按钮

stx=":

"'起始字符为冒号

a=Right(Text1.Text,Len(Text1.Text)-1)'a为需要写入寄存器的数据

C=Text4.Text'c为需写入数据的寄存器地址

IfLen(C)>1ThenSRDZ=Right(C,Len(C)-1)'如果c的长度大于1,则输入地址srdz为去掉左边的一个字符后的字符

IfMid(Text4.Text,2)=""Then'如果地址文本框的第二个字符为空格,那么

MsgBox("请输入元件号!

")'提示请输入元件号

Text4.SetFocus'光标移至文本框

Text4.SelStart=1'光标在文本框第二个字符处闪烁

ExitSub

Else

IfVal(SRDZ)>999Then'如果输入地址SRDZ大于999则

MsgBox("元件地址超过限制!

")'提示元件地址超过限制

Text4.SetFocus'光标移至文本框

Text4.SelStart=1'光标在文本框第二字符处闪烁

Text4.SelLength=Len(C)'文本框字符长度为原长度

ExitSub

EndIf

EndIf

D=Hex(SRDZ+4096)'输入地址转换为十六进制数的台达PLC地址

IfLen(a)>=0Then'如果写入寄存器的数值大于等于零

IfMid(a,1)=""Then'如果写入的数值字符的第一位是空格

MsgBox("请输入数值!

")'则提示请输入数值!

Text1.SetFocus'光标移至文本框

Text1.SelStart=1'光标在文本框第二位闪烁

ExitSub

Else

IfOption2.Value=TrueThen'如果选择十六进制数制

IfLen(a)=1Then'且数值长度为1

a1="000"+a'那么,写入的数值为000加上输入的一位数据

Else

IfLen(a)=2Then'如果输入数据长度为2

a1="00"+a'则写入的数值为00加上输入的两位数据

Else

IfLen(a)=3Then'如果输入数据长度为3

a1="0"+a'则写入的数值为0加上输入的三位数据

Else

IfLen(a)=4Then'如果输入数据长度为4

a1=a'则写入的数值为输入的数据

EndIf

EndIf

EndIf

EndIf

Else'如果选择十进制数制

b1=Hex(a)'那么,直接将输入的数据转换为十六进制数

IfLen(b1)=1Then'如果输入一位十六进制数

a1="000"+b1'那么,写入的数值为000加上输入的一位十六进制数

Else

IfLen(b1)=2Then'如果输入的数据长度为2

a1="00"+b1'那么,写入的数值为00加上输入的两位十六进制数

Else

IfLen(b1)=3Then'如果输入的数据长度为3

a1="0"+b1'那么写入的数值为0加上输入的一位十六进制数

Else

IfLen(b1)=4Then'如果输入的数据长度为4

a1=b1'那么写入的数值为输入的数据

EndIf

EndIf

EndIf

EndIf

EndIf

IfVal(a)>65535Then'如果输入的数据大于65535

MsgBox("设值超过限制!

")'则提示设值超过限制

Text1.SetFocus'光标移至文本框

Text1.SelStart=1'光标在文本框第二个字符处闪烁

Text1.SelLength=Len(a)'文本框长度等于原长度

ExitSub

EndIf

EndIf

EndIf

str="0106"+D+a1'发送字符地址01命令06(写入)地址D数据a1

LRC=Chr_lrc(str)'计算lrc校验值

IfLen(LRC)=1Then'如果lrc校验值为一位

LRC="0"+LRC'则lrc校验值补零

Else

LRC=LRC'否则校验值为计算值

EndIf

MSComm1.Output=stx+str+LRC+Chr$(13)+Chr$(10)'通过串口发送写入命令

MSComm1.InBufferCount=0

EndSub

PrivateSubCommand3_Click()'读取暂存器按钮

setaddr=Text2.Text'变量setaddr为文本text2的内容

IfLen(setaddr)>1Thensetad=Right(setaddr,Len(setaddr)-1)'如果文本内容长度大于1则setad的值为去掉最左边的字符

IfMid(Text2.Text,2)=""Then'如果文本的第二个字符为空格

MsgBox("请输入地址!

")'则提示请输入地址

Text2.SetFocus'同时光标移至文本框

Text2.SelStart=1'光标在第二个字符处闪烁

ExitSub

Else

IfVal(setad)>1300Then'如果输入的地址大于1300,则

MsgBox("元件地址超出范围!

")'提示元件地址超出范围

Text2.SetFocus'光标移至文本框

Text2.SelStart=1'光标在第二个字符处闪烁

Text2.SelLength=Len(setaddr)'文本框的字符长度为原长度

ExitSub

EndIf

EndIf

FIRSTLOOP:

MSComm1.InBufferCount=0'串口输入缓冲器清零

MSComm1.OutBufferCount=0'串口输出缓冲器清零

stx=":

"'起始字符为冒号

a=Hex(setad+4096)'将地址加上H1000,并转换为16进制数

str="0103"+a+"0001"'str为0103加地址加读取长度

LRC=Chr_lrc(str)'计算str的lrc校验值

MSComm1.Output=stx+str+LRC+Chr$(13)+Chr$(10)'串口发送

'Tim=Timer

''Do

'IfTimer>Tim+3Then'如果通讯200毫秒以上,那么

'IfMsgBox("请检查通讯!

",vbRetryCancel+vbCritical)=vbCancelThen'弹出子窗口提示请检查通讯

'ExitSub

'Else

'GoToFIRSTLOOP

'EndIf

'EndIf

'LoopUntilMSComm1.InBufferCount=13'直到串口输入缓冲器字符长度等于13

SETIN=MSComm1.Input'SETIN为串口输入缓冲器字符串

bh=Mid(SETIN,8,4)'bh为回传数据的第八个字符开始的4个字符

IfOption1.Value=TrueThen'如果选择为十进制数值模式则

hcsj=Val("&H"+bh)'回传数据为数值

Text3.Text="K"+CStr(hcsj)'文本框显示十进制K加读回的数据

Else

Text3.Text="H"+bh'否则,为16进制,文本框显示16进制H加数据

EndIf

EndSub

PrivateSubCommand4_Click()

Calldizhi

stx=":

"

str="0105"+dz1+"FF00"

LRC=Chr_lrc(str)

Text6.Text=dz1

Ifdzcw=TrueThenExitSub

MSComm1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1