0717-7821348
新闻中心

欢乐彩票官方版下载

您现在的位置: 首页 > 新闻中心 > 欢乐彩票官方版下载
S7-200的Modbus通讯很简单!
2019-06-01 22:29:32
  • 摘要:S7-200 PLC Modbus通讯概述
  • S7-200 PLC Modbus通讯指令
  • S7-200 PLC Modbus通讯常问问题


一、Modbus通讯概述

S7-200的Modbus通讯:S7-200只支撑Modbus RTU协议,不支撑Modbus ASCII协议;

Modbus是一种单主站的主/从通讯形式。一条Modbus网络上一起只能有一台主站,从站能够有若干个(如下图所示)。从站的地址规模为1-247;

  • 一个Modbus通讯的传输字符应包含一个开始位,8个数据位,1个或0个校验位(奇偶校验或无校验可挑选),以及一个中止位
  • 在S7-200 CPU通讯口上完结的是RS485半双工通讯,运用的是S7-200的自在口功用。

上图是一个典型的主站和从站的网络结构,关于Modbus主站而言能够对从站进行读或许写的操作,其间它所支撑的功用码(FC,Function Code)包含主站左边表格中所述功用,例如功用码为'01'时表明读取单个/多个线圈(DO)状况或功用码为'04'时表明读取单个/多个输入寄存器(AI)状况。而关于从站,咱们只需求把Modbus的规范地址和从站的地址对应联系建立好就能够了,S7-200的从站与Modbus规范的对应联系如从站右侧表格所示。表中左边是Modbus规范S7-200的Modbus通讯很简单!地址码,其间1-128对应于S7-200的Q0.0-Q15.7,10001-10128对应于S7-200的I0.0-I15.7,30001-30032对应于AIW0-AIW62,40001-4xxx对应的是S7-200的坚持寄存器(V区),它的规模是T-T+2*(xxxx-1),T表明的是V区的开始地址,这一点由Modbus从站的指令所决议的。

Modbus的主站指令叫做MBUS_MSG,经过这条指令能够将Modbus的规范报文发给从站,例如在上图比方傍边从站的第一个字节是03,表明的是从站的地址,FC功用码为03,表明的是读取单个/多个保存寄存器,Modbus规范地址是40001,长度是10。跟着功用码的不同,报文的格局会发作相应的改变,详细的报文格局需求去参看Modbus的通讯手册。

从站的指令时MBUS _SLAVE,在接到主站发给它的报文后会依据报文的需求回来报文,比方在上图比方中回来的格局是第一个字节为从站的地址,第二个为功用码,第三个是数据回来给主站,这样就完结了一次Modbus通讯的恳求与应对的进程。

二、Modbus库文件的装置和调用

  • 假如想要运用Modbus指令库,那么首要需求到因特网上或许向西门子的客服人员恳求名称为'Toolbox_V32-STEP 7-Micro WIN' 的指令库,将它解压而且装置到Micro WIN傍边就能够运用了,装置后会在Micro WIN的库文件傍边呈现上图符号的三个库,其间Port0和Port1都能够做Modbus Master,而Slave只需Port0口能够做。
  • 三、Modbus库文件的运用

运用办法很简单,翻开Modbus主站指令库会有相应的指令块呈现,直接把指令块拖拽到程序傍边进行调用就能够了。

  • 在调用Modbus库指令的时分,需求留意必定记住为Modbus库文件分配库存储区。详细的办法是右键单击库,然后挑选库存储区,在弹出来的对话框傍边能够挑选主张地址,主动分配一个程序里边不会用到的地址区间,也能够人为地手动填写开始地址,这个区间在程序傍边不能够和其他的数据区相冲突,不然Modbus功用将不正常。所谓的库存储区其实便是Modbus指令库能够正常作业所有必要的一部分布景数据,只需给它分配好区间S7-200的Modbus通讯很简单!并确保不与程序傍边其他的地址相冲突就能够了。
  • 四、Modbus从站指令

  • 从站指令一共有两条,第一条是从站的初始化指令(MBUS_INIT),另一条是MBUS_SLAVE从站指令,在Modbus从站的初始化指令傍边触及哪些内容呢?首要,第一个引脚Mode表明等于1的时分是发动Modbus,等于0的时分是封闭Modbus,Addr表明的是这个从站的从站地址,Baud表明波特率,Parity是奇偶校验,0是无校验,1是奇校验,2是偶校验,Delay是附加字符之间的推迟,MaxIQ表明的是最大I/Q地址(默许128),MaxAI表明的是最大AI长度(默许32),MaxHold表明的是最大的V存储区(VW),最要害的是HoldStart,表明的是V区开始地址(对应40001),在之前现已提到过S7-200作为从站的时分,它的V区地址对应于MS7-200的Modbus通讯很简单!odbus规范地址的开始地址是可更改的,那么就在这儿进行设定,在本例中假如HoldStart写的是VB0,那么40001对应的地址便是VW0,40002对应的地址是VW2,40003对应的地址是VW4,以此类推,每一个规范的Modbus地址码对应的是一个Word,以字为单位,相同假如这儿设的是VB100,那么40001对应的便是VW100,40002对应的是VW102,以此类推。这一条初始化指令只需求调用一次就能够了,所以在上图顶用的是SM0.1在上电的时分履行一次就能够了。
  • MBUS_SLAVE这个功用块有必要要用前面的条件有必要是一向为1的,上图顶用SM0.0。
  • 五、Modbus主站指令

