应该是PLC上的PROG-E指示灯,这个是程序错误指示灯。
忘记设定定时器或者计数器的常数,梯形图错误,电池电压异常下降,或者由于异常噪音,有导电性异物混入等导致程序内容发生班花,此时该PROG-E闪烁,
在这种情况下,请再次检查程序,检查有无导电性异物混入,有无严重的噪音源,电池电压的显示等。
出错是,在特殊数据寄存器D8004中会写入出错代码,根据出错代码对应的实际错误内容进行改正。
望采纳。。。。。。
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 SM01
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里运行的数据不是在数据块里看的,是在状态图里看的。
#include
void prt(int x ,int y, int z)
{
printf("%d%d%d\n",++x,++y,(z++));
printf("%d%d%d\n",++x,++y,(z++));
}
main()
{
int a=10, b=40, c=20;
prt(&a,&b,&c);
prt(&a,&b,&c);
getchar();
}
这样就变了,原因是:
你用的传址,++x 将该地址实际数据改变了 x=x+1,而 (z++) 只是改变地址增加,数值并不变,你两次调用都是C的地址,一样
atch_type表示查找方式的值(-或)。如果
定义高速计数器无外乎下面几个步骤:
1。建一个初始化程序,用SM01控制;
2。在初始化程序中,初始化高速计数器
21 设置控制寄存器(HSC0为SMB37),不同的计数器对应不同的DI点,HSC0为I00,HSC3为I01,HSC4为I02,HSC5为I03(222不支持HSC1和HSC2)
22 执行HDEF指令,你可以用模式0
23 置计数器初始值(HSC0为SMD38),如果从零启动就置零
24 置预置值(HSC0为SMD42),计数器计到这个值可以产生一个中断,一般利用这个中断调用相应的中断程序把当前值(SMD38)复零,否则计数器到头就不再计数了,当然你也可以置一个大点的值,在其他程序中清除当前值(SMD38),确保永远到不了头就可以了。
25 指定中断程序(ATCH),中断事件是12,程序号看你程序了
26 打开中断(ENI),这条指令没有的话,25是不起作用的
27 启动高速计数器(HSC),按前面的初始化,你就要启动HSC0,即N为0
3。程序中读取高速计数器的值,对于HSC0,HC0单元中的内容就是当前的计数值,这个单元只读不能写,你可以通过修改SMD38的内容改变当前的计数值。
以上就是关于PLC一ppOGE闪灯什么意思全部的内容,包括:PLC一ppOGE闪灯什么意思、怎么处理信捷rcv指令读出的数、求详细解释这个C程序 谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)