【分享】S7-200以Modbus RTU方式与Citect交互

已锁定

gexiuming

  • 帖子

    34
  • 精华

    3
  • 被关注

    25

论坛等级:侠客

注册时间:2010-08-17

普通 普通 如何晋级?

【分享】S7-200以Modbus RTU方式与Citect交互

4810

8

2016-05-28 23:32:57

star star star star

      S7-200 作为Modbus RTU从站,Citect作为Modbus主站。


      S7-200 Q区范围为Q0.0-Q15.7,总计128Bit;I区范I0.0-I15.7,总计128Bit;AI区范围为AIW0-AIW62,总计32Word;V区范围VB0-VB2047(CPU221/CPU222)、VB0-VB5119(CPU224/CPU226)、VB0-VB10239(CPU226XM)。S7-200各数据区进行Modbus通讯的数量在Microwin v4.0中进行组态设置,具体见《Micro 'n Powerv1.3》详细说明,或者Microwin v4.0的帮助。


      S7-200 Q区数据对应Modbus功能码1,modbus存储区为00001-00128(Q0.0-Q15.7),数据可读可写,进行位读写;I区数据对应Modbus功能码2,modbus存储区为10001-10128(I0.0-I15.7),数据为只读,读取位数据;AI区数据对应Modbus功能码4,modbus存储区为30001-30032(AIW0-AIW32),数据为只读,读取Word数据;V区数据对应Modbus功能码3,modbus存储区为40001-4XXXX,数据可读可写,可以进行位、字、双字操作,4区每个地址对应一个字。


      Citect中驱动选择Modbus3。Citect中Modbus存储区00000-000127对应S7-200的Q0.0-Q15.7(000000-Q0.0、000001-Q0.1、000002-Q0.2、000003-Q0.3、000004-Q0.4、000005-Q0.5、000006-Q0.6、000007-Q0.7、000008-Q1.0依此类推),Citect中数据类型为digital,可读可写;Modbus存储区100000-100127对应S7-200的I0.0-I15.7(100000-I0.0、100001-I0.1、100002-I0.2、100003-I0.3、100004-I0.4、100005-I0.5、100006-I0.6、100007-I0.7、100008-I1.0依此类推),Citect中数据类型为digital,只读;Modbus存储区300000-300031对应AIW0-AIW62(300000-AIW0、300001-AIW2、300002-AIW4、300003-AIW6依此类推),数据类型支持INT/UNIT / LONG / STRING / REAL,只读。


       Citect中Modbus存储区400000-4XXXXX对应S7-200 V区地址,可以进行位操作、字操作、双字操作。位操作数据类型为digital,可读写;字操作数据类型为INT/UNIT/LONG/STRING/REAL,可读写;双字操作数据类型为LONG/STRING/REAL,可读写。综述Citect作为上位机,经Modbus RTU方式对应S7-200进行读写操作,0存储、1存储区、3存储区分别对应S7-200硬件IO通道的Q通道、I通道、AI通道;如此S7-200PLC逻辑中的非IO通道数据需要在V区对应Ciect Modbus 4存储区进行各类型数据的交互,如bit对应digital、WORD对应INT/UNIT、DW对应real。


        Citect中Real型数据为DW,用于读取PLC中的Float数据。在S7-200中VD0按字分解为VW2 VW0,按字节分解为VB3 VB2 VB1 VB0。在Citect modbus 中VD0对应400000和400001两个地址,400000对应VW2 400001对应VW0;即Citect中低地址字对应PLC中高地址字,Citect中搞地址字对应PLC中低地址字,高低字互换。对于字来说也一样,Citect中高地址对应PLC中低字节,Citect中低地址对应PLC高字节,即字的高低字节互换;例如400000对应PLC的VW0,VW0在PLC中字节顺序为VB1 VB0,VW0对应Citect中地址400000的字节顺序为VB0VB1。综述PLC中FLoat数据为双字,字节顺序为3210,对应Citect的modbus地址中字节顺序为0123。为了在上位citect中将REAL数据显示值和PLC中FLOAT数据一致,需要将citect modbus参数“FloatMode”设置为1 - Byte order = 3 2 1 0(默认为0 - Byte order = 1 0 3 2)。


       S7-200组态中FLOAT数据与citect交互时,需要PLC V区与citect modbus 4区进行交互。即模拟量中间点在PLC中需要在V区进行处理。在citect中对应数据类型为REAL。PLC中VD0对应citect中地址为400000(400000+400001),VD4对应citect中地址为400002(400002+400003),依此类推。


     citect和PLC之间,Citect 4区对应PLC V区,位数据的处理。如果需要在citect 4区和PLC V区之间进行位数据读写操作,需要设置citect参数“InitType”=20(for extended registers access),默认为2;参数“FileNumber”=65535,默认为0;不然无法实现位数据的交互。除了PLC硬件IO通道外的中间量位数据有赖于此,中间数字量数据是项目实施组态编程中无法避免的。


       在citect Modbus参数“RegisterBitReverse”(默认为1)=1时,Bit 0= LSB, Bit 15 = MSB。因为citect中modbus 地址字的字节对应PLC中为高低字节互换。以VW0为例,PLC中为VB1VB0,citect中为VB0VB1,在参数“RegisterBitReverse”(默认为1)=1时,400000.15对应V0.7,400000.8对应V0.0,400000.7对应V1.7,400000.0对应V1.0。Citect中标签变量定义:例如操作PLC V0.0地址,Citect中数据类型为digital,地址为400000.8。其它位数据交互设置依此类推。

S7-200与Citect间Modbus RTU字节关系.xlsx


         在Citect modbus 4区地址和PLC V区地址的对应关系直观的见附件《S7-200与Citect间Modbus RTU字节关系》。


         以上为个人首次用citect 经Modbus RTU方式与S7-200PLC进行数据读写的经验总结。Citect Modbus 驱动帮助中的说明不完全正确。在generic device(通用设备)数据类型中MOdbus 4区地址没有列出支持digital数据类型。说明中扩展存储区6区地址支持digital,但是按照说明操作6区地址在citect标签变量中设置后,编译都不正确。打施耐德的热线电话,支持工程师给出的答案也是4区地址不支持位数据操作,这有悖常理。经过个人反复尝试,总结出以上结论,供各位同志、朋友参考。对于不足之处,请所有的朋友不吝赐教,给予补充指正。互相学习、互相交流、不断进步!



【分享】S7-200以Modbus RTU方式与Citect交互 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33778条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。