PLC自由口模式下与计算机的通信的问题来自网页:http://www.ad.siemens.com.cn/applic/publicsystem/article.asp?articleid=95
这篇经典的文章里面的知识被大部分引用,但是我搜遍网上的很多地方(找答案,技术论坛和数据库),仍然对其中
《自由口模式下PLC与计算机的通信》文章中有一些质疑,我想说的我对自由口模式下的基本知识有一些了解的,modubs协议就是使用自由口模式下的通讯。在这里我想借助大家的力量弄清楚一些问题。请多多指教。
1.把《自由口模式下PLC与计算机的通信》中的程序复制到程序编辑器中,进行全部编译,发现有基础错误。即Initialize子程序中
MOVB +1000, SMW92
MOVB &VB102, VD149 //装入地址指针
MOVB &VB156, VD181 //装入地址指针
有错误,现改为
MOVW +1000, SMW92
MOVD &VB102, VD149 //装入地址指针
MOVD &VB156, VD181 //装入地址指针
这样程序就没有任何错误了。
我想请问,这样的改法,应该是对的吧?
2.请问读取VB100的报文怎么写?
我下面谈谈我的想法,根据《自由口模式下PLC与计算机的通信的内容提示,我认为读取VB100的请求报文为:
67 05 30 32 30 38 30 30 30 30 36 34 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 43 47
共33个字节
起始字符:67
指令类型:05(读操作05H)
目标PLC站地址:30 32(PLC地址02H)
VB100的地址:30 38 30 30 30 30 36 34(08 00 00 64H)
读字节数:30 31(01H)
要写入的数据:30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
BCC校验码:30 43
结束字符:47
请问我这种写法是否正确?
3.因为请求的报文是33个字节,而且指令类型为读,所以要写入的数据我觉得可以随便填,我填的数值为16个零,关于这点分析可以吗?
得到的相应报文为:
67 01 30 30 36 37 30 35 33 30 33 32 33 30 33 38 33 30 30 44 1A
起始字符:67
状态信息:01
数据区:30 30 36 37 30 35 33 30 33 32 33 30 33 38 33 30
BCC校验码:30 44
结束字符:1A