CPU314C2DP主站与从站200进行DP通讯时,希望将iw256开始的12个字节数据转化为DB2.DBx0.0开始的DB数据,将DB2.DBx14.0开始的15个字节数据写到piw256开始的地址中,其中调用了SFC14,和SFC15,程序如下:
AN M 0.0
= L 20.0
A L 20.0
JNB _001
CALL "DPRD_DAT"
LADDR :=W#16#100
RET_VAL:=MW100
RECORD :=P#DB2.DBX0.0 BYTE 12
_001: NOP 0
A L 20.0
JNB _002
CALL "DPWR_DAT"
LADDR :=W#16#100
RECORD :=P#DB2.DBX14.0 BYTE 15
RET_VAL:=MW102
_002: NOP 0
,注:已经建立了DB2数据块,并且在里面建立了足够多的变量。用上述程序调试的结果,SFC14的错误信息是32951,SFC15是32951;已经确认:piw256内都是有数据的,200和300通讯是正常的。
另外还有个问题,共享数据块是否支持DWord,共享数据块内有bool型、整型变量。
问题补充:
好的,非常感谢。但是我在共享数据块内建立变量输数据类型时,系统就出错误了,只能输bool型和int型
最佳答案
CPU 集成的DP口和EM277通讯不能用SFC14、SFC15来解包和打包,直接使用组态的IO就可以了
比如
L PIW256
T DB2.DBW0
L DB2.DBW14
T PQW256
共享数据块里当然可以支持DWORD
补充:
数据块里可以使用各种数据类型,出错可能是你输入问题或软件问题
提问者对于答案的评价:
谢谢,学习了!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc311784.html