自由口模式下PLC与计算机de通信内容地址为:http://www.ad.siemens.com.cn/applic/publicsystem/article.asp?articleid=95
我自己尝试过,也看过论坛上很多帖子,有一些问题特向大家请教。
1.网页上Initialize子程序有一些问题,如下
Initialize子程序:
NETWORK 1
LD SM0.0
MOVB 9, SMB30 //0口"9600,N,8,1"
NETWORK 2
LD SM0.0 //RCV指令初始化
MOVB 16#EC, SMB87
MOVB 103, SMB88
MOVB 71, SMB89
MOVB +1000, SMW92
MOVB 35, SMB94
R SM87.2, 1
NETWORK 3
LD SM0.0
ATCH RCVcomplete, 23 //连接口0接收完成的中断
NETWORK 4
LD SM0.0
ATCH XMTcomplete, 9 //连接口0发送完成的中断
NETWORK 5
LD SM0.0
ENI //中断允许
NETWORK 6
LD SM0.0
MOVB 2, VB199 //将本机站地址装入寄存器
NETWORK 7
LD SM0.0
MOVB &VB102, VD149 //装入地址指针
MOVB 0, VB179 //BCC码寄存器清零
MOVB &VB156, VD181 //装入地址指针
MOVB 0, VB180 //BCC码寄存器清零
其中
MOVB +1000, SMW92
MOVB &VB102, VD149 //装入地址指针
MOVB &VB156, VD181 //装入地址指针
有错误,改为
MOVW +1000, SMW92
MOVD &VB102, VD149 //装入地址指针
MOVD &VB156, VD181 //装入地址指针
令我不解的是,官方的资料怎么会有错呢?是不是我理解错误,是不是我不应该这样改,请指正。
2. freeport.mwp(5.77K) 此程序在网页上已不能下载,早前已下载的朋友,能不能发一份给我,我的邮箱:ncuqgzx@yahoo.com.cn,另外有人说。此程序手册中有,不知是那个手册,请知道的朋友告知。我的邮箱:ncuqgzx@yahoo.com.cn
3.按照“自由口模式下PLC与计算机de通信”的解释,我向PLC发送的报文为:
67 05 30 32 30 30 30 30 30 30 30 30 30 31 30 36 47
没什么我得到的响应报文是:
67 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1A
我请求的报文是读IB0字节的数值
起始字符:67
指令类型:05
目标PLC站地址:30 32
IB0的地址:30 30 30 30 30 30 30 30
读字节数:30 31
BCC校验码:30 36
结束字符:47
为什么我得到的报文是指令不合法呢?
问题补充:
to:李平 and qingzi
我现在研究的是自由口通讯。
67 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1A 中的 “04”代表指令不合法。
最佳答案
1、你的改正完全正确。
2、没有
3、为什么你的指令会是合法的呢?
指令格式定义
计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:
你发送了17个字节的报文,还想合法?
起始字符:67
指令类型:05
目标PLC站地址:30 32
IB0的地址:00 00 00 00 //此处不用ASCII,表示例子里也说了:IB000的地址可表示为 00 00 00 00(H)
读字节数:00 00 //读方式可任意写入
写字节数:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //写入数据添满,即使你用不到
BCC校验码:?? ??//我没有程序,没法校验
结束字符:47
整个报文就是要把这些数据合起来就可以了
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc320040.html