回复:求教s7 200读取条码扫描仪的编程

我爱周末

  • 帖子

    1464
  • 精华

    3
  • 被关注

    36

论坛等级:至圣

注册时间:2005-01-20

普通 普通 如何晋级?

发布于 2008-03-04 20:05:55

0楼

1、PLC软件设计

(1)PLC与PC的通信及条码识别

PLC与PC之间的通信采用RS-485/RS-232方式,信号的转换由RS-232/RS-485转换器完成。以下简要介绍S7-200系列与自由口功能有关的寄存器SMB2,SMB3,SMB30,它们主要用于自由口通讯方式的确定及运行管理。

控制字寄存器SMB30用于存储通讯方式控制字,由用户写入,属于可读写的特殊标志位寄存器。其格式如下:

mm:(通信协议)00 PPI协议(从机)
01 自由口协议
10 PPI协议(主机)
11 保留(缺省为PPI从机)
bbb:(波特率) 000~111依次对应38400 bps ~ 300 bps波特率
pp:(校验方式) 00 无校验
01 偶校验
10 无校验
11 奇校验
通讯接收字符缓冲器SMB2用于存放在自由口通讯方式下接收到的当前字符,它是一个暂存寄存器,一般应在下一步取走其中的内容。

通讯校验结果寄存器SMB3,在作自由口通讯时,PLC的通讯接口按由SMB30规定的奇偶校验方式对所接收到的信号作校验。若检测到错误,PLC自动将SMB3.0置1,根据此标志位,可决定当前信息的取舍,同时还可在出错的情况下,将此错误位发送给对方,以便要求它重发。

在S7 226 PLC中,集成了两个RS485数据通讯端口,可使用专用的位通讯协议作波特率高达38.4kbit/s 的高速通讯,并可按步调整。

以下为PLC接收部分程序片段:
LD SM0.1 //第一个扫描周期接通
MOVB 9, SMB30 //初始化port0口
ATCH INT_0, 8 //指定port0口接收事件由中断0处理
MOVD &VB101, VD96 //指针VD96指向VB101开始的V寄存器区
MOVD &VB0, VD36 //VD36也指向VB101开始的V寄存器区
MOVB 0, VB41 //接收字符个数清0

下面为中断0片段(接收并存储):
LD SM0.0 //一直接通
MOVB SMB2, *VD36 //只要接收到字符就存入指针VD36所指向的区域,
//即VB101开始的V寄存器区
INCD VD36 //指针下移,为接收并存储下一字符作准备
INCB VB41 //字符计数个数加一
当PLC需要向PC传送数据时,可以通过以下代码实现:
PLC发送部分程序片段:
LD SM0.1 //第一个扫描周期接通
MOVB 9, SMB130 //初始化port1口
MOVB 14, VB100 //将14存入VB100中
XMT VB100,1 //指定port1口发送自VB101开始的V寄存器区,
//发送字符个数由VB100的内容决定

以下为PLC接收条码并判断部分:
LDB= SMB2, 10 //收到换行符,条码结束
LPS
MOVD &VB0, VD36
AB<> VB41, 14 //总共收到条码字符数不等于14,出错,
S M0.1, 1 //置位M0.1
LRD
AB=VB41, 14 //总共收到条码字符数等于14,正确,
R M0.1, 1 //复位M0.1
LPP
MOVB 0, VB41 //接收字符个数清0,为下一次接收作准备

(2) 条码扫描仪与PLC的通信

Metrologic MS700i可以通过开机扫描设置条码而设定通信协议及条码类型,并可以通过连机方式从一台扫描仪“克隆”工作方式从而达到成组设定的目的。条码扫描仪与PLC之间的通信采用RS232/RS485方式,使用条码扫描仪自带通讯电缆。

(3) 显示屏与PLC的通信

由PLC根据条码扫描情况发送给显示屏相应的信息用以显示当前状况,使用RS485通讯协议。通信格式为:头尾各为十六进制02和03以标志信息起始,中间为ASCII码的状态信息。

2、上位机软件设计

PC机的监控程序用Delphi5.0完成,分为组态环境和运行环境两部分。组态环境下,用户可对每一闸口进行PLC参数、状态设定及条码设定;运行环境下,对各闸口实时监控,必要时发出控制命令,并具备历史数据存储和报表打印功能。

考虑通信方案如下:

(1) 引用VB的MsComm控件或第三方通信控件;

(2) 通过Delphi中嵌入汇编直接对端口操作实现通讯(如BIOS串行通信功能调用 INT 14H);

(3) 调用Windows API 函数实现;

由于方案1存在发布问题,方案2存在一定危险性,所以在实际开发过程中我们采用方案3,通过CreateFile、CloseHandle、ReadFile、WriteFile、SetCommState、GetCommState等API函数及DCB设备控制块的操作实现PC-PLC快速可靠的通信。
期待周末~~
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33289条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。