回复:CP341 modbus 通信时当现场设备突然断电时,程序里面应该如何做刷新?

用以致学

  • 帖子

    112
  • 精华

    0
  • 被关注

    8

论坛等级:侠客

注册时间:2011-09-05

普通 普通 如何晋级?

发布于 2015-07-07 09:57:00

2楼

现场有两套CP341,做了两个刷新的程序,第一个如下
L #Slave //站地址
L 1
-I
ITD
SLD 3
LAR1
OPN "DB31"
OPN DI 3
A #S_Error
JCN a2b0
L DBB [AR1,P#0.0]
L 1
+I
T DBB [AR1,P#0.0]
a2b0: CLR
A #S_Done
JCN a3b0
L 0
T DBB [AR1,P#0.0]
a3b0: NOP 0
L DBB [AR1,P#0.0]
L #MaxErrts
>I
JCN a4b0
L #Slave
L 1
-I
L 10
*I
ITD
SLD 3
LAR1
L 0
T DIW [AR1,P#0.0]
T DIW [AR1,P#2.0]
T DIB [AR1,P#4.0]
T DIW [AR1,P#6.0]
a4b0: NOP 0
我现在是这样做的,通信错误大于设定的最大次数就把当前设备的运行状态和电流数据清0,让设备显示为停止状态。
第二个如下:
A(
L #Bus_address
L MB 1
<>I
)
A(
L MB 1
L "Recv DB".NULL.Address
<>I
)
JCN _002
L #DB_NO
T LW 14
OPN DB [LW 14]
L MB 1
DEC 1
L 18
*D
L 1
+D
SLD 3
LAR1
L 0
T DBB [AR1,P#2.0]
T DBW [AR1,P#3.0]
T DBW [AR1,P#5.0]
T DBB [AR1,P#7.0]
T DBW [AR1,P#9.0]
T DBW [AR1,P#11.0]
T DBW [AR1,P#13.0]
_002: NOP 0
L #Bus_address
T MB 1
这个程序是发送的站地址和接收到的站地址做对比,如果不相同就把相应的设备数据清0.
第一个程序开始时设的最大错误次数是3,结果现场画面经常出现一会显示运行一会显示停止,后来把错误次数改成了50次,第二个目前还没出现问题,这两个程序,应该如何进一步改进?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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