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

相关推荐

  • 两个西门子S7-200通讯

    西门子S7-200通讯接口和程序监控读写 最佳答案 两个方案:第一,采用PPI连接方式。网络读写即可完成。可参考下面资料,点击S7-200 CPU,内容在通讯那章节。(包…

    SIMATIC S7-200 2020年11月1日
  • 数字量转化成模拟量

    我写了个200的程序,要把数字量转化成模拟量,用的是vw但是在转化的过程中把余数丢失了,得出的数据不够精确,不知道应该怎么样做,请问谁有这方面转化的程序啊。谢谢 最佳答案 在STE…

    SIMATIC S7-200 2021年7月5日
  • s7-200 解密和上载

    我在技术论坛看到S7-200的通用密码CLEARPLC;我把密码输入想下CPU224的程序学习别人的编 程方法,结果把里面的程序搞没了,谁能告诉我是怎么回事?还能恢复程序…

    SIMATIC S7-200 2020年11月1日
  • CPU224XP与CPU224XP CN

    请问:S7-200的 CPU224XP 与 CPU224XP CN 有什么不同?它们的价格大约是多少RMB? 通过西门子…

    SIMATIC S7-200 2021年7月5日
  • 梯形图编程问题

    当t0t1相互循环最终在q0.0输出一个2s周期,计时器计时10次后q0.0成输出状态,同时q0.1输出4s后q0.1断开,q0.2动作 最佳答案 你能描述的这样详细说明你已经具备…

    SIMATIC S7-200 2021年7月5日
  • S7200和欧姆龙编码器位置测量

    跪求S7200连接HSC和欧姆龙编码器进行位置测量的程序,电邮my.haogao@gmail.com 最佳答案 用向导来做比较简单,程序调用就行了,另外要看你需要哪种计数模式了 提…

    SIMATIC S7-200 2020年11月5日
  • 组态王与s7-200

    有个项目需要组态王与s7-200的通讯,请问高手:1,组态王要与4台s7-200通讯,请问选用何种通讯方式最为划算?2,如果选用通过CP5611卡与s7-200通讯,那么通讯电缆与…

    SIMATIC S7-200 2017年12月7日
  • s7-200子程序调用问题程序

    在子程序中用局布变量(符号)编写了一个启保停的电机控制子程序,在主程序中多次调用后,只要一台电机启动,其它没有给启动信号的电机也有启动输出。这是为什么?请各位教师指教,谢谢&nbs…

    2020年10月31日
  • 求平均值 模拟量

    压力传感器变4-20mA信号给EM235模块,可是各种干扰处理方法都试过了就是不行,触摸屏上得数上下不连续波动,有时候跳的很离谱,我想用程序求平均值方法试试,有经验的前辈给我发个s…

    SIMATIC S7-200 2017年8月26日
  • 200plc控制伺服电机的程序

    谁有完整的程序啊 发到我邮箱啊706494452@qq.com   很着急啊 最佳答案 《S7—200 PLC在数字伺服电机控制中…

    SIMATIC S7-200 2020年10月31日

发表回复

登录后才能评论