大家帮忙看看程序哪里有问题?

已锁定

妍妍

  • 帖子

    149
  • 精华

    0
  • 被关注

    3

论坛等级:游士

注册时间:2009-07-29

普通 普通 如何晋级?

大家帮忙看看程序哪里有问题?

468

6

2009-09-14 08:45:05

在用314cpu+cp341模块做与电量变送器的串行通讯时,编程遇到了问题,自己在这方面基础太差找不出来问题所在,只好求教大家了。程序如下:
OB35 段1 将M0.0置位,得到上升沿,触发发送功能
A M 0.1
S M 0.0
段2 将发送指令放在DB1.DBB0-DB1.DBB4里边,字节存放
A M 0.1
= L 20.0
A L 20.0
JNB _001
L B#16#23
T DB1.DBB 0
_001: NOP 0
A L 20.0
JNB _002
L B#16#30
T DB1.DBB 1
_002: NOP 0
A L 20.0
JNB _003
L B#16#33
T DB1.DBB 2
_003: NOP 0
A L 20.0
JNB _004
L B#16#41
T DB1.DBB 3
_004: NOP 0
A L 20.0
JNB _005
L B#16#D
T DB1.DBB 4
_005: NOP 0
段3 调用FB108,发送指令,M0.2判断是否发送完成,M0.3显示是否有错误
A M 0.0
= L 20.0
BLD 103
CALL "P_SND_RK_OLD" , DB8
SF :=
REQ :=L20.0
R :=
LADDR :=256
DB_NO :=1
DBB_NO :=0
LEN :=5
R_CPU_NO:=
R_TYP :=
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :=M0.2
ERROR :=M0.3
STATUS :=
NOP 0

OB1 段1 将M0.0清零
A M 0.1
R M 0.0
段2 调用FB107,使CP341始终接收
A M 0.1
= L 20.0
BLD 103
CALL "P_RCV_RK_OLD" , DB7
EN_R :=L20.0
R :=
LADDR :=256
DB_NO :=10
DBB_NO :=0
L_TYP :=
L_NO :=
L_OFFSET:=
L_CF_BYT:=
L_CF_BIT:=
NDR :=
ERROR :=
LEN :=MW2
STATUS :=
NOP 0
JNB _001
L MW 2
T MW 4
_001: NOP 0


程序如上,OB35的循环调用时间设置的1s,程序运行时,将M0.1强制为1,用变量表监视时,M0.0偶尔会从0-1,大部分时间为0,M0.2一直为0,说明一直都没有发送完成,然后我就再OB35中加了如下一段程序
AN M 0.2
JC SEND
想说只要没发送结束,一直循环发送(SEND在OB35段3处),可是结果导致cpu停机了,是因为调用周期1s短于OB35的运行时间,可是不知道为什么会这样?指令发送完后不就结束OB35了吗?还有我编写的程序哪儿出问题了?为何实现不了每隔1s发送指令并接收变送器传回来的数据?看在发这么多字的诚意上,希望大家帮忙解答一下疑惑吧!
大家帮忙看看程序哪里有问题? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54625条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。