PCS与ABB的数据交换.pptx
1PM3线控制系统间硬件通讯方式及数据交换协议DCS及传动采用ABB公司的800XA系统;胶料制备系统为BVG公司提供,硬件为S7-300系统,软件为Step7+Wincc系统;MCS系统是Voith公司提供的,使用的是西门子的PCS7系统;DCS、传动系统因为同一控制平台,各控制器间通讯通过以太网通讯交换数据;MCS系统与ABB DCS、ABB 传动以及BVG系统间均采用DP Couple进行数据交换,协议商定采用WORD(16位无符号整数)形式进行传送数据。为方便分析控制系统间数据交换,更好地维护控制系统,特编写本课件。第1页/共28页2数据的位与类型一个自然数,我们都以左高右低的原则来识别。如果只有一位,自然不存在高低位之说,但字节、字、双字等数据类型,则需要区分高低位。第2页/共28页3数据的位与类型一个自然数,我们都以左高右低的原则来识别。如果只有一位,自然不存在高低位之说,但字节、字、双字等数据类型,则需要区分高低位。从上述示例可以看出,同一个位(如位)在Byte、Word、Dword这三种不同数据类型中,分别处于第0、第8、第24位,发生了变化。第3页/共28页4WINCC与Step7的数据交换WINCC与Step7的数据交换,大部分是通过过DB数据块进行。在Step7编程中,我们常定义大量的Bool型变量,并集中存放到DB数据块中,用于同上位机的WINCC进行数据交换。如果WINCC中也照样定义变量,将需要定义大量的变量,特别是在传统的STEP7+wincc 编程环境下,WINCC中的变量都需要手动一个个定义,工作量也将变得很大,所以我们常一次性读、写8位、16位、32位DB块中的数据,以减少WINCC中的变量数,提高效率。因此,在WINCC中,我们需要读、写DB数据块中某一位的Bool变量值时,就变为读、写Byte、Word、DWord数据中的某一位了。如果对不同类型数据的“位”的区别没搞明白,往往就会发生定“位”错误。下面我们先以BVG辅料制备系统中施胶上料为例进行讲解。第4页/共28页5Step7中变量定义例:在WINCC操作界面上,当MD401在运行时,MD405泵应该不可操作的(按钮为灰色)。在STEP7中,MD405泵联锁状态变量存储在数据块中,当其为“1”时表示被联锁,即不可操作。WINCC中,创建了以双字变量“DB_Bit_CP1_DD8”变量对应DB135数据块中区域的所有32位数据。第5页/共28页6WINCC与Step7的数据交换bit12位第6页/共28页7WINCC与Step7的数据交换第7页/共28页8WINCC与Step7的数据交换在此例中,常见的错误有:3:忘记在西门子系统中,是从“0”起数(有些系统,如ABB系统是“1”起数),错误结果:bit 131:不知规则,直接在DB135数据块中,从开始数,错误结果数成:bit 192:仅知道有高低位交换,但规则未理解透,于是在DB135数据块中,从开始倒着数,错误结果:bit 11第8页/共28页9PCS7系统中Byte与Word互转1:Byte转换为Word由此例可以看出,“BY_W”这个CFC功能块输入管脚“Low”与“High”是指Word的低8位、高8位,对应上述转换图中的byte1(低)、byte0(高)第9页/共28页10PCS7系统中Byte与Word互转2:Word转换为Byte由此例可以看出,“W_BY”这个CFC功能块输出管脚“Low”与“High”仍然是指Word的低8位、高8位,对应转换图中的byte1(低)、byte0(高)第10页/共28页11ABB系统中转换功能块CONV介绍在PM3线使用的ABB 800XA系统的CBM软件中,没有不涉及数据类型的二、十六进制数互转功能块,通讯一般用CONV功能块替代。计算机规则:采用2的补码(Twos Complement)表示负数。“CONV_BI”是将BOOL数转换为32位有符号整数(DINT),最高位(第32位)是符号位,遵循计算机规则。“CONV_IB”则是将32位有符号整数(DINT)转换为BOOL数。输出结果:符号位“Sign”+输入值绝对值的转换结果。O32永远为0因此如果最高位为“1”转换DINT后就变为负数,而“CONV_IB”块转换后的BOOL结果就变了,结论:“CONV”转换功能用于控制逻辑的值转换通讯时,第32位必须为“0”,即不使用最高位。否则控制逻辑传递就会出错。下面我们看一下使用具体的例子:第11页/共28页ABB系统中转换功能块CONV介绍I32为“0”时,各位数均能正确传递C21:Bool转换为有符号整数第12页/共28页ABB系统中转换功能块CONV介绍负数转换结果:以符号+正数表示Sign1,表示为负数C21:Bool转换为有符号整数I32为“1”时,输入数为负数,2的补码表示形式OUT的BooL结果与正数值一致I32=1,I、O结果不一致第13页/共28页ABB系统中转换功能块CONV介绍输入“Sign“=1,表示转换的整数结果取反。输出“Sign“=1,表示负数。负数转换结果:以符号+正数表示IB转换结果:以符号+正数表示,故 I、O对应各位仍正确第14页/共28页ABB系统中转换功能块CONV介绍 11C22,表示是BCD码转换,4位Bool对应一位整数(0-9)1 8 4 1 0 1 1BCD码对应0-9,任一位转换结果超过9,则整体转换结果0 4 4 6 24位Bool组成一位BCD码,对应一位整数(0-9)第15页/共28页ABB系统中转换功能块CONV介绍C23,模块注释“1 of N”,用于检测第一个为“1”的输入端位号,但如果输入端有多个“1”,则报错。输入端有多个“1”触发Error结论:只有当C21,直接转换,且最高位I32=0的情况下,CONV转换功能块才能用于控制系统间通讯,传递控制逻辑、联锁信息。第16页/共28页ABB系统中转换功能块CONV介绍硬件定义使用“DP DP Coupler”:通道为32个WORD,即每个IW为16位IO定义为“DintIO”,是32位经测试,“DintIO”的低16位对应IW1.使用“CONV_BI”转换块对“DintIO”变量赋值时,只能使用低16位,即个“DintIO”变量只能传递16位BOOL值结论:ABB系统各控制器间使用“CONV”块通讯,每个DINT变量最多只能使用31位数据1.ABB系统使用“CONV”块传递与其他系统通过 DP DP Coupler通讯,每个DintIO变量可传递16位数据。第17页/共28页18ABB系统中转换功能块CONV介绍1:Bool转换为DINT由此例可以看出,在ABB系统中,O1O32位是从低位到高位,1-8对应转换表中的Byte3,而9-16对应转移表中的Byte2,17-24对应byte1,25-32对应Byte0第18页/共28页19ABB系统中Bool与Word互转2:DINT转换为Bool由此例可以看出,132位是从低位到高位,1-8对应转换表中的Byte3,而9-16对应转移表中的Byte2,17-24对应byte1,25-32对应Byte0第19页/共28页20MCS系统与ABB、BVG的数据交换MCS系统(PCS7)与ABB DCS、ABB 传动以及BVG系统间均采用DP Couple进行数据交换,协议商定采用WORD(16位无符号整数)形式进行传送数据。PCS7与BVG的数据交换:BVG系统将交换数据存在DB数据块内,所以在制定双方通讯表时,是按DB块风格按位定义的,所以在采用WORD通讯时,就存在高、低位交换的问题。PCS7与ABB系统间数据交换:在制定双方通讯表时,是按照WORD规则进行定义,原本不必再考虑高、低位交换。但由于当初VOITH编程时在PCS7侧强行进行了高低位交换,导致ABB侧在接收、发送数据时也必须进行高低位交换。即通讯表中的“”实际是“W1.7”第20页/共28页PCS7通讯程序解读通讯程序解读在PCS7接收程序中,在通讯表中定义为低位的,实际是通过高位传递,人为做了高低位交换。导致对方系统发送程序不得不也做高低位交换。第21页/共28页PCS7通讯程序解读通讯程序解读在PCS7送程序中,在通讯表中定义为低位的,实际是通过高位送,人为做了高低位交换。导致对方系统接收时也不得不做高低位交换。第22页/共28页PCS7ABB举例举例“PM=DCS”通讯表中“2_10:转移真空条件”按定义应该是属Word_2的bit10即高位字节的bit2,但实际上PCS7侧是在低位字节的bit2接收,存在高低位交换第23页/共28页PCS7ABB举例举例“PM DCS”通讯表中“1_00:4组缸断纸检测结果”按定义应该是属Word_1的bit0即低位字节的bit0,但实际上PCS7侧是在高位字节的bit0发送,存在高低位交换第25页/共28页PCS7ABB举例举例“PM=DCS”通讯表中“1_00:4组缸断纸检测结果”,对应A“PM=DCS”通讯表中“1_00:4组缸断纸检测结果”按定义应该是属Word_1的bit0即低位字节的bit0,ABB系统中应该是第1位(O1),但实际上因PCS7高低位交换,必须从第9位(O9)接收。由于现系统已正常运行,如果要做到规范,不仅需修改通讯表,还涉及PCS7、ABB DCS、ABB 传动的程序大量注释,且各系统中相关变量命名也与通讯表位置相关,故只在程序相关位置加以注释提醒。第26页/共28页27谢谢大家!以人为本 追求卓越 和谐共赢第27页/共28页感谢您的观看!第28页/共28页