怎么处理信捷rcv指令读出的数

核心提示1 使用初始化RCV时是不是要求都是16进制的数? 不是的,用十六进制还是二进制还是十进制都是为了阅读的方便。 比如: MOVB 16#B0, SMB87 = MOVB 176, SMB87 2 出现了“接收超时"错误,应如何处理

1 使用初始化RCV时是不是要求都是16进制的数?

不是的,用十六进制还是二进制还是十进制都是为了阅读的方便。

比如: MOVB 16#B0, SMB87 = MOVB 176, SMB87

2 出现了“接收超时"错误,应如何处理

因为在串口软件里有接收超时时间的设定,串口将数据发送后,在设定的时间内收不到数据就会显示“接收超时"错误,

这说明PLC没有给电脑发数据。

3 PLC执行RCV前你要做两件事

第一件事是初始化通讯口,

MOVB 9, SMB30

第二件事是定义接收数据开始和结束的条件。

MOVB 16#B0, SMB87

允许接收

开始条件是空闲线时间 这个时间是SMW90

结束条件是收到结束字符 这个字符在SMW89里赋值

而你程序里没有对SMW89赋值,所以要加一句MOVB X, SMB89

4

LD SM0.1

MOVB 9, SMB30

MOVB 16#B0, SMB87

MOVW 5, SMW90 开始条件

MOVB 100, SMB94

ATCH INT_0:INT0, 23 端口0:接收信息完成

ATCH INT_2:INT2, 9 端口0:传输完成

ENI

RCV VB100, 0

INT0:

LDB= SMB86, 16#20

MOVB 10, SMB34

ATCH INT_1:INT1, 10

CRETI

NOT

RCV VB100, 0

若收到结束字符则延时10MS发送,没收到结束字符,继续执行接收。

5 在MOVW 5, SMW90 后 加一句MOVB X, SMB89

然后用串口软件发送数据,比如34 38 12 34 X(X是在SMB89里定义的)

然后在接收信息窗口就能看到你发的信息。

把CPU STOP后,在VB101 VB102 VB103能就能看到你发的数据。

在状态图里看,先输入地址,然后点工具栏上的状态表监控.

看PLC里运行的数据不是在数据块里看的,是在状态图里看的。

这个我有N种办法。

最精确的方法是接一个电流取样电阻,1欧姆足够了,然后在电阻两端采集电压,然后减法器,减去4mA所产生的电压,再经过同向(反向)放大器,你需要选取合适的放大倍数,如果用1欧姆的采样电阻的话,需要将信号放大250倍,然后输出。

还有一种方法就是通过三极管的电流放大,把电流的输出接在三极管的基极上,然后三极管射级加一个电流采样电阻,你可以直接用这个电阻上的电压输出也可以经过适当的放大再输出。

还有一种办法是用电流互感器,实际上就是初级阻抗一定的变压器。当输入电流变化的时候,由欧姆定律可知初级线圈上的电压也在变化,通过变压器的升压,可以得到你想要的0-5V,这个变压器制作稍微麻烦点。

以上是三种方法,个人推荐你用第一种,电路输出精度高,也不算复杂。

 
友情链接
鄂ICP备19019357号-22