对PC与PLC通讯程序感兴趣的朋友请进,公开读取PLC密码代码
发布: 2008-9-06 14:13 | 作者: weichaoonline | 来源: PLC-PLC编程-PLC教程-我爱PLC行业站
我在网上看到很多人对PC上用VB对三菱PLC进行通讯很感兴趣.可是苦于没有一个实际的例子来更加明了的认识通讯过程!
小魏我今天将我自己编写的VB读取三菱FX系列PLC密码的程序公开,方便大家学习.
那么,在讲解通讯之前,大家先了解一个问题!就是PC怎么样得到PLC的密码的,大家看下面的顺序:
1.PC设置好与PLC的通讯格式.
2.连接好电缆线(其实我可以不说这步的,呵呵)
3.PC发送一串读取密码指令给PLC
4.PLC得到指令后返回一串16进制数据
5.PC通过程序解码,放PLC返回的16进制数据转换成字符,也就是密码
下面大家请看,PC发送到PLC的指令:
“STX0800808ETX6B”
将其分解,就是STX+0+3+….+ETX+6+B
那么问题就出来了,这个字符呀,PLC不认识的,PC要把这字符转换成十六进制的PLC才认账的!好吧,我们来转换吧,查ASC码表可得,
十进制----十六 进制----八进制
STX 02 02 自已查表,
那么,加起来,PC发送给PLC的指令就是
“0230383030383038033642”
由于我程序里用的是八进制,所以我的PC发送指令如下”
MSComm1.Output = Chr(&O2) + Chr(&O60) + Chr(&O70) + Chr(&O60) + Chr(&O60) + Chr(&O70) + Chr(&O60) + Chr(&O70) + Chr(&O3) + Chr(&O66) + Chr(&O102)
Chr(&O2)
Chr:转换为字符串指令
&02:将八进制的02转换成十六进制查表就可以明白了好了,这是PC发送给PLC的指令,那PLC得到指令后,会返回什么呢, STX4236353433323130ETX41---------PLC返回数据
仔细解释一下,PLC密码为六位,所以返回数据中,我们只对中间的那数据感兴趣就行了,也就是”4236353433323130”
PLC返回的十六进制的数据,所以要将此串数据进行解码转换,二位一转,查下ASC码表就可以知道了,42是”B”,36是”6”,所以密码为: B6543210
那么PC程序里的代码如下:
a = MSComm1.Input '将接收到的数据存入a中
b = Mid(a, 2, 16) '从第二位开始读取,因为第一位为PLC发送的数据头
For i = 1 To 15 Step 2 '将接收到的数据每二位读取
c = Chr(CLng("&H" & (Mid(b, i, 2)))) '转换为字符
Text1.Text = Text1.Text + c
Next i
呵呵,程序就是如此啦,有想进一步了解的朋友请联系我,
小魏---Wei.Online------QQ:3687546-------E-mail:weichaoonline@126.com
[ 本帖最后由 weichaoonline 于 2008-9-6 14:17 编辑 ]

