对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 编辑 ]
2008-9-09 20:35:21
可以请教你个问题吗,cclink系统在通讯设置的调试有一个确定模块数,然后后面有一个重试次数,那里为什么编一个重试次数。是起什么作用的
2008-9-09 22:50:47
那是设定通信重试次数的,超过的话,就报错的
2008-9-10 09:13:58
谢谢你,听你一说就懂了,前几天看书,看了几天,怎么悟都悟不明白。
2010-1-20 18:47:41
向楼主好好学习下!