Modbus主站指令傍边的第一个块叫做MBUS_CTRL,MBUS_CTRL有哪些内容呢?咱们来看一下引脚界说的阐明:首要Mode写1的时分是挑选Modbus,写0的时分是挑选PPI;Baud表明波特率;Parity是奇偶校验,0是无校验,1是奇校验,2是偶校验,这与从站的设置相相似;Timeout表明的是主站等候从站呼应的时刻(ms);Done位是初始化完结;Error位表明的是毛病代码。其间值得一提的是Timeout这个时刻,主站等候从站呼应的时刻指的是什么呢?让咱们来看一下主站和从站之间通讯的进程:

首要,主站会发一帧读写恳求给从站,在主站的读写恳求宣布后,从站应当在Timeout指定的时刻内回来应对;假如在此时刻内从站没有应对,则主站发第2次读写恳求,第2次还不可发第3次读写恳求,假如接连3次在此时刻内从站没有应对,则主站确定从站无相应,抛弃该从站并报错。

下面来看主站的读写指令(MBUS_MSG),看一下引脚阐明:首要First指的是读写恳求触发(沿触发),每逢First这一端来了一个沿,Modbus指令便会做出一次读或许写恳求,RW标明的是这一次的指令是读仍是写,0表明读,1表明写;Addr表明的是从站数据地址(Modbus规范地址格局),0最初、1最初、3最初和4最初的;Count指的是通讯数据的长度,最大120个字,单位可能是bit或word;DataPtr指的是参加通讯的本方数据区,假如是读指令标明的是读回来的指令放在本地的哪一块数据区,假如是写指令表明的是把本地的哪一块数据发给对方;薛楚儿Done位和Error位分别是功用完结和毛病代码。

  • 其间值得一提的是Count,方才讲过它的单位可能是bit或word,究竟是bit或word取决于其时所用的Modbus规范的地址码是用的哪一块,假如关于1-128而言这是一个DO的输出,关于1最初的是一个DI的输S7-200的Modbus通讯很简单!入点,这个时分Count的单位指的是bit,而关于3最初和4最初的,那么是AI和保存寄存器,它们的单位是word。需求留意的是当Count的单位是Bit时,必定Count的数值设置为8的整数倍,不然会犯错,这是由于一个根本传输的字符是包含8个数据位的,没有办法只传送一个或几个bit。
  • 六、Modbus主从站轮询

  • 当存在Modbus多主站轮询的时分,在程序傍边咱们应当怎么处理呢?上图中展现了这种办法。例如第一个MBUS_MSG指令咱们能够运用它的Done位(本例中为M2.1),把它作为第二条MBUS_MSG指令的First前面的激活端,S7-200的Modbus通讯很简单!也便是说第一个MBUS_MSG完结的时分才会去激活下一条MBUS_MSG指令,那么相同,第二条指令完结时咱们把它作为第三条MBUS_MSG指令的激活条件,在最终又把第三条指令的完结位还给第一条网络,这样的话就构成了一个循环的轮询方法。
  • 七、Modbus通讯常问问题回答:
  • 1、S7-200是否支撑Modbus ASCII形式?
  • 答:S7-200能够支撑上述形式,可是没有现成的指令库,需求用户自己运用自在口的方法编程。
  • 2、项目编译后为何呈现许多过错?
  • 答:运用指令库时,若编译后呈现许多过错,一般是由于未指定库指令数据存储区。
  • 3、Modbus从站的网络地址与S7-200的CPU网络地址有何联系?
  • 答:没有联系。支撑网络通讯的通讯协议有必要有其自己的网络寻址规则。Modbus从站的地址仅仅它在Modbus网络上的地址,而一般所说的S7-200 CPU地址是CPU在西门子的PPI网络上的站地址。
  • 4、MBUS_MSG指令中代表数据长度的COUNT引脚单位是什么?
  • 答:关于Modbus地址=0xxxx或1xxxx的,引脚单位为Bit;关于Modbus地址=3xxxx或4xxxx的,引脚单位为Word。
  • 5、怎么拜访大于9999的坚持寄存器地址?
  • 答:Modbus Master协议库支撑超越9999的坚持寄存器地址。地址规模为400001-465536。只需在调用MBUS_MSG子程序时给Addr参数赋相应的值即可,如416768。
  • 6、为何有些HMI软件运用Modbus RTU读取S7-200中的实数会呈现过错?
  • 答:不同的厂家关于浮点数格局界说的不同,西门子的PLC遵从的是高位低存的规则,和其他的厂家有可能会不一样,这样读回来的实数或整数的凹凸字节会发作回转,这个时分能够经过监控、判别,在程序傍边把它掉过来就能够了。
  • 7、MBUS_MSG显现Error 6#?
  • 答:Error 6#表明Modbus正在忙于其它恳求。MBUS_MSG指令一起只能答应有一个读写操作处于运转进程,假如在一个读写操作没有完结时启用别的一个读写恳求,就会发作Error 6#。运用Done位能够对躲避这一问题。
  • 8、MBUS_MSG显现Error 3#?
  • 答:Error 3#表明从站无应对。即主站的读写恳求宣布后,从站没有在Timeout时刻内回来报文。多种原因能够引起此毛病,包含:
  • 硬件毛病(线路,端口等问题)。
  • 过错的从站地址,波特率,奇偶校验。
  • 从站不支撑此功用码,或不能被从站辨认的从站数据地址。
  • Timeout时刻过短(从站呼应较慢),经过延伸Timeout能够处理这个问题。