(已结贴)2011-08-17-工控擂台-s7200自由端口模式下结束字符与数字字符混淆 点击:680 | 回复:12



cqu_rockwell

    
  • 精华:19帖
  • 求助:1帖
  • 帖子:729帖 | 8694回
  • 年度积分:0
  • 历史总积分:53857
  • 注册:2010年6月30日
发表于:2011-07-27 19:23:11
楼主

s7-200在自由端口模式下怎么样解决报文的结束字符与数字字符混淆的问题?

 

 

能结合实际例子的回答、原创最多、阐述最全的将得大奖。



下周初结贴,9个最优回帖分别获得20MP、10MP、10MP、10MP、20积分、20积分、20积分、20积分、20积分!

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。



楼主最近还看过



花开_花落

  • 精华:1帖
  • 求助:1帖
  • 帖子:65帖 | 1155回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2011-07-27 20:03:07
1楼
       因为报文的结束字符只有8位,接收到的报文数据区内出现与结束字符相同的数据字符的概率很大,它们可能会与结束字符混淆,使报文的接收提前结束。可以在发送前对数据作某种处理,例如选择结束字符为某些特殊的值,将数据字符转换为ASCII码后再发送,接收方收到后将数据字符还原为原来的数据格式,这样可以避免出现上述的情况,但是会增加编程的工作量和数据传送的时间。
       接收字符中断可以对收到的每一个字符进行判断或处理,也能解决数据字符与结束字符混淆的问题。例如发送在方报文中提供发送的数据字符的字节数,接收方在字符中断程序中对接收到的字符计数,以此判断是否应停止报文。不过,,采用这种方式会增加中断程序的处理量和中断处理时间

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2011-08-17 09:19:09
2楼

在S7-200中,可以使用ASCII码来区分数据和结束字符,当然还可以包括起始字符。

一条指令除包含数据外,通常还包含必要的控制字(起始字符、结束字符、指令类型等)。如果指令中的数据直接以其原本的形式传输,则不可避免的会与指令中的控制字发生混淆, 就难以区分结束字符和其他的数据。


例如,指令的起始字符为"g",其ASCII码值为67H,结束字符为"G",其ASCII码值为47H。假设要写入的数据中也有47H,并且数据直接以其原本的形式传输,则PLC会因为接收到了数据中的47H而停止接收,这样PLC接收到的指令将是一个不完整的非法指令,很可能造成PLC的误动作。
为了避免或区分结束字符与数字字符发生这种情况,可以用文本来传送二进制数据。通过以16进制ASCII码的格式描述数据,每个二进制的字节都可以表示成一对ASCII编码,这对编码表示这个字节的两个16进制字符。这种格式可以表示任何的数值,仅仅使用ASCII代码的30H到39H(表示0到9)和41H到46H(表示A到F)。ASCII码的其余部分可以用作控制字(起始标志、结束标志、指令类型等)。这样,数据中的47H以ASCII码的形式进行传送就变成了34H 37H 两个字节,从而避免了PLC因接收到数据中的47H而停止接收的错误。

 

当然这里需要使用ASCII码的转换,稍显啰嗦一点,但这样做完全可以杜绝混淆。

xiutuo1376903843

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:50
  • 注册:2011年7月14日
发表于:2011-08-17 10:48:04
3楼

POP-A标准型
POP文本显示器是我公司自主开发的低成本人机界面产品,采用单色(3.7‘)图形点阵LCD显示屏,提供汉字、西文、数字及简单图形的显示;采用薄膜按钮键盘,提供数字、参数输入,自定义输入等功能。可方便连接各种厂商的可编程控制(PLC)及各种具有串口通讯能力的电气设备,是低成本控制设备的最佳选择。POP文本显示器的组态开发软件基于Windows平台,界面友好,简单易用,开发人员可在短时间内掌握使用。




文本正面 标准文本接口 背出接口

POP文本显示器的特点:
* 支持位(字)动态文本显示与设定功能
* 支持位(字)动态图片显示功能
* 支持ASICC字符串显示、浮点数显示功能
* 支持PLC多种寄存器访问和设置,地址输入方式与各厂PLC地址格式兼容
* 可定义功能键达31个
* 可灵活"贴放"多种格式图形(*.bmp、*.ico、*cur、*.jpg等)
* 交替选择"画面列表"和"元件列表"功能,便于用户查看和操作
* 支持屏保密码保护功能
* HMI工作状态显示(三位LED灯)
* 工程文件下载进度PC和HMI均有显示
产品规格和技术参数:
型号 POP A型
显示屏类型 图形点阵LCD
背光灯 LCD背光
外型尺寸 180X111X38(mm)
安装尺寸 170X101(mm)
显示分辨率 192X64像素
有效显示区域 104(W)X39(H)(mm)
对比度 可调
可显示文字/图形 12X4行(中文)/24X4(西文)
灯,开关,多种格式图形,曲线,棒图
色彩 黄底黑字(或蓝底白字)
按键 22个(其中31个功能键可自由定义)
状态指示 POWER,RUN,TXD
屏保时间 可设定(缺省3分钟)
存储器 512KB FlashROM
输入电压 DC20V-DC28V
消耗电流 <120mA
使用环境温度 0`C-50`C
储存环境温度 -20`C-60`C
前面板防护等级 IP65
干扰防护(EMI) 1000Vp-p,1uS脉冲,1分钟
冷却方式 自然风冷
通讯端口 支持RS232/RS422/RS485
可扩展接口  
可连接PLC类型:
三菱FX系列 松下FP系列 欧姆龙CQM、CPM系列
台达DVP系列 LG Master-K 西门子S7-200(PPI)
永宏FB系列 光洋S系列 施耐德NEZA系列
富士SPB系列 VIGOR系列PLC 丹佛斯VLT系列变频器
凯迪恩PLC 东芝机械TC系列 AB Micrologix系列
Modbus协议设备 日立MICRO-EH系列 GE-FANUC VersaMax系列
ECOSTEP驱动器 自定义协议 订制用户串口设备驱动
上海秀拓电子科技有限公司
更多信息欢迎登陆我们的网站:www.chinaxiutuo.com
联系电话:021-51981345
QQ:412659656 1376903843

