通过OPC, wincc7.0和rslogix5000 通讯,连接已经建立,可以看到M,T和整个硬件的I/O模块,但wincc7.0如何直接读取CPU中的I/O点,如想看第一块输入模块第一位的状态?
问题补充:
就是OPC变量不知道如何连接CPU中模块的地址,好像新建的变量直接对应的一整个模块,但我想要的是模块的某一位的状态,如何转换?(WINCC和OPC在一个电脑上)
最佳答案
在WINCC 中添加OPC.CHN (OPC 通道),然后点击浏览,找到RSLINX 或者FTGate OPC server,你就可以看到 OPC 里组态的数据,把它们 添加到WINCC 中来就可以了。
参考 WINCC 通过RSLINX OPC 读取AB PLC 的数据的 参考文档吧。
http://wenku.baidu.com/link?url=6gFlWCTWSklvhBAJi3kbeu8uwP0qBJoFV6TuQX3j9BQtbguauVjsl6AKvbvhUZRnUNBxjVRfmeUUIz_LhXiijJwznSddW1ZjpXtoGHcJ8dK
RSLINX 的设置 见 附件
补充:SERVER 和CLIENT 在同一台电脑上一般不需要配置DCOM。
至于,就是OPC变量不知道如何连接CPU中模块的地址,好像新建的变量直接对应的一整个模块,但我想要的是模块的某一位的状态,如何转换?
这个问题,你应该去ROCKWELL 里去问了,你打开Controller Tags 新建变量A,B,C,D等BOOL类型 然后 采用RSLOGIX 的ALIAS FOR 功能 把 A这个名称和 Local:4:I.Data.0 等IO点连接起来。
这样你的OPC SERVER 就能浏览到A 也就是DI 模块的IO点信号。
然后,我记得 这些变量读取到WINCC 里后,会变成BYTE 还是INT型的。
这样你还需要在WINCC 中,新建内部变量BOOL型,然后在全局脚本里做C脚本,通过类似下面的语句SetTagBit("A1",GetTagWord("A")); A 是AB PLC 的IO点 在WINCC 里的外部变量名称,A1是WINCC 内部变量,也就是A 不为0时,A1就是1,反之为0。这样你就可以单独看到每个IO点状态的,同时也是个BOOL型。
图片说明:
提问者对于答案的评价:
谢谢大家的热心帮助,分数有限,照顾下新人,请资深的莫怪。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc201626.html