在S7 200中我定义了配方0,相对应的分配150个配方数据;
在一子程序Write中根据LD0的输入将不同的工艺参数写入不同的配方
下面的程序Network有150个,至于LD0的输入是根据不同的产品工艺型号输入的,数字量DINT类型
编译能全部通过,可是一下载就出现:编译91非致命错误,Network95 行3 出现错误,如果我把Network95到Network149全删掉,再下载就没有问题
说明的是Network1-------NetWork94跟下面的程序完全一致,只是LD输入值不同;
LD SM0.0
AD= #I_IN:LD0, 35352
EU
CALL RCP0_WRITE:SBR19, DEF0_RCP90:31, VB298
与Write对应的还有Read子程序
有150个Networks
LD SM0.0
AD= #I_IN:LD0, 35352
EU
CALL RCP0_READ:SBR18, DEF0_RCP3:118, VB295
编程电缆用的是USB/PPI非西门子原装电缆
编程软件用的MircroWin 4.0 SP6 语言设置为中文 XP操作系统
程序全部编译为11.2K大小,数据块10K 存储卡64K,存储卡每个配方78字节
150个配方11.7K数据远小于64K 配方空间应该没问题的
百思不得其解
问题补充:
S7 226CN
最佳答案
你可以做如下尝试:
1. 将你的150个Write子程序分成3个
WriteA:原Write的1----50 Network
WriteB:原Write的51----100 Network
WriteC:原Write的101----150 Network
调用的时候一起调用
只是一种调试思路
2.由于S7 200 系列 EU 与ED 每种指令在程序中不能超过256次
你的EU指令是不是超过256次了?
超过的部分 用
NOT
ED
指令来代替来试试
提问者对于答案的评价:
今天经过测试,将Write子程序中的每个NETWORK
LD SM0.0
AD= #I_IN:LD0, 121
EU
CALL RCP0_WRITE:SBR19, DEF0_RCP0:150, VB298
每个NETWORK中都需要占用一个EU指令,这样Read子程序150个NETWORK 就占用了150个EU,Write子程序又占用了150个EU指令,而S7 200系列PLC EU/ED指令每种只能使用少于256个,故下载出现错误,我试验中将占用15个EU指令进行变换,指令列如下:
LD SM0.0
EU
LPS
AD= #I_IN:LD0, 30203
CALL RCP0_WRITE:SBR19, DEF0_RCP60:90, VB298
LRD
AD= #I_IN:LD0, 30251
CALL RCP0_WRITE:SBR19, DEF0_RCP61:89, VB298
LRD
AD= #I_IN:LD0, 30252
CALL RCP0_WRITE:SBR19, DEF0_RCP62:88, VB298
AD= #I_IN:LD0, 35101
LRD
CALL RCP0_WRITE:SBR19, DEF0_RCP73:77, VB298
LPP
AD= #I_IN:LD0, 35102
CALL RCP0_WRITE:SBR19, DEF0_RCP74:76, VB298
经过变换指令格式后,细数EU指令,整个程序EU指令为217个,下载至PLC无出现错误,程序现在运行正常
大家回答都很好,只是 S7 200 / Net 对我的调试思路改变有很大影响 希望大家别有意见
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc349695.html