snow1987

  • 精华:0帖
  • 求助:30帖
  • 帖子:57帖 | 670回
  • 年度积分:0
  • 历史总积分:4548
  • 注册:2011年3月23日
发表于:2011-08-17 10:56:04
4楼

请问报文字符是什么?

不好意思,请教一下

snow1987

  • 精华:0帖
  • 求助:30帖
  • 帖子:57帖 | 670回
  • 年度积分:0
  • 历史总积分:4548
  • 注册:2011年3月23日
发表于:2011-08-17 10:58:18
5楼

怎么我的回复看不到啊??

snow1987

  • 精华:0帖
  • 求助:30帖
  • 帖子:57帖 | 670回
  • 年度积分:0
  • 历史总积分:4548
  • 注册:2011年3月23日
发表于:2011-08-17 10:58:54
6楼
哦,看到了,呵呵。。

szboyway

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2011年4月22日
发表于:2011-08-17 11:11:14
7楼
深圳市宝悦微科技有限公司专业代理西门子产品,G120变频器、G110变频器、LOGO!、PLC、触摸屏,大量库存!详情见官方网站:www.boy-way.com ;业务QQ: 1986 8635 37

zling

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 51回
  • 年度积分:0
  • 历史总积分:752
  • 注册:2011年3月06日
发表于:2011-08-17 20:06:34
8楼

(1) 注意PC 机与S7 - 200 的通信方式
西门子S7- 200 PLC 的通信功能较强, 有多种通信方式可供用户选择, 如: 单主站方式、多主站方式以及使用调制解调器的远程通信方式等。在本测控装置中, 采用单主站方式。在运行Windows 或Windows NT 操作系统的个人计算机( PC 机) 上安装STEP 7- Micro/WIN32 编程软件后, PC 机就可作为通信中的主站。它可与一个或多个从站相连, STEP 7 - Micro/WIN 32 每次和一个S7- 200 CPU 通信, 但可以访问网络上的所有CPU。该通信方式的硬件配置为PLC 到PC 机通信口的电缆连接器, 即带RS- 232 口的隔离型PC/PPI 电缆, 用五个DIP 开关设置波特率和其它配置项。它支持的波特率为9.6kbps 或19,2kbps , 支持的协议为PPI 协议。这里并没有使用PPI 协议, 而是使用PC/PPI 电缆和自由端口通信功能来实现S7- 200 CPU 与PC 机间的通信。自由端口模式是计算机或其它带有串行通信接口的设备与 S7- 200 CPU 之间通信的一种廉价和灵活的方法。它以用户定义的通信协议为基础, 通过使用相关的中断指令 和专用的通信指令控制S7 - 200 CPU 通信口的操作模式, 实现与多种智能设备的连接。

具体地说, 所谓自由通信端口模式是指CPU 的串行 通信接口可由用户程序控制的一种通信操作模式, 其梯形图程序可以使用接收完成中断、字符接收中断、发送 完成中断、发送指令( XMT) 和接收指令( RCV) 等控制通信过程。在该模式下, 通信协议完全由用户程序控制。CPU 处于STOP 模式时, 自由通信端口模式被禁止, CPU 重新建立使用其它协议的通信, 例如与编程设备的
通信。只有当CPU 处于RUN 模式时, 才能使用自由通信端口模式。通过将特殊寄存器字节SM30 或SM130 的协议选择( mm) 置1 可以将通信端口设置为自由端口模式, 处于该模式时不能与编程设备通信。

可以用反映CPU 模块上的工作方式开关当前位置的特殊存储器位SM0.7 来控制自由端口模式的进入。当SM0.7 为1 时, 工作方式开关处于RUN 位置, 可选择自由端口模式; 当SM0.7 为0 时, 工作方式开关处于TERM 位置, 应选择PC/PPI 协议模式, 以便用于编程设备监视或控制CPU 模块的操作。

(2)自由端口模式下PLC 串行通信程序的编程避免混淆要点

