看官网上的视频教学,S7 1200的MODBUS与S7通讯定义读写数据区的时候总是用数组,然后用指针引用,能不能不用数组,直接在数据块里定义不同类型的变量,然后在通讯指令里用指针引用啊?如:P#DB8.DBX20.0 WORD 10等,还有结构类型STRUCT,S7通讯上的PUT与GET指令在软件帮助里说“传送数据结构(例如 Struct)时,参数 ADDR_i 处必须使用数据类型 CHAR“不知道什么意思
最佳答案
和数据类型没有关系,主要是DB定义的长度够用就行;
如:P#DB1.DBX0.0 bool 800,则DB块里定义的数据长度有100个字节就可以,这100个字节可以是800个bool,可以是50个INT,可以是25个DINT或REAL;
“传送数据结构(例如 Struct、array)时,参数 ADDR_i 处必须使用数据类型 CHAR,byte,word或Dword“,我这么理解的,就是当DB里定义的数据类型是Struct、array时(假设为长度100字节的数组),则ADDR_i 这里需要填写成例如,P#DB1.DBX0.0 CHAR 100 或 P#DB1.DBX0.0 byte 100或 P#DB1.DBX0.0 word 50 或P#DB1.DBX0.0 Dword 25
提问者对于答案的评价:
根据你所说的我做了S7和MODBUS通讯的实验,和你说的一样,谢谢!
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc198049.html