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

相关推荐

  • PLC编程实现多位开关的问题

    现有M0.0,M1.0;M2.0;M3.0;M4.0;M5.0;M5.1等多个中间继电器,每一个的通断对应一个子程序的执行,但是同一时刻只有一个执行,假如M0.0=1,当用触摸屏使…

    2021年7月5日
  • TD200 V2.1

    TD200 V2.1版本组态了一个画面,其中有一个嵌入数据,并且选择了允许编辑,但是此数据无法修改,不知是程序问题还是组态问题请高手帮忙 最佳答案 TD200 …

    SIMATIC S7-200 2021年7月5日
  • P1口通讯问题

    CPU226的P1口能下载程序,但进行modbus通讯,提示接收超时。将程序改用P0口,则正常,请指点! 钻石用户推荐最佳答案 检查你PORT口是否接线有问题或是通讯格式设定不对造…

    SIMATIC S7-200 2021年7月5日
  • 如何实现485接口的无线通信功能!

    刚开始接手一个项目,要加入无线通信功能(100米),无线通信的控制端A是 CPU226的PLC,利用485接口连接到一个带485口的调制解调器上,无线通信的受控&nbsp…

    SIMATIC S7-200 2021年7月5日
  • 测量脉冲密度

    请教高手,我想知道怎么样测量单位时间的脉冲数,用怎么样的指令? 问题补充:用增量式编码器测量速度,怎么样操作?最好写一段程序。谢谢 最佳答案 测量单位时间的脉冲数的方法有两种:&n…

    SIMATIC S7-200 2021年7月5日
  • 对值型的编码器输出的是不是都是格雷码啊?

    请问增量型的编码器和绝对值型的编码器是不是都是输出的格雷码啊?所有的编码器都是输出格雷码码?没有其他的吗? 最佳答案 有二进制码、格雷码、BCD码输出的绝对脉冲编码器:APC&nb…

    SIMATIC S7-200 2020年11月5日
  • s7-200编程 彩灯循环闪烁和一段自震荡程序

    s7-200编程 彩灯循环闪烁和一段自震荡程序 问题补充:LTJHRB – 学长:俺是菜鸟。烦你演示一段程序。谢谢!!!!! 最佳答案 看看这个教案中…

    SIMATIC S7-200 2021年7月4日
  • 怎么样知道S7-200程序占多少内存

    写了一套200的程序,怎么样知道程序占多大内存?以选择适合的CPU。 最佳答案 写完程序后,你选择软件中的全部编译按纽,会在下方程序编译信息框中看到程序块占多少字节(K),数据块占…

    SIMATIC S7-200 2017年8月26日
  • STEP 7 MicroWIN SP9按F1打不开帮助

    STEP 7 MicroWIN SP9按F1打不开帮助,然后网上找的补丁也安装失败是为什么。 问题补充:试过微软的补丁安装失败了。 图片说明: &nb…

    2021年7月5日
  • 关于指针的理解与应用

    200里的指针我应该如何去理解它,我在答案里也看过各种各样的链接与回答,但小弟我愚钝,还请大侠们不吝赐教!  什么是指什?比如:&VB100表示的是什么意思,它表示的是一个指针呢,…

    SIMATIC S7-200 2020年11月1日

发表回复

登录后才能评论