S7 200自由口采集电子秤数据误码率高,附PLC采集程序

我用S7 226的PORT1口采集JJ系列电子天平的数据,导致约2.5%的误码率。高手有什么办法?

 主程序:
 网络1
 //初始化PORT1为自由口:9600,N,8,1
 LD     SM0.1
 MOVB   16#09, SMB130 
 MOVB   2#11000100, SMB187  // 配置接收信息控制字节
                            // SM187.7(en)=1   允许端口1接收字符
                            // SM187.6(sc)=1   当检测到与SMB188中相同的字符时开始接收,并将该字符当作信息的首字符
                            // SM187.5(ec)=0   不检测信息的结束字符
                            // SM187.4(il)=0   不检测端口空闲状态
                            // SM187.3(c/m)=0  定时器为内部字符定时器,PLC检测到起始字符,每接收到一个字符就启动定时器
                            // SM187.2(tmr)=1  允许在定时器(SMW192中设定的值)超时后停止接收,并产生接收完成中断
                            // SM187.1(bk)=0   忽略Break条件
                            // SM187.0=0       系统保留
 MOVB   16#20, SMB188       // 信息字符的起始字符:空格符
 MOVW   +20, SMW192         // 中间字符溢出值:20毫秒
 MOVB   20, SMB194          // 要接收的最大字符数:20
 ATCH   INT_5:INT5, 24      // 端口1接收完成事件(事件号:24)连接到中断5
 ATCH   INT_6:INT6, 26      // 端口1发送完成事件(事件号:26)连接到中断6
 ENI                        // 允许用户中断
 RCV    VB1000, 1           // 通讯口1的接收信箱缓冲区:VB1000
 网络2
 //生成电子天平查询命令:1B70H
 LD     SM0.1
 MOVB   2, VB1200
 MOVB   16#1B, VB1201
 MOVB   16#70, VB1202
 网络3
 //T32定时器中断:每200ms向天平发送一次水量采集命令
 LDN    T32
 TON    T32, +200
 ATCH   INT_4:INT4, 21
 ENI

 INT_4程序:向电子天平发送查询命令:1B70H
 网络1:
 LDN    I1.5
 R      SM187.7, 1 // 发送前禁止接收
 RCV    VB1000, 1  // 停止接收
 XMT    VB1200, 1  // 向电子天平发送一次查询命令
 CRETI

 INT_5程序:PORT1接收完成中断
 网络1:
 LD     SM0.0
 AB>=   VB1000, 11                  
 STR    VB1000, 1, VD1210 //从第一个接收到的字符开始转换,因为有时候给出的前导空格会丢失
 网络2:
 LD     SM0.0
 CRETI

 INT_6程序:PORT1发送完成中断
 网络1:
 LD     SM0.0
 S      SM187.7, 1 // 发送完成后,允许接收
 RCV    VB1000, 1  // 启动一个新的接收
 CRETI
 

最佳答案

已经增加11个以上的字符判断,怎么还能转换出错误的数字 ?

提问者对于答案的评价:
增加11字符判断后,已经没有错误的数据产生。只是采集900次,约有20次数据被丢弃。不过不影响使用了。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc356711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午9:32
下一篇 2021年7月5日 上午9:32

相关推荐

  • 一旦I0.5是低电平,VW400的值即由1变为+0,而不是继续保持,这是怎么回事?

    传送指令也有这样的问题,一旦使能端失效,则变量中的值即变为+0,是因为程序段过长了吗? 问题补充:这个程序,在单独的实验程序中,不会有这种问题,但是在一个整体的程序中就会这样,这是…

    2017年8月15日
  • S7200SMART报错

    安装好V2.4后,打开就是这个 钻石用户推荐最佳答案 V2.4可以安装到WIN7\WIN10系统上,但是个别版本可能存在安装兼容性问题,可以先查看V2.4支持的系统列表,然后按照到…

    SIMATIC S7-200 2021年7月5日
  • S7-200如何记录中断程序运行次数

    我想用个计数器记录一个中断程序记录的次数,不知道有什么好的,简单的方法没.我存在的问题在于,如何让计数器在进入中断后计一次数. 最佳答案 中断程序里用INC或ADD指令 提问者对于…

    SIMATIC S7-200 2021年7月5日
  • 西门子EM231接线

    请问一下,我现在用EM231,接四线制PT100,只需使用一个通道,那么我剩余的三个通道应该如何处理?最好能有图说明,谢谢 最佳答案 转帖:如果未使用的通道仍然为断开的状态,那么E…

    SIMATIC S7-200 2017年10月30日
  • s7-200 SM0.0?

    请问S7_200程序中为什么经常用到SM0.0,特别是在子程序调用的时候,不用不可以吗? 最佳答案 200的语法要求:所有指令必须有一个以上的触点导引能流才能被触发使能。&nbsp…

    SIMATIC S7-200 2021年7月5日
  • S7-200 SP9 win7 安装问题

    安装过程出现如下图片问题  请问怎么解决???请详细说明操作步骤 图片说明:       最佳答案 新建一文本文档,输入…

    2020年10月31日
  • s7-200与m430

    一台CPU226加了3个EM235模拟量模块,用EM235模拟量输出控制变频器M430,程序中强制AWW8为6400输出对应4MA,可一接变频器的AI1端,电流就减少1MA,什么原…

    2017年11月12日
  • 200 SMART PID 温度控制请教

    请教各位师傅们,小弟一个项目中需要70路温度控制回路,想用200 SMART PLC ,但是一套S7-200 SMART CPU最…

    SIMATIC S7-200 2021年7月5日
  • S7-200中检测M10.1的下降沿的梯形图怎么写?

    小小的求助:如题!上升沿很容易理解,但是下降沿的检测对于本人来讲有些乱,图1的写法正确还是图2写法正确?请指点 图片说明:       最佳…

    2017年8月3日
  • 西门子的温度传感器QAE22

    请教,QAE22的输出是电阻值,还是电压,电流?个人感觉好像是热电阻,但因为要接入s7-200,涉及到模拟量模块选型,害怕买错东西,所以请了解的朋友帮一下。 问题补充:是的,好像现…

    SIMATIC S7-200 2020年11月1日

发表回复

登录后才能评论