菲尼克斯plcnext库文件中文modbus tcp_第1页
菲尼克斯plcnext库文件中文modbus tcp_第2页
菲尼克斯plcnext库文件中文modbus tcp_第3页
菲尼克斯plcnext库文件中文modbus tcp_第4页
菲尼克斯plcnext库文件中文modbus tcp_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Modbus基本Modbus由一个专门的用户组织;具有详细协议描述的文档可从该组织的主页( 对ModbusRTU、ModbusASCII和ModbusTCP协议的区分取决于传输系统。Modbus对于MB_TCP_Server功能块,用于Modbus的寄存器对应于 Data数组的元素。每个word数组通过Modbus客户端从控制系统中。为了达到这个目的,我们可以使用上面提到的功能码。库版本/更改说1PCWorx6发 AXCF1PCWE7.2.1(建立于02/1.027167in/out,所以它可以根据需要在本地用户程序中读注意:根据所使用的控制系统,Modbus服务器在给定的时间内可以处理的功能数量是有限的。如果发生过载,服务器可能不会响应报文。在这种情况下,控制系统必须再次发送报文。一次只有一个Modbus客户端可以Modbus服务器。可读保持寄存器、写寄存器和读/写多个寄存器Modbus功能Data数组中的word元素。在调用Modbus功能时,要指定的数组索引和寄存器地址是相同的。当 数据。编号方案如下所示。当通过Modbus功能数据时,必须指定Modbus功能。当wDiagCode和wAddDiagCode的输出中,只有一个周设置为FALSE。连接到IP地址(IPv4地址),数据交换(器使用TCP服务器)。连同绑定到已创建套接字(TCP服务器所必需的)。TCP服务器为传服务器或客户端功能(设置了IS_SRV输入),输入具IS_SRV=TRUE(FB创建一个套接字连接,任何客户端IP地址都被接受。了服务器或客户端功能(IS_SRV输入),输连接,任何客户端IP端口都被接受。IS_SRV=FALSE(FB创建了一个客户端套接字IPPLC提供。默认值=当有写时,超时。在执行完写功能之后,必情况,就会报告超时错误。指定超时值T#0s来禁用这个功能。下面的变量用来为不同的数据定义一一个Modbus寄存器的地址为1000。需要FC4。请参阅wDiagCode和WORD数组,wDiagwAddDiaguiOffsetInputs(>uiOffsetCoils(>(>(>T0s16xxxxIP_CONNECT16xxxxIP_USEND错误。参输入参名种描上升沿:功能块被激活FALSE:功能块被禁用上升沿:错误消息被删除。功能块没有重新初始化自动确认错wDiagCode和wAddDiagCode的输出中,只有一个周Modbus服务器的IP地址。地址应该如下xxx.xxx.xxx.xxx502。FALSEModbus-TCP。:毫秒超时通信。Modbus服务器必须在指定的时间内值,则块的运行时间为2秒。输出参名种描FALSE:功能块没有激TRUE:功能块是激有关详细信息,请参阅wDiagCodewAddDiagCode诊码。请参阅诊断表附加诊码。请参阅诊附加诊断输入和输出参名种描诊描这个功能块未激这个功能块是激活一个参数发生错ModbusIP超时错16#xxxxIP_CONNECT错误。参考附16#xxxxIP_USEND错误。参考附录16#xxxxIP_URCV错误。参考附 结构包含了所使用的固件功能块的所有输入和输出:详细信息指的是附录“数据类这个功能块Modbus从站的数字输入图显示了字节数组中字节的分配给输出和内部位,在本例中,输116是:功能块调输入参名数据类描上升沿:功能块被激活。FALSE:功能块被禁用上升沿:错误消息被删除。功能块没有重新初始化110的值。表示块之间的连接,并且只MB_TCP_中分配一次。这个参数应该是静态的在两个任务之间等待时间ModbusRTU设备的寻址参数,它通过网关连第一个位/输出/寄存器的地址将ui要读的位的有效值范围:1-输出参名数据类描一个周期中的TRUE:新的数收到的字节信息,请参阅wDiagCode和wAddDiagCode诊码。请参考诊断表输入和输出参名数据类描N诊wDiagwAddDiag描这个功能块是激活这个功能块未激MB_TCP_块还没有准备好MT_ID无效。MT_ID110使用的MT_ID被分配了两次。几个误网络通讯协议错功数据地数据从站设备失确从站设备繁器奇偶网关路径不网关目标设备没有响这个功能块Modbus从站设备的数字输入数据是以字节数组(InputStatus参数)的形式的,这个数组的第一个字节中的第一位对应于要的第一个输入。下图显示了字节数组中位元的分配给本116的输入:Byte1(InputByte2(InputBit7654321076543210Bit87654321功能块调:阅wDiagCode和wAddDiagCode。 码。请参考诊断表附加 码。请参考诊断表名数据类描wDiagwAddDiag使用的iMT_ID被分配了两次。几个这个功能块Modbus从站设备的数字输入数据是以字节数组(InputStatus参数)的形式的,这个数组的第一个字节中的第一位对应于要的第一个输入。下图显示了字节数组中位元的分配给本116的输入:Byte1(InputByte2(InputBit7654321076543210Bit87654321:并且只能在MB_TCP_中分配ui阅wDiagCode和wAddDiagCode。诊码。请参考诊断表附加诊码。请参考诊断表名数据类描wDiagwAddDiag使用的iMT_ID被分配了两次。几个9.29.2: ui参阅wDiagCode和wAddDiagCode。wDiagwAddDiag使用的iMT_ID被分配了两次。几个ModbusiMT_ID,此情况下只有第一个被调用的功能块运上升沿:错误消息被删除。功能块并不并且只能在MB_TCP_中分配一参阅wDiagCodewAddDiagCode。 wDiagwAddDiag110使用的iMT_ID被分配了两次。几个上升沿:110并且只能在MB_TCP_中分配一wDiagwAddDiag该功能块写多个位到Modbus从站,数据是以字节数组(InputStatus参数)的形式的,这个数组的第一个字节中的第一位对应于要的第一个输入。下图显示了字节数组中位元的分配给本例1到16的输入:Byte1(InputByte2(InputBit7654321076543210Bit87654321:uiwDiagCode和wAddDiagCode。 wDiagwAddDiag使用的iMT_ID被分配了两次。几个13.1:uiwDiagwAddDiag使用的iMT_ID被分配了两次。几个无如果有错误,该变量将显示当前wDiagCode无启动指设功能块连监程序建CASEiState0:(*WaitforstartofExample*)IFxStart=TRUEiState:=10;END_IF;10:(*Initializationof andFC3functionblock*)(* udtCli.xActivate:=FALSE;udtCli.xAutoAck:=FALSE;udtCli.strServer_IP:='10.250.65.20';udtCli.iPort:=udtCli.xUDP_Mode:=FALSE;udtCli.tTimeout:=TIME#10s;(*FC3functionblock*)udtMB_TCP_FC3.xActivate:=FALSE;udtMB_TCP_FC3.iMT_ID:=1;iState:=100:(*Start functionblockfirstandwaitforxActive*)udtCli.xActivate:=TRUE;IF(udtCli.xActive=TRUE)THENiState:=1000;(*Readmin.numberofregisters tyOfRegisters:=UINT#1;(*udtFC3.arrRegisterValues=ARRAY[1..125]OFWORD*)udtMB_TCP_FC3.wStartRegister:=(*WaitforxActiveofFC3functionblockIF(udtMB_TCP_FC3.xActive=TRUE) 1010;END_IF;1010:(*Checkvalues(*Modbusserverhastodeliverthese*)IF(udtMB_TCP_FC3.xError=AND(udtMB_TCP_FC3.arrRegisterValue[1]=WORD#16#FEDC) 2000;END_IF;(*Readmax.numberofregisters2000:(*DeactivationofFC3functionblockbeforereadagain*)udtMB_TCP_FC3.xActivate:=FALSE;(*WaitforxActive=FALSEafterdeactivationIF(udtMB_TCP_FC3.xActive=FALSE) 2010;END_IF; tyOfRegisters:=UINT#125;(*udtFC3.arrRegisterValues=ARRAY[1..125]OFWORDudtMB_TCP_FC3.wStartRegister:=WORD#0;(*WaitforxActive=TRUE*) (udtMB_TCP_FC3.xError=FALSE)THENiState:=2020;2020:(*Checkvalues,onlyifxOK=TRUEvaluesarereadcorrectly*)(*Modbusserverhastodeliverthesevalues!*)xOK:=IF(udtMB_TCP_FC3.xError=AND(udtMB_TCP_FC3.arrRegisterValue[1]=WORD#16#FEDC)FORiIndex:=2TO125BY1iRef:=iIndex-wTmp:=udtMB_TCP_FC3.arrRegisterValue[iIndex];iTmp:=WORD_TO_INT(wTmp);IF(iTmp<>iRef)THENxOK:=FALSE;IFxOK 3000;END_IF;3000:(*Finish(*DeactivateandFC3functionblock*)udtCli.xActivate:=FALSE;udtMB_TCP_FC3.xActivate:=FALSE;IFudtMB_TCP_FC3.xActive=ANDudtCli.xActive=)IFxStart=FALSEiState:=ERROR=FALSE服务器了客户机,因为IP地址和端UDP_RECEIVEandUDP_SENDand(*BytearraysMB_TCP_ARR_B_1_250:ARRAY[1..260]OF(*WordarraysMB_TCP_ARR_W_1_125:ARRAY[1..125]OFMB_TCP_ARR_W_0_7167:ARRAY[0..7167]OFMB_TCP_UDT_WINSOCK: :TransactionID:WORD;ProtocolID :WORD; :WORD;arrData:MBTCPARRB1250;MB_TCP_UDT_READ_WRITE: :BOOL;(*FALSE=Read,TRUE=Write :BOOL;(*TRUE:Readdata :INT;(*Modbusfunctioncode*)uiUnitIdentifier:BYTE;(*UnitIdentifier*)(*ReadReadStartAddress:WORD;(*Addressofthefirstregister*) :WORD;(*Numberofregisters*) :MBTCPARRB1250;(*Readbuffer*) :BYTE;(*Numberofreceivedbytes*) (*Write*)WriteStartAddress:WORD;(*Addressoffirstregister :WORD;(*Numberofregisters*) :MBTCPARRB1250;(*Writebuffer*) :BOOL;(*TRUE(foronecycle):Writeisfinished*) :BOOL;(*TRUE:Error :WORD;(*Diagcode*) :WORD;(*Additionaldigcode*)(*Internal*) :BOOL;(*Usedbyscheduler->TRUE=Readdata :Time;(*Timebetweentworeadoperationsinms*)MB_TCP_ARR_READ_WRITE:ARRAY[1..10]OFMB_TCP_UDT_READ_WRITE;MUNICATION:STRUCTReady:BOOL;xError:BOOL;wDiagCode:WORD;ReadWriteGroups:MBTCPARRREADWRITE;MB_TCP_UDT_MBS_REQUEST:DATACNT: WORD;(*NotpartofModbusprotocol*)TransactionID:WORD; Unit Reference:WordCount: MBTCPARRB1250;MB_TCP_UDT_MBS_RESPONSE:DATACNT: WORD;(*NotpartofModbusprotocol*)TransactionID:WORD; Unit MBTCPARRB1250;(*BuffersforrequestsMB_TCP_ARR_MBS_BUFFER:ARRAY[0..10]OF(*I/OparameteroffirmwareiFunctionblocksasstruct(*InputsandoutputsofTCP_SOCKET*)MB_TCP_UDT_TCP_SOCKET:STRUCT(*Inputs :xISSRV :BOOL;strBINDIP:uiBINDPort:UINT;strDESTIP:uiDESTPort:UINT;(*Outputs*) : : : :WORD;uiUSEDPort:(*InputsandoutputsofTCP_SENDMB_TCP_UDT_TCP_SEND:(*Inputs udiDataCNT:UDINT;(*Outputs*) : : : (*InputsandoutputsofTCP_RECEIVE STRUCT(*Inputs :T:(*Outputs : : :WORD;strSourceIP:uiSource_Port:T:(*InputsandoutputsofTCP_SOCKETMB_TCP_UDT_UDP_SOCKET:(*Inputs*) :BOOL;strBINDIP:STRING;uiBINDPort:UINT;(*Outputs*) : : : :WORD;uiUSEDPort:(*InputsandoutputsofTCP_SENDMB_TCP_UDT_UDP_SEND

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论