西门子PLC编程中的Modbus通讯,你知道怎么用吗?详细教程
(1)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标准地址码,其中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通讯的请求与应答的过程。
(2)Modbus库文件的安装和调用
如果想要应用Modbus指令库,那么首先需要到因特网上或者向西门子的客服人员申请名称为'Toolbox_V32-STEP 7-Micro WIN' 的指令库,将它解压并且安装到Micro WIN当中就可以使用了,安装后会在Micro WIN的库文件当中出现上图标记的三个库,其中Port0和Port1都可以做Modbus Master,而Slave只有Port0口可以做。
(3)Modbus库文件的使用
使用方法很简单,打开Modbus主站指令库会有相应的指令块出现,直接把指令块拖拽到程序当中进行调用就可以了。
在调用Modbus库指令的时候,需要注意一定记得为Modbus库文件分配库存储区。具体的方法是右键单击库,然后选择库存储区,在弹出来的对话框当中可以选择建议地址,自动分配一个程序里面不会用到的地址区间,也可以人为地手动填写起始地址,这个区间在程序当中不可以和其他的数据区相冲突,否则Modbus功能将不正常。
所谓的库存储区其实就是Modbus指令库能够正常工作所必须的一部分背景数据,只要给它分配好区间并保证不与程序当中其他的地址相冲突就可以了。
(4)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区地址对应于Modbus标准地址的起始地址是可更改的,那么就在这里进行设定,在本例中如果HoldStart写的是VB0,那么40001对应的地址就是VW0,40002对应的地址是VW2,40003对应的地址是VW4,以此类推,每一个标准的Modbus地址码对应的是一个Word,以字为单位,同样如果这里设的是VB100,那么40001对应的就是VW100,40002对应的是VW102,以此类推。
这一条初始化指令只需要调用一次就可以了,所以在上图中用的是SM0.1在上电的时候执行一次就可以了。
MBUS_SLAVE这个功能块必须要用前面的条件必须是一直为1的,上图中用SM0.0。
PLC通讯MODBUS协议的应用及编程
叙述:现为大家讲解一下MODBUS的应用,现在工业控制上位机和下位机通信大部分采用通信协议为MODBUS.可想而知机器与机器通信的重要性。
一:MODBUS系统框架图
二:MODBUS运用
MODBUS 通讯的底层为 RS485 信号采用双绞线进行联接就可以了,因 此传输距离较远,可达 1000 米,抗干扰性能比较好,且成本低,在工业控制设备的通讯中被 广泛使用,现在众多厂家的变频器、控制器都采用了该协议
传送数据格式有 HEX 码数据和 ASCII 码两种,分别称为 MODBUS-RTU 和 MODBUS-ASCII 协 议,前者为数据直接传送,而后者需将数据变换为 ASCII 码后传送,因此 MODBUS-RTU 协议的 通讯效率较高,处理简单,使用得更多
MODBUS 为单主多从通讯方式,采用的是主问从答方式,每次通讯都是由主站首先发起, 从站被动应答。因此,如变频器之类的被控设备,一般内置的是从站协议,而 PLC 之类的控 制设备,则需具有主站协议、从站协议
现在以 MODBUS-RTU 协议为例,说明通讯帧的典型格式: 请求帧格式:从机地址+0x03+寄存器起始地址+寄存器数量+CRC 检验
正常响应帧格式:从机地址+0x03+字节数+寄存器值+CRC 检验
三:PLC 编程时应该注意以下信息:
从机地址:主站发送帧中,该地址表示目标接收从机的地址;从机应答帧中,表示本机 地址;从机地址的设定范围为 1~247,0 为广播通信地址。
操作类型:表示读或写操作;0x1=读线圈操作;0x03=读寄存器操作;0x05=改写线圈 操作;0x06=改写寄存器操作。
对于变频器而言,只支持 0x03 读、0x06 写的操作。 寄存器起始地址:表示对从机中要访问的寄存器地址,对于 MD280、MD320 系列变频器的 访问时,对应的就是"功能码号"、"命令地址"、"运行参数地址"; 数据个数:即从"寄存器起始地址"开始要连续访问的数据个数,对于寄存器变量,以 word 为单位。
寄存器参数(数据):要改写的数据(主机改写),或读取的数据(从机应答);
四: 程序编程编写及讲解
结论:以上是对PLC通信举得例子,只要设置这几个特殊寄存器就可以通信了,特别是要对RS通信指令的应用和对PLC通信中所用到的特殊寄存器等等。谢谢大家的阅读与支持,您的支持就是我创作的动力。
相关问答
plc怎样设置modbustcp通讯?
1.将通讯模块接入PLC的通讯口,扩展的网口连接modbusTCP客户端(PC或者DCS)。2.通过IE浏览器查看BCNet模块的参数在IE浏览器中,如果BCNet模块当前的IP地址,...
西门子PLC怎么用MODBUS通讯,要讲解详细点的?
S7-200,编程软件有这个功能块,直接调用块,设置一下就可以modbus主站或从站功能。S7-300一般要配一个通讯模块CP340或者CP341,用340得自己编写通讯代码,用341...
modbus通讯怎么对应plc输入输出?
在Modbus通信中,PLC的输入和输出可以通过Modbus寄存器进行对应。具体的对应方式如下:离散输入(DiscreteInput):PLC的离散输入可以通过Modbus的离散输入寄...
plc1200怎么设置modbustcp通讯?
需要进行一定的设置才能进行modbustcp通讯首先需要设置PLC的网络连接和配置IP地址和子网掩码等网络参数,然后在TIAPortal中添加连接模块并进行参数设置,包括...
如何指定三菱plc1号口为modbus从站口?
要将三菱PLC的1号口设定为Modbus从站口,您需要按照以下步骤进行操作:1.进入三菱PLC的编程界面。通常,您可以使用三菱PLC编程软件(例如GXWorks3)连接到PLC...
LabVIEW与PLC如何进行Modbus通信?
首先确定双方是否有硬件接口,比如RS232或RS485端口。使用屏蔽双绞线,最后一个从站加120欧电阻。RS232方式不要超15米,RS485方式长度不要超过一千米。再确认二...
一台pc用如何用modbus协议连接多个欧姆龙CJ系列的PLC,当前有...
OMRONplc没有内置MODBUS协议,非要采用需要另外购买SCU41-V1版本以上模块。建议选用HOSTLINK协议。有用(0)回复291989253主要看你的组态软件是否有相应PL...
欧姆龙plc+modbus通讯用甚么指令?
一般有两种指令,一种是接收。一般需要把你要发的数据转换成PLC里定义的数据格式。然后按照你设定的条件,PLC会在满足时发出。需要你定义发送的端口。接收也需...
西门子S7-200库MODBUS库怎么添加进去?
要添加西门子S7-200库的MODBUS库,可以按照以下步骤操作:打开STEP7-MicroWINV4.0软件,进入库文件选项。在库文件选项中,选择“添加/删除库文件”按钮。在弹...
三菱fx2n如何进行modbusrtu通讯?
三菱FX2NPLC支持ModbusRTU通讯协议,以下是简单的通讯设置步骤:1.硬件连接将FX2NPLC的串口DB9连接到相应的ModbusRTU设备,同时将GND连接到通讯线中的对.....