资源描述:
《vb和台达plc上位机通讯软件》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、为答谢各位网友的支持,也算是一个小小的礼物吧,特将我以VB写的一个工控通讯程序源码奉上,以资感谢. 这个程序是VB同台达PLC的通讯调试程序,其于台达系列PLC的MODBUSASCII协议,涉及IO及寄存器的读写,稍加改动即可用于工控项目中.我在写这个程序时,也参考了<<基于VB的台达PLC和监控计算机的串口通讯>>一文,在此也向作者表示感谢. DimplcAsByteDimy0flagAsByteDimy1flagAsByteDimstrAsStringDimn,SPrivateSubCommand1_Click()Dimstr
2、outAsStringDimQQAsStringTimer1.Enabled=FalseQQ=Text1.TextIfLen(QQ)=3Then QQ="0"&QQ ElseIfLen(QQ)=2Then QQ="00"&QQ ElseIfLen(QQ)=1Then QQ="000"&QQEndIfstr=""+QQLRCC=LRC(str) '计算str的lrc校验码。strout=":"+str+LRCC+Chr$(13)+Chr$(10)'欲传送之数据。13为D,10为AMSCo
3、mm1.InBufferCount=0MSComm1.Output=stroutTimer1.Enabled=TrueEndSubPrivateSubCommand2_Click()EndSubPrivateSubForm_Load() Dims1AsString Dims2AsString Dims22AsString Dims3AsString Dims4AsString Picture1.Move0,0,5600,280 '长度可随意改 Timer1.Enabled=True n=-(
4、Me.TextWidth(Now))-10 MSComm1.PortOpen=True Timer1.Enabled=True s2="01010C" s22=LRC(s2) s1=":"+s2+s22+Chr$(13)+Chr$(10) MSComm1.InBufferCount=0 MSComm1.Output=s1 TimeDelay(500) s3=MSComm1.Input s4=Mid$(s3,8,2) Ifs4="31"Then plc=1 Else:Ifs
5、4="30"Thenplc=0 EndIf Ifplc=1Then Label2.Caption="PLCRunning" Shape1.FillColor=RGB(0,255,0)'green Else Label2.Caption="PLCStopped!" Shape1.FillColor=RGB(255,0,0)'red EndIf EndSub PublicFunctionLRC(strAsString)AsString c=0 l=Le
6、n(str) Forc=c+1Tol c_data=Mid$(str,c,2) d_lrc=d_lrc+Val("&H"+c_data) c=c+1 Nextc Ifd_lrc>&HFFThen d_lrc=d_lrcMod&H100 EndIf h_lrc=Hex(&HFF-d_lrc+1) IfLen(h_lrc)>2Then h_lrc=Mid(h_lrc,Len(h_lrc)-1,2) EndIf LRC=h_lrc E
7、ndFunction PrivateSubstart_Click()DimstroutAsStringTimer1.Enabled=Falsestr="01050C30FF00" 'M1072为PLC起动停止标志位。查地址表,M1072为OC30.FF00为置 ' ON,0000为置OFF。LRCC=LRC(str) '计算str的lrc校验码。strout=":"+str+LRCC+Chr$(13)+Chr$(10)'欲传送之数据MSComm1.InBufferCount=0MSCom
8、m1.Output=stroutTimer1.Enabled=TrueEndSubPrivateSubstop_Click()DimstroutAsStringTimer1.Enabled=Falsestr="01050C"LRCC=LRC(str