请教多路传感器输入及数值转换程序

前面经过多方调试和各位的帮忙指导我已经建立了一个传感器与PLC的通信,但还有两个问题需要大家的指导,在此先谢了:
 1、数据传送以ASCII方式,PLC接收到的数据为十六进制,即为十六进制的ASCII,如接收到数据30H 39H 31H 34H,实际上最终数值为9.14,因此,如何将上面四个字节的数据转换成一个实数呢?假设上述四组数据地址为VB300、VB301、VB302、VB303,最终结果存放在VD400中,该如何编程呢?
 2、使用如下的中断程序完成了一路传感器的通讯,现在我要实现两路传感器分时输入,但只有一个串口可用,两路传感器型号不一样,分别为1、2,需要在程序中做何种修改呢?添加另外两个类似的中断可以吗?如何实现分时呢?谢谢各位,能给我写出程序最好,若是忙的话给出思路也好。
 一路通信程序如下:
 MAIN:
 Network 1 // 网络标题
 // 网络注释
 LD     SM0.1
 CALL   SBR0

 SBR0:
 Network 1 // 网络标题
 // 网络注释
 LD     SM0.1
 MOVB   16#09, SMB30
 MOVB   16#F0, SMB87
 MOVB   16#0A, SMB88
 MOVB   16#0D, SMB89
 MOVW   +100, SMW92
 MOVB   17, SMB94
 ENI
 ATCH   INT0, 9
 MOVB   150, SMB34
 ATCH   INT1, 10

 INT0:
 Network 1 // 网络标题
 // 网络注释
 LD     SM0.0
 RCV    VB200, 0
 MOVB   250, SMB34
 ATCH   INT1, 10

 INT1:
 Network 1 // 网络标题
 // 网络注释
 LD     SM0.0
 DTCH   10
 XMT    VB100, 0
 数据块:
 VB100  4
 VB101  16#0A
 VB102  16#0D
 VB103  16#1
 VB104  16#0D

问题补充:
谢谢各位的指导,目前我已经完成了数制转换和两路传感器分时通信,但是就像LaoHuai说的,传输过程中如果某一路传感器掉电,那么PLC将不能接收到数据,具体就是:两路传感器可以通信,仅型号2可以通信,此时型号1存储数据为0,但是仅型号1却不能通信,不能接收到数据,现将主要的分时程序和中断程序写出来,希望大家能帮忙指点一下:
 Network 2 
 // 产生周期2秒的时钟脉冲,一秒OFF,一秒ON
 LDN    T34
 TON    T33, 150
 TON    T34, 300
 网络3:分时定义不同的传感器机型号,以辨别向不同的传感器发送
 LD     T33
 MOVB   16#1, VB53
 NOT
 MOVB   16#02, VB53
 中断1:
 Network 1 // 网络标题
 // 传感器向PLC发送数据,存放在VB100数据缓冲区
 LD     SM0.0
 LPS
 AB=    VB53, 1
 RCV    VB99, 0
 LRD
 AB=    VB53, 2
 RCV    VB499, 0
 LRD
 MOVB   250, SMB34
 LPP
 ATCH   INT1, 10
 中断2:
 Network 1 // 网络标题
 // 向传感器传送数据
 LD     SM0.0
 DTCH   10
 XMT    VB50, 0

 
 

最佳答案

1、
  回答问题前我说些无关的话
  a、我是在看到你问题后一边看帮助一边实验,我也希望你以后可以多按F1,自己实验得到的知识一般印象很深。
  b、从转换的结果和我查码表的结果来看,你的问题答案是914.0,
  你应该是忘了告诉大家,小数位是固定的2位,对不对?

  使用 STR 指令

  LD     SM0.0
  STR    VB299, 1, VD400 //VB299存放的是字符串的长度,本例为4

  如果还不清楚,请在转换/STR指令上按F1

 2、
 使用定时方式改变VB100开始发送数据区的内容,如果我猜的不错的话应该是让VB103为1 或者 2 ,接收的时候通过通讯协议来判断是哪个设备返回的,做相应的处理。

提问者对于答案的评价:
谢谢您的帮助,让我受益匪浅,谢谢。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

  • PLC 如何用485连接驱动器控制步进电机

    驱动器:艾思控 AQMD6010BLS  电缆:USB/PPI  通信方式:Modbus请问驱动器的485接口应该接在PLC的PO…

    SIMATIC S7-200 2021年7月5日
  • S7200在TD400中显示文字

    请问我把"Stop"用STR_CPY指令放到VB20之后,请问如何在TD400上把这个字符串显示出来啊? 问题补充:完整的STOP字样不是应该在VB20&nbs…

    SIMATIC S7-200 2021年7月5日
  • S7200高数计数

    各位大侠你们好,我现有一个有关高数计数的问题请教一下,现在我有一把增量式的光栅尺,采用高数计数4,模式10,数据可以拿到,现在我想用外部复位按钮I0.5来复位,清除当前的数据,请问…

    SIMATIC S7-200 2020年10月31日
  • 急求关于226和光电开关接法

    初学者求教,急::: 问题一:226继电器型plc的L+是24V输出,那它旁边的M是什么?接地点还是与24V相应的0V?如果是接地点,那0V在哪? 问题二:现有…

    SIMATIC S7-200 2021年7月5日
  • 用S7200怎么控制步进电机

    5相10拍 问题补充:有没有可借鉴的程序 谢谢 最佳答案 用S7200怎么控制步进电机?答:请参考《S7-200 PLC 脉冲输出MAP 库…

    SIMATIC S7-200 2020年10月31日
  • 安完S7-300程序在安装S7-200程序,无法在PC/PG接口里添加PC/PPI驱动

    安完S7-300程序在安装S7-200程序,无法在PC/PG接口里添加PC/PPI驱动,导致无办法用S7-200通过USB-PPI电缆下载程序。S7-200程序是SP6的。图片如下…

    2017年11月1日
  • 200plc通讯与系统

    为何电脑重新做系统之后安装200软件可以进行通讯过几天就不能通讯,一直显示未找到访问点?一般的故障都排查过都没用,难道还要重新装系统? 最佳答案 中间是否清理过系统文件?STEP&…

    SIMATIC S7-200 2021年7月5日
  • 负载率111

    我们工厂里面说讨论负载变化都参考的是扭矩,即是扭矩变大,我们说负荷大了,扭矩小了,负荷小了。  1;负载到底针对是电机输出扭矩还是输出功率?因为看到有定义说是输…

    2021年7月5日
  • 200高速计数器和中断事件

    学习高速计数器,遇到问题,看到例子如下:某产品包装生产线用高速计数器对产品进行累计和包装,每检测1000个产品时,自动启动包装机进行包装程序ob1LD  &nb…

    SIMATIC S7-200 2017年11月26日
  • 求Pid资料

    关于PID调节的资料,简单易懂,谢谢 最佳答案 S7-200 的PID 控制文档大全:1、《如何使用S7-200CPU 的PID 控制》:下…

    SIMATIC S7-200 2020年10月31日

发表回复

登录后才能评论