求助: 关于200间PPI通讯指令NETR和NETW请教 点击:981 | 回复:5



yibiao14

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2008年10月28日
发表于:2011-02-07 15:04:11
楼主

程序如下:

LD SM0.1

MOVB 2, SMB30 // PPI主站模式

FILL +0, VW100, 10 // 清空接收缓冲区和发送缓冲区

LD V100.7 // 若网络读操作完成

MOVB VB107, QB0 // 将读取的3号站的IB0送给QB0

LDN SM0.1

AN V100.6 // 若NETR未被激活

AN V100.5 // 且没有错误

MOVB 3, VB101 // 送远程站的站地址

MOVD &IB0, VD102 // 送远程站的数据区指针值IB0

MOVB 1, VB106 // 送要读取的数据字节数

NETR VB100, 0 // 从端口0读3号站的IB0,缓冲区的起始地址为VB100

LDN SM0.1

AN V110.6 // 若NETW未被激活

AN V110.5 // 且没有错误

MOVB 3, NETW2_Status // 送远程站的站地址

MOVD &QB0, VD112 // 送远程站的数据区指针值QB0

MOVB 1, VB116 // 送要写入的数据字节数

MOVB IB0, VB117 // 将本机的IB0的值写入发送数据缓冲区的数据区

NETW VB110, 0 // 从端口0写3号站的QB0,缓冲区的起始地址为VB110


 


程序正确,但是当从站因某原因死机,而后恢复正常(从站),这时主站只能从从站读数据,而主站不能向从站写数据,因为V110.5置位报故障了即NETW指令无法执行,主站重启后才能恢复正常通讯。(当主站死机而后恢复正常时,通讯也马上恢复正常)
感觉这样不太好,请问如果在从站恢复后,主从站之间能马上重建通讯该怎么改程序





yibiao14

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2008年10月28日
发表于:2011-02-07 15:21:17
1楼

把NETR和NETW前的故障判断条件V100.5和V110.5删除后,虽然V110.5还是1但能正常写数据,这是为什么那?? NETR和NETW指令有别的什么说道吗??

yibiao14

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2008年10月28日
发表于:2011-02-09 16:10:28
2楼

怎么没人踩踩那!! 郁闷死了

 

老愚者

  • 精华:1帖
  • 求助:0帖
  • 帖子:9帖 | 2253回
  • 年度积分:0
  • 历史总积分:10007
  • 注册:2006年8月20日
发表于:2011-02-09 17:31:00
3楼

请将

AN V100.6 // 若NETR未被激活

AN V100.5 // 且没有错误

删除

在删除处添加

A  V100.7 

再试试看

老愚者

  • 精华:1帖
  • 求助:0帖
  • 帖子:9帖 | 2253回
  • 年度积分:0
  • 历史总积分:10007
  • 注册:2006年8月20日
发表于:2011-02-09 17:36:08
4楼

程序修改:

TITLE=程序注释
Network 1
// 网络注释
LD SM0.1

MOVB 2, SMB30 // PPI主站模式

FILL +0, VW100, 10 // 清空接收缓冲区和发送缓冲区




Network 2
LD V100.7 // 若网络读操作完成
MOVB VB107, QB0 // 将读取的3号站的IB0送给QB0
Network 3
LDN SM0.1

AN V100.6 // 若NETR未被激活

AN V100.5 // 且没有错误

MOVB 3, VB101 // 送远程站的站地址

MOVD &IB0, VD102 // 送远程站的数据区指针值IB0

MOVB 1, VB106 // 送要读取的数据字节数

NETR VB100, 0 // 从端口0读3号站的IB0,缓冲区的起始地址为VB100
Network 4

LDN SM0.1

A V100.7 // 若NETW未被激活

MOVB 3, VB111 // 且没有错误
// 送远程站的站地址

MOVD &QB0, VD112 // 送远程站的数据区指针值QB0

MOVB 1, VB116 // 送要写入的数据字节数

MOVB IB0, VB117 // 将本机的IB0的值写入发送数据缓冲区的数据区

NETW VB110, 0 // 从端口0写3号站的QB0,缓冲区的起始地址为VB110

yibiao14

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2008年10月28日
发表于:2011-03-04 16:37:47
5楼

感谢!!!!问题解决了


热门招聘
相关主题

官方公众号

智造工程师