计算机与可编程控制器通信时, 为了避免通信中的各方争用通信线, 一般采用主从工作方式, 即计算机为主机, 可编程控制器为从机; 只有主机才有权主动发送请求报文, 从机收到后返回响应报文。下面主要谈一谈编程过程中应注意的几个问题。

首先是电缆切换时间的处理。因为使用了PC/PPI 电缆, 所以在S7- 200 CPU 的用户程序中应考虑电缆的切换时间。S7- 200 CPU 接收到RS232 设备的请求报文到它发送响应报文的延迟时间必须大于等于电缆的切换时间。波特率为9600bps 和19200bps 时, 电缆的切换时间分别为2ms 和1ms。在梯形图程序中可用定时中断实现切换延时。

其次就是通信可靠性的处理, 校验码的采用是提高通信可靠性最常用的措施之一。用得较多的是异或校验, 即将每一帧中的第一个字符( 不包括起始字符) 到该帧中正文的最后一个字符作异或运算, 并将异或的结果 ( 异或校验码) 作为报文的一部分发送到接收端。接收方接收到数据后计算出所接收到的数据的异或校验码, 再与发送方传过来的校验码比较, 如果不同, 可以判断通信有误。

最后防止起始字符、结束字符与数据字符的混淆要点。因为报文的起始字符和结束字符只有8 位, 接收到的报文数据区内出现与起始字符或结束字符相同的数据字符的机率很大, 这可能会引起字符混淆。可以在发送前对数据作某种处理, 例如选择起始字符和结束字符为某些特殊的值, 而将数据字符转化为BCD 码或ASCII码后再发送, 这样可以避免出现上述的情况, 但是会增加编程的工作量和数据传送的时间。

涛声依旧

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 540回
  • 年度积分:5
  • 历史总积分:18865
  • 注册:2006年12月03日
发表于:2011-08-17 20:26:58
9楼

学习了                         

零下二度

  • 精华:1帖
  • 求助:5帖
  • 帖子:340帖 | 6056回
  • 年度积分:13
  • 历史总积分:24395
  • 注册:2011年5月08日
发表于:2011-08-21 14:46:02
10楼
对于PLC又学习了 谢谢

zxjjynl

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 561回
  • 年度积分:0
  • 历史总积分:2626
  • 注册:2011年3月06日
发表于:2011-08-23 23:14:38
11楼

一条指令除包含数据外,还包含必要的控制字(起始字符、结束字符、指令类型等)。如果指令中的数据直接以其原本的形式传输,则不可避免的会与指令中的控制字发生混淆。
----例如本例中,指令的起始字符为"g",其ASCII码值为67H,结束字符为"G",其ASCII码值为47H。假设要写入的数据中也有47H,并且数据直接以其原本的形式传输,则PLC会因为接收到了数据中的47H而停止接收,这样PLC接收到的指令将是一个不完整的非法指令,很可能造成PLC的误动作。
----为了避免这种情况的发生,可以用文本来传送二进制数据。通过以16进制ASCII码的格式描述数据,每个二进制的字节都可以表示成一对ASCII编码,这对编码表示这个字节的两个16进制字符。这种格式可以表示任何的数值,仅仅使用ASCII代码的30H到39H(表示0到9)和41H到46H(表示A到F)。ASCII码的其余部分可以用作控制字(起始标志、结束标志、指令类型等)。这样,数据中的47H以ASCII码的形式进行传送就变成了34H 37H 两个字节,从而避免了PLC因接收到数据中的47H而停止接收的错误。
上位机指令格式详细如下:

Byte0起始字符
Byte1指令类型(读/写)
Byte2目标PLC站地址(十六进制ASCII码)
Byte3
Byte4目标寄存器地址(十六进制ASCII码)
Byte5
Byte6
Byte7
Byte8
Byte9
Byte10
Byte11
Byte12读/写字节数M(十六进制ASCII码)
Byte13
Byte14要写入的数据(十六进制ASCII码)
Byte15
Byte16
Byte17
Byte18
Byte19
Byte20
Byte21
Byte22
Byte23
Byte24
Byte25
Byte26
Byte27
Byte28
Byte29
Byte30BCC校验码(十六进制ASCII码)
Byte31
Byte32结束字符
表2 反馈信息格式
Byte0起始字符
Byte1状态信息
Byte2数据区(十六进制ASCII码)
Byte3
Byte4
Byte5
Byte6
Byte7
Byte8
Byte9
Byte10
Byte11
Byte12
Byte13
Byte14
Byte15
Byte16
Byte17
Byte18BCC校验码(十六进制ASCII码)
Byte19
Byte20结束字符

cqu_rockwell

  • 精华:16帖
  • 求助:0帖
  • 帖子:678帖 | 8694回
  • 年度积分:0
  • 历史总积分:57901
  • 注册:2010年6月30日
发表于:2011-08-23 23:49:51
12楼
ye_w ye_w

10MP获得者:
花开_花落 the_wise
Zling zling
Zxjjynl zxjjynl

20积分获得者:

热门招聘
相关主题

官方公众号

智造工程师