PLC通信协议(共7篇)
PLC通信协议 篇1
1 引言
由于PLC发展的历史原因,不同品牌PLC之间通信较困难。目前在PLC控制系统扩展改造中,如果新增PLC由于某些原因与原系统中PLC品牌不同而又需要通信,一般采用某种现场总线,但采用现场总线成本较高,且需要改动原有PLC。本文提出了在某些实时性要求不高的场合,可以充分利用各品牌PLC的上位机通信协议,采用单片机进行协议转换,不修改原有PLC系统,低成本实现异种PLC通信。
2 设计要求分析
上位机通信协议是主从式协议,一般用于上位机对PLC的运行监控,主机(上位机)发出初始命令,从机(PLC)对其做出响应,返回相应值或响应代码,PLC中不需要另行编写程序。扩展PLC与原PLC通信的主要目的,在于读取原PLC中相关软元件的数值或状态,作为部分输入条件,参与本机内程序控制,较少出现扩展PLC改写原PLC中软元件的情况(如果改写较多,则原PLC系统需要重新考虑)。限于篇幅,为简洁起见,本篇以系统中原有PLC是欧姆龙CPM1A系列、新增PLC是三菱FX2N系列为例,采用单片机作为上位机,只讨论FX2N对CPM1A软元件的读操作,写操作可类似推导。
如图1所示,单片机采用国内流行的工业级芯片P89C669FA[1],P89C669FA基于PHILIPS半导体新51MX内核,包含96kB的Flash程序存储器、2kB的数据SRAM、两个增强型UART,可以不需扩展外围器件即能满足与两PLC通信连接的需要。FX2N和CPM1A通过各自的专用上位机通信电缆SC-09和CQM1-CIF01与P89C669的两路串行口连接。
整个通信过程使用的协议可分为几个层次,如图2所示划分,底层采用单片机自带的串口采用异步串行通信协议实现单片机与两PLC的数据收发;中间层采用两PLC各自的上位机通信协议组帧实现单片机对两PLC数据的读写,应用层为本文重点讨论的两上位机发送、接收帧正文内容的转换程序。转换程序采用C语言[2]描述。
3 程序设计思路
3.1 上位机通信协议概述
通过对FX2N的串口通信侦测,可获得上位机通信协议中读写数据寄存器的发送帧格式如下:
命令码一字符(读为“0”,写为“1”)。寄存器首地址按公式addr(H)=addrs(H)×2+1000H计算出,例如首地址D100则转换为1064H。字节数用来表示操作的寄存器数目,每个寄存器的字节数为两个。数据块只有写操作时才有,表示需写入寄存器中的数据,每个寄存器存放四位十六进制数,高两位写在后,低两位写在前。寄存器首地址、字节数、数据块构成发送帧的正文部分。和校验码为命令至和校验前所有字符的ASCII码和的低两位的ASCII码。例如读出D1000开始的三个寄存器的内容,其发送帧内容如下:
正文部分在读操作正确时为依次从数据寄存器中读出的十六进制数据(高两位在前,低两位在后),最多一次可读写64个字节的数据;写操作正确时返回代码ACK(06H);读写操作不正确时,返回代码NAK(15H)[3]。
欧姆龙上位机通信协议对外公开,可从CPM1A编程手册中获得读操作发送帧格式为:
机号为参与通信的PLC编号,在PLC内DM6653中设置,在帧中占两字节。本篇中为方便描述,参与通信CPM1A只有一台,机号设为0。识别码为软元件(欧姆龙PLC中称为通道)操作类型,常用的主要有读操作:RR(读输入输出继电器状态),RC(读定时/计数器当前值),RG(读定时/计数器状态),RD(读数据寄存器值)。通道起始地址和通道数都是四位十进制数,在帧中各占四字节。识别码、起始通道、通道数构成发送帧的正文。
读操作的响应帧格式为:
机号、识别码与发送帧内容相同,结束码为命令的执行状态,主要的有00H(正常结束),13H(FCS错误)等(具体请参考CPM1A编程手册[4])。正文部分只在读出数据时才有。需说明的是CPM1A通信中,超过131字符的帧需分割处理。
3.2 主程序设计
在FX2N选择数据寄存器D1000-D1999,存放描述对CPM1A软元件读操作的参数,D1000存放该区域寄存器的数目。描述一次读操作,需占用FX2N三个寄存器:约定上述四类读操作类型分别以数字1,2,3,4表示,存放在指定区域中一个寄存器;其后的两数据寄存器内,依次存放起始通道号及通道数(为方便程序设计,规定每次操作通道数不超过30,以符合两PLC上位机通信协议中对一帧长度的要求),FX2N最多可对CPM1A进行333次不同的读操作。指定D2000向上数据寄存器,按各次对CPM1A读操作的通道顺序依次存放从CPM1A中返回的数据(每通道占一寄存器)。
初始时,P89C669按照上位机协议读取D1000中内容,将其换算成十进制数N。将FX2N中D1001起始的N个数据寄存器数据全部读入P89C669中后,把这些对CPM1A读操作的描述转换成CPM1A上位机协议格式的发送帧正文,顺次保存在一数组中。
从数组中选取一读操作发送帧正文对CPM1A读操作;若CPM1A响应错误,则重新发送原读操作帧,连续三次错误,则报警;响应正确,则提取CPM1A响应帧的正文内容,保存到一数组中,并将响应帧中读到的数据转换成FX2N发送帧,对FX2N中D2000以上指定区域写操作,若响应错误,则重新发送写操作帧,连续三次错误,则报警;响应正确,则选取下一帧正文内容对CPM1A读操作,直至完成所有要求的对CPM1A读操作及向FX2N回写数据后,开始下轮读写循环。为提高实时性,在完成一次CPM1A读操作后,提取有效响应帧的正文内容与上轮比较,相同,则不必向FX2N发送;不同才转换成FX2N发送帧,对FX2N写操作,刷新数据。如此往复循环下去。主程序流程图如图3所示。
3.3 协议转换实现
从主程序设计分析中可知,P89C669需完成两次转换:即FX2N中对CPM1A各次读操作的描述(D1000向上N个寄存器内容)向对CPM1A读操作的发送帧转换;CPM1A的响应帧向对FX2N写操作的发送帧转换。
定义unsinged int型数组CHNNumber[N/3],用以顺序存放各次对CPM1A读操作的通道数,定义unsinged in型数组Total CHNNumber[N/3],用以顺序存放各次对CPM1A读操作后累计已读通道数。定义unsinged int型变量k为读取次数,k
定义char型数组FromFXFirst[4觹N],用以顺次存放P89C669从FX2N中D1001向上的N个数据寄存器读到的内容。定义unsigned int变量i<4N,则FromFXFirst[i%12]~FromFXFirst[i%12+3]对应对CPM1A读操作类型的描述,FromFXFirst[i%12+4]~FromFXFirst[i%12+7]对应CPM1A中起始通道号的描述,FromFXFirst[i%12+8]~FromFXFirst[i%12+11]对应通道数的描述,都是低两位在前,高两位在后的四位十六进制数字符。定义char型数组ToCPM[10觹N/3],用以存放P89C669向CPM1A各次读操作发送帧正文内容,按顺序包括每次的识别码(2字符),起始通道号(4字符),通道数(4字符)。
定义unsigned int变量j<10N/3,则ToCPM[j%10],ToCPM[j%10+1]对应识别码字符。ToCPM[j%10+2]~ToCPM[j%10+5]对应通道号,ToCPM[j%10+6]~ToCPM[j%10+9]对应通道数,都是高两位在前、低两位在后的四位十进制数字符。
如此,从FromFXFirst[i%12+1]的值就可判断出每次对CPM1A读操作的类型,转换为对应的两位字符,分别存入ToCPM[j%10]、ToCPM[j%10+1],具体对应如图4所示;将FromFXFirst[i%12+4]~FromFXFirst[i%12+7]、FromFXFirst[i%12+8]~FromFXFirst[i%12+11]中内容各自由低两位在前,高两位在后的四位十六进制数字符转换成十进制数,再转换为高位在前、低位在后的四位十进制数字符,分别存入ToCPM[j%10+2]~ToCPM[j%10+5]、ToCPM[j%10+6]~ToCPM[j%10+9],即可完成FX2N中读操作的描述到向CPM1A读操作的发送帧正文转换;另在通道数的四位字符FromFXFirst[i%12+8]~FromFXFirst[i%12+11]换算成十进制数后,存入CHNNumber[k]中。
定义char型数组,用以顺序存放各次读操作后CPM1A响应帧的识别码和正文(即所读各通道数据)字符。数据在CPM1A的读响应帧中表达形式较复杂,RR、RD以四位十六进制数表示一数据,RC以四位十进制数表示一T/C的当前值,RG时以一位二进制数表示一T/C的状态。第k次读操作识别码为RR、RC、RD的响应帧中每通道内数据都以四位字符表示,可直接对应。
存入;第k次读操作识别码为RG的响应帧中每T/C的状态以一位字符表示,应将字符存入中。定义char型数组,用以顺序存放首轮向FX2N中回应数据的各发送帧正文内容。第k次向FX2N写操作的发送帧中寄存器首地址应为2000+TotalCHNNumber[k-1],字节数应为2×CHNNumber[k],换算成低两位在前、高两位在后的十六进制数字符,分别存入中。
数据在CPM1A的读响应帧中表达形式略微复杂:RR、RD以四位十六进制数表示一数据,RC以四位十进制数表示一T/C的当前值,RG时以一位二进制数表示一T/C的状态。可根据的值可以确定读操作类型,即可确定正文数据的进制,统一换算为十六进制数,再转换为四位字符,存入中。
如此,则完成CPM1A的响应帧内容和FX2N写操作发送帧的转换。
4 扩展PLC中编程注意点
FX2N中编写程序时,先在D1000向上的寄存器中设定对CPM1A软元件读操作的描述。根据设定中各次读操作的软元件数,即可确定各次从CPM1A中读得的返回值在D2000向上数据寄存器中的存放位置,根据对应所读软元件的类型可确定数据的意义(数值或状态),作为控制条件,编写入PLC控制程序。
需要说明的是,由于上位机通信本身的实时性不强,对实时性要求较高的控制点,应直接从扩充PLC的输入点引入,必要时在扩充PLC中采用中断实现快速响应。
5 结语
本篇为描述方便,没有涉及FX2N对CPM1A的写操作功能,以及FX2N运行过程中改变对CPM1A读操作等内容,对于这些可类似加以设计,扩展功能。程序完成后,可在KeilC51中仿真运行调试[5],借助GX-Developer和CX-Programmer软件,可很方便地观察FX2N和CPM1A中软元件内容,验证通信效果。本设计实际应用于特殊玻璃生产的均质炉控制系统中,目前效果良好。
参考文献
[1]徐爱均,彭秀华.单片机高级语言C51Windows环境下编程与应用[M].北京:电子工业出版社,2003.
[2]肖闽进.基于P89C669微控制器的MODBUS协议转换器设计与实现[J].常州工学院学报,2006,19(2):12-15.
[3]李众,高键.单片机与FX系列PLC通信协议应用研究[J].华东船舶工学院学报,2001,15(5):44-48.
[4]欧姆龙(中国)有限公司.SYSMAC CPM1A可编程控制器操作手册[Z].1997.
[5]广州周立功单片机发展有限公司.KeilC51编程开发与设计基础[Z].2006.
PLC通信协议 篇2
1 Modbus简介 (1)
Modbus将通信参与者规定为主机 (master) 和客户端 (slave) , 主机首先向客户端发送通信请求指令, 客户端根据请求指令中指定的内容向主机发回数据, 一个主机可以向多个客户端发送通信请求, 最多可有255个请求指令。每个客户端都有设有唯一编号, 该编号为客户端地址 (slave address) 或识别码 (slave id) 。
Modbus协议中只对各种通信字符串格式作了规定, 并未对通信参数作规定。
控制器能设置为ASCII或RTU两种传输模式中的任何一种, 在标准的Modbus网络通信。用户选择想要的模式, 包括串口通信参数 (波特率及检验方式等) , 在配置每个控制器时, 在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。当控制器设为在Modbus网络上以ASCII模式通信, 在消息中的每个8bit都作为两个ASCII字符发送。这种方式的优点是字符发送的时间间隔可达到1s而不产生错误。当控制器设为在Modbus网络上以RTU模式通信, 在消息中的每个8bit包含两个4bit的十六进制字符, 其优点是在同样的波特率下, 可比ASCII方式传送更多的数据。
2 硬件配置
2.1 PLC
CP341模块是S7-300/400 PLC中支持Modbus串行通信的模块, CP341有一个串行通信口 (RS-232C或TTY或RS-485/422) 。要实现Modbus通信, 需在CP341模块上插入相应协议的硬件狗, CP模板才能支持Modbus (RTU格式) 。
CP341模块的安装步骤:
a.将CPU切换至STOP模式;
b.关闭电源;
c.CP341附带扩展总线, 将该总线插入CP341左侧模块的背板连接器上;
d.如果要在CP341的右侧安装模块, 则将下一个模块的扩展总线插到CP341右侧背板连接器上;
e.将FM341挂在安装导轨上并向下旋转;
f.拧紧CP341;
g.将24V (DC) 的负载电源连接至CP341。
参数分配接口与功能块和编程实例均位于CD上。安装参数分配接口, 执行的操作:将CD放入编程设备或PC的CD驱动器;在Windows操作系统中双击控制面板中的“添加/删除程序”图标, 打开安装软件的对话框;在该对话框中选择CD驱动器, 然后选择“Setup.exe”文件, 开始安装;按照屏幕上的安装程序提供的说明进行操作。
CP341组态步骤如下:
a.通过STEP 7创建一个项目和站。
b.在STEP 7的组态表中输入CP341的机架号、插槽号和订货号, STEP 7自动给CP341分配地址, 这样CPU就能通过地址在机架插槽中找到CP341。
c.通过在组态表中双击订货号 (CP341) 或通过选择CP341, 然后选择编辑 (Edit) -->对象属性 (Object Properties) 菜单命令来启动参数分配接口。将出现“属性-CP341” (PropertiesCP341) 对话框。单击“参数” (Parameters) 按钮转至协议选项, 设置协议并双击传输协议的图标 (信封形状) 。这样进入了设置协议特定参数的对话框。
d.数据组态。通过选择站 (Station) -->保存 (Save) 或站 (Station) -->另存为 (Save As) 菜单命令退出组态表时, 系统自动将组态数据和参数分配数据 (包括模块参数) 存储到已创建的项目/用户文件中。
e.在线将组态数据和参数分配数据从编程设备下载到CPU, 菜单命令PLC-->下载 (Download) 。下载后CPU立即接收参数。
2.2 DCS
DCS的硬件包括:ALR121 (RS-422/RS-485communication module) 和ALR121。ALR121卡件连接的方式如图1所示。
3 组态
打开CS3000软件, 生成ALR121卡件, 开始→YOKOGAWA CENTUM→System View。在控制站 (FCS010x) 节点 (NODEx) 下点击右键→Create New→IOM, 弹出Create New IOM窗口, 在Category中选择Serial Communication, 在Type中选择ALR121 (RS-422/RS-485 Serial Communication Interface) →在Slot中设置卡件位置“x”。
点击“Card Common”标签, 选择卡件常规项, 连接设备选择“Modbus”。
点击Port1标签, 设置Modbus通信端口属性 (图2) 。主、从站的波特率、数据位、结束位、奇偶校验规则和接线方式都是双方约定好的, 必须保持一致。
通信I/O组态。双击ALR121卡件, 弹出“Communication I/O Builder”窗口, 开始通信I/O组态。通信I/O组态说明各项定义如图3所示, Buffer area针对本块ALR121所存储的总数据大小;Program Name为Modbus通信模块的安装位置, 格式为“K1-节点号-插槽号Modbus”;Size为所选数据类型的数据长度, 以“Words (2Byte) ”为单位进行分配, 范围1~126;Port为端口号, Modbus有两个端口, 在此设置1或2;IP Address为IP地址 (对Modbus组态不起作用, 适用于Ethernet, 如填写也不会报错) ;Station为从站设备的地址, 范围0~32的数字 (对从站设备进行识别) ;Device&Address为从站设备数据保存的内存地址, 如S7-300默认从站地址为222;Data Type为数据类型, 必须与从站数据类型一致;Reverse为是否将控制站 (FCS) 和子系统中的数据位“bit”取反, 有“NO”和“YES”可选;Scan为设置通信扫描方式, 有“NORMAL”和“FAST”可选。
在“Communication I/O Builder”中组态模拟量点, 如图4所示。
在“WBTag Def”中组态数字量点:在Element中填写通信的数字工位, 如%WB001102;在Tag Name中填写工位名称, 如XI-P102A;在Tag Comment中填写相对应的工位注释。具体如图5所示。
下装, 完成通信I/O组态。
在Drawing图中组态, 如图6所示。
对于模拟量输入的PVI, 选中PI-101, 右键单击“Edit details”进入详细编辑, 将“输入信号处理”与“输出信号处理”方式选择为子系统通信, 并设置一定的增益和偏差 (图7) 。
数字量点可以使用“开关仪表”进行接收, 也可以直接调用“%WB000102”或设置的工位直接进行调用。下装后, 系统组态完成。
调试步骤:
a.在“FCS010x Station Status Display”中观察卡件状态, 在硬件ALR121卡件上观察接收、发送灯是否正常。
b.调出Process Report, 看是否有“1”, 如果有“1”表示有数据发送过来;如果没有, 则表示没有数据发送过来。如图8所示。
c.调出工位, 核对和子系统的数据差别。调试结束。
4 结束语
DCS的功能不能局限于完成自身系统的控制和操作, 还要整合其他各辅助系统的运行信息和生产数据, 并将这些数据提供给操作人员和管理者。笔者采用Modbus通信协议和硬件设备的互连, 实现了第三方系统间的通信和数据交换, 极大地方便了操作人员的监护和控制, 人力成本降低, 生产自动化水平提高。
声明
PLC通信协议 篇3
2015年笔者在赴企业实践活动期间, 某公司正在制造一台设备, 该设备中有5台电动机分别由5台变频器驱动, 要求用一台PLC对这5台变频器进行正转、反转、停止、写入及读出频率等控制。另外, 制作触摸屏画面进行远程控制和实时监控。由于笔者在PLC与变频器通信方面有一定的研究, 所以公司决定由笔者负责对该系统的通信技术方面进行研究。最终利用Mod Bus通讯成功实现用PLC控制和监控变频器的运行, 现阐述该方法用于多台变频器拖动电动机控制系统的推广应用。
1 案例分析
如果采用传统的PLC硬接点输出控制变频器的运行及停止, 使用多段速度或D/A输出控制变频器的转速变化, PLC与变频器经外部接线完成连接, 则不能进行内部数据的传递, 那么在触摸屏上要进行变频器频率设定及频率显示就无法实现;所以, 只能采用通信控制。通过分析, 利用Mod Bus通讯协议, 仅通过一条通讯电缆连接, 无须其他外部接线, 不但能完成传统应用的所有功能, 还能进行内部的数据通讯, 可方便地从变频器中获取所驱动的电动机各种电参数如:运行频率、电流、电压、功率等, 配以人机界面的话, 可将上述电参数直接显示在人机界面上。根据控制要求, 系统由1台PLC与5台变频器组成ModBus网络, 5台变频器分别设为网络的1~5#站, PLC作为控制的核心可以分别对5台变频进行控制。所以, 除了设置5台变频器的参数和制作触摸屏工程画面外, 关键就是网络接线和PLC与变频器通信程序的设计。
2 系统的构成及配置
根据客户要求, 系统采用台湾永宏电机股份有限公司的FBs-32MAT型PLC加FBs-CB5通信模块作为主控制器;台湾爱德利MS-107系列变频器用于传动控制;配合1台永宏FE-070ST系列触摸屏进行控制和监视。系统连接关系如图1所示, 在该系统中, PLC的Port 2 (RS-485端子口) 和变频器构成Mod Bus网络, 通过PLC去控制5台变频器完成系统控制需要, 实现对变频器的频率设定、运行状态监控及参数交换等[1]。
3 Mod Bus通信协议
在工业控制领域中, Modbus协议是应用于控制器上的一种通用语言, 是一种串行的、非同步的主从通信协议, 网络中只有一个设备能够建立协议, 其他的设备只能通过提供数据响应主机的查询, 或根据查询做出相应的动作[2,3,4,5,6]。Mod Bus协议定义了主机查询的格式, 其包括:主从机的编址方法 (或广播) , 要求动作的功能代码, 传输数据和错误校验等, 或不能完成主机要求的动作, 它将组织一个故障作为响应。典型的Mod Bus协议包括ASCII、RTU、PLUS、TCP/IP等通信模式, 其中Mod Bus/RTU应用最为广泛。因为该协议有2种传输模式即RTU模式和ASCII模式。其中RTU模式信息帧中的8位数据包括2个4位16进制字符, 相对于ASCII模式, RTU模式表达相同的信息需要较少的位数, 且相同通信速率下具有更大的数据流量[3]。因此在本案例中, 采用RTU模式的Mod Bus协议。另外, Mod Bus协议不需要特别的接口, 典型的物理接口是RS485。
本案例中, 永宏PLC支持Mod Bus协议, 可以灵活运用RTU通信模式;爱德利MS-107系列变频器支持Mod Bus中的RTU通信模式。
4 案例实施
(1) 通信端口说明
1) FBs-CB5通信板
永宏FBs-PLC的主机自带1个通信端口 (Port0) , 通过添加通信板后依型号不同通信端口可扩展至2~3个。本案例采用FBs-CB5通信板, 它包含1个RS485通信端口 (Port2) 具TX、RX指示灯, 如图2所示。
2) 爱德利MS-107变频器通信端口
爱德利MS-107变频器自带RS485通信端口, 如图3所示。
RS485通信端口脚位说明见表1[2]。
(2) FBs-CB5通信板与变频器RS485通信端口接线方法
采用双绞线、RJ45插头 (水晶头) 制作通信线, 如图4所示。
(3) 通信参数设置
1) 爱德利MS-107变频器参数设置见表2, CD01 (设定锁住) 必须设置为1, 其他参数才允许改变;CD74为站号设置, 5台变频器分别设为1~5。
2) 永宏PLC的参数设置如图5所示, 本案例中, 占用port2通讯口。
注:此设置必须在线进行, 即打开PLC编程软件后点“联机”或按“F12”, 否则无法进行参数设置。
(4) PLC程序设计
1) Mod Bus Master表格说明
永宏PLC提供了方便快捷的Mod Bus Master表格, 直观易懂, 例如1#站控制如图6所示, 其他4个站编写方法与1#站相同, 这里就不全部说明了。其中, 第0~3笔资料分别是控制1#变频器频率写入、加速时间、减速时间及运行控制;第4笔资料为读取1#变频器的运行频率。MS-107变频器的内部参数被一一映射为Mod Bus协议400001开始的寄存器, 通过对各寄存器的操作, 即实现了对MS-107中与寄存器对应的参数的操作。例如CD00 (运行频率) —400001、CD100 (运行控制) —400101, 其他以此类推。
2) 永宏PLC的FUN150.M-BUS便利指令说明
FUN150为Mod Bus通信协议联机指令, 它可将永宏PLC设置为Mod Bus通信协议的主站, 通过Port1、2、3或4与具有该通信协议的智能外设 (从站) 联机。指令说明如图7所示, 本案例中, Pt=2表示通过Port2端口以Mod Bus通信协议作数据传输;SR必须对应Mod-Bus Master表格的配置位置, 例如1#站配置位置:R1100~R1137, 对应程序中SR=1100;WR为指令动作的起始缓存器, 在不与程序中其它寄存器重复的前提下可以自由设定。
注:设置完成后, 必须断电再重启, 新的设定值才会生效。
(3) 程序设计
程序设计如图8所示。程序说明:使用FUN150.M-BUS便利指令配合Mod Bus Master表格可以方便的对变频器内部参数进行修改或读取。例如MS-107变频器CD100为运行控制, CD100=1变频器正转、CD100=2变频器反转、CD100=3变频器停止, 所以只在将相应的数据通过Mod BusMaster表格写入Mod Bus协议的寄存器中就能对变频器进行相应的控制。另外, 程序中的M1962为通信标志, 当M1962=0时, 表示正在通信;M1~M5为触摸屏画面通知位, 即选择相应站点控制画面时通知接通。
(4) 触摸屏画面制作
本案例配置永宏FE-070ST系列触摸屏, 使用画面制作软件PM Designer V2.0进行制作, 由于控制5台变频器的画面制作基本相同, 如图9所示, 其他画面不进行说明。
5 结束语
本案例利用Mod Bus通信协议通过永宏PLC来控制5台爱德利变频器的运行, 仅使用一条通信电缆连接, 无须其他外部接线, 不但能完成传统应用的所有功能, 还能进行内部的数据通信, 可方便地从变频器中获取所驱动的电动机各种电参数, 配以人机界面的话, 可将参数直接显示在人机界面上, 极大地提高了自动化程度, 使控制变得简单和精确, 系统运行故障率也大大减少。因而, 采用Mod Bus协议网络通信来实现生产设备控制要求, 是工业控制的一种趋势。该方法用于多台变频器拖动电动机控制系统是值得推广和应用的。
参考文献
[1]台湾永宏电机股份有限公司.永宏FBs-PLC使用手册[Z].2013.
[2]台湾爱德利科技股份有限公司.爱德利MS系列使用说明书[Z].2014.
[3]张少明, 张禧博, 黄梓康.MODBUS在工控PLC的应用[J].机电工程技术, 2016 (4) :43-45.
[4]刘彦鹂, 李明.基于MODBUS协议的FP-X PLC与变频器的通信[J].机电工程技术, 2010 (8) :44-46.
[5]李建兴.PLC技术与应用[M].北京:机械工业出版社, 2011.
PLC通信协议 篇4
MODBUS作为一种简单易用的通讯协议已经越来越多的应用在各类仪器仪表中, 下面笔者以西门子公司的S7200PLC通过自由口与ABB公司的ACS510变频器使用MODBUS协议进行通信为例, 对MODBUS通讯的应用进行叙述, 以期达到抛砖引玉的效果。
2、硬件配置
图1给出了SIMATIC S7-200CPU与四台ABB ACS510变频器构成的MODBUS网络。S7-200CPU为主工作站。变频器1、变频器2, 变频器3和变频器4为从工作站。设置变频器的通讯协议参数9802均为1, 即变频器通过RS485串行通讯口和MODBUS总线相连。设置通讯速率参数5303为19.2kb/s。设置校验方式参数5304为偶校验, 1个停止位。设置控制类型参数5305为ABB传动简版。从左到右变频器1、2、3和4的站地址参数5302分别设置为3、4, 5和6, 并将变频器4的总线终端电阻DIP开关置ON。在对变频器以上参数设置完成后应对传动重新上电激活, 使新地址及通讯协议生效。
变频器控制要求:
变频器分现场和远程两种控制模式, 现场控制柜设置三位置模式选择开关, 分别为停止、本控和远程。在本控模式下启动/停止命令由现场开关触发数字输入DI1控制, 频率由现场的电位器改变模拟输入AI1的输入电压进行调节。当选择远程模式时, 数字输入DI2接通, 通知PLC现变频器已经处于远程控制模式。为能够实现以上功能并在人机界面能够观察到变频器的运行频率和通过模拟输入AI2输入的实际流量, 还需要对变频器其他部分参数进行设置, 见表1。
3、程序设计
3.1 通讯内容
主工作站轮流发送请求报文到每个变频器从工作站, 随之每个从工作站产生响应报文。PLC主工作站分别对每个变频器从工作站进行如下操作:
(1) 对每个变频器的输出线圈1~3的状态进行查询;
(2) 查询变频器状态寄存器40004状态字、40005实际值、40006实际值和40007实际值。40005~40007数据值对应于表1中变频器参数5310、5311和5312中的实际值。
(3) 写变频器控制字, 对变频器的远程启停进行控制。
(4) 写变频器寄存器, 对变频器的外部2给定进行控制。
对一个变频器的数据全部读写完成后, 开始对下一站号变频器的数据进行读写。当所有变频器的数据读写完成后, 主工作站重新开始对最小站号变频器的数据进行读写。数据的传输及接受采用PLC自由通讯口模式进行, 报文按照modbus的协议组织。
3.2 通讯格式
MODBUS请求报文格式如表2。
因在S7-200PLC发送指令XMT中, 发送缓冲器的第一个字节指定的是数据传输的字节数, 从第二个字节以后的数据为需要发送的数据。因此, 结合MODBUS请求报文格式, PLC发送数据的格式如表3。
在整个网络通信过程中, 主工作站轮流发送请求报文到每个从工作站, 随之每个从工作站必须产生响应报文返回到主工作站。当主工作站向从工作站发送请求报文和接受从工作站返回的响应报文时, 在主工作站储存区开辟了发送缓冲区和接受缓冲区。主工作站向从工作站发送请求报文时, 首先对相应从工作站输出缓冲区的数据进行CRC运算生成校验码, 并将校验码叠加在输出缓冲区的数据之后再传送到发送缓冲区, 然后再由发送指令发出。建立一个远程循环结束标志位, 当响应报文全部接受完成, 置该位为ON。主工作站在接受从工作站的响应报文时, 先把响应报文输入到接受缓冲区, 再把接受缓冲区中的数据传送到输入缓冲区。为此, 在主工作站中要留有两个数据存储区, 一个作为报文请求 (输出缓冲区) , 另一个作为报文响应 (输入缓冲区) 。
在MODBUS RTU通讯协议中都必须要求有CRC循环冗余校验。CRC循环冗余校验为两个字节, 附加在报文后面的CRC的值由发送设备计算, 当放置CRC值于报文时, 高低字节必须交换。首先发送低位字节, 然后再发送高位字节。故此在发送缓冲区中的数据要比输出缓冲区的数据多两个CRC循环冗余校验字节。接收设备在接收报文时重新计算CRC的值, 并将计算结果于实际接收到的CRC值相比较。如果两个值不相等, 则传送的数据为错误。
3.3 程序描述
SBR0子程序:在PLC上电初始化阶段, 设置通讯口为自由口通信方式, 并设置波特率及校验方式, 允许全部中断时件, 并设置定时中断的时基为20毫秒。在这里设置波特率为19.2KB/S, 偶校验, 每字符8个数据。注意必须与从工作站的通讯参数相同。为输出和输入缓冲区的数据地址建立间接寻址指针。并设置请求报文的剩余数目为4, 设置从工作站的查询剩余数目为4。
将输出缓冲区指针中指出的地址为起始地址的12个字节通过块传送命令传送到发送缓冲区单元中。并复位远程循环结束标志位。
对发送缓冲区中的报文进行运算生成CRC, 交换CRC寄存器中的高低字节, 并将交换完成的CRC寄存器叠加到发送缓冲区中。
启动定时中断和发送中断, 并通过发送指令将发送缓冲区中的请求报文发送。
建立跳转入口, 标号1。
若循环未结束, 跳转到标号1。程序不向下执行, 直至远程循环结束, 标志位为ON。
远程I/O更新完成, 将接受的报文通过块传送命令传送到接受缓冲区指针指出的接受缓冲区中。
修改发送缓冲区和接受缓冲区指针值, 指向下一个输出和输入缓冲区字节地址。将请求报文的剩余数目减1。
当请求报文的剩余数目为零时, 重新设置请求报文的剩余数目为4, 将从工作站的查询剩余数目减1。
当工作站的查询剩余数目为零时, 重新设置从工作站的查询剩余数目为4, 为输出和输入缓冲区的数据地址重新建立间接寻址指针。
INT_0中断程序:在接受报文超时情况下, 禁止接受中断和接受定时中断, 置远程循环结束标志位为ON。
INT_1中断程序:在发送超时情况下禁止发送中断和发送定时中断, 置PLC为STOP模式。
I N T_1 0中断程序:禁止发送完成中断, 启动接受定时中断INT_0和接受数据中断程序INT_11。
INT_11中断程序:若接受的首字符 (从工作站地址) 为从工作站的正确地址, 则建立一个接受字符的地址指针。并把接受到的字符装入到接受字符指针指出地址中。增加指针的数值, 指向下一个地址。并启动中断程序INT_12。
INT_12中断程序:把接受到的第二个字符 (功能码) 装入到接受字符指针指出地址中, 增加指针的数值, 指向下一个地址。启动中断程序INT_13。
INT_13中断程序:把收到的第三个字符 (字节数) 装入到接受字符指针指出地址中, 并修改指针值。第三个字符为接受的不含CRC校验码字符的总数目, 剩余接受字符数目为将字节数加2, 若反馈的功能码为十六进制数0F, 全部剩余字符数目为5。将全部剩余字符数目置入到累加器AC1中, 当累加器AC1为零时, 接收字符也就完成。启动中断程序INT_14。
INT_14中断程序:将接受到的字符装入接受字符指针指出地址中, 并修改地址指针值和将将累加器AC1数值减一。若累加器AC1的数值为零。则关闭字符接受中断和定时中断, 并将远程循环结束标志位置ON。
4、结语
该系统自投入在线运行以来, 系统调节迅速且运行稳定, 并取得了良好的经济效果, 在助剂添加中具有较高的推广价值。
摘要:本文通过西门子公司的S7-200PLC与ABB公司ACS510变频器组成的某定量添加控制系统实例对MODBUS协议实际应用进行了介绍。
关键词:MODBUS,PLC,变频器
参考文献
[1]殷洪义.可编程序控制器选择、设计与维护.机械工业出版社, 2002年.
PLC通信协议 篇5
1 中波发射自动化控制系统的总体构成与功能
厦门广电集团发射中心202台中波发射自动化控制系统主要由受控系统、前端监控器、网络和系统服务器等四部分组成。网络结构的拓扑结构如图1。
总体采用现场分布式结构, 每个受控系统都有自己独立的前端监控器, 并在其监控下工作。受控系统由主/备发射机、同轴开关、假负载、音频矩阵及温控器等组成。
前端控制器采用OMRON公司生产的CS1H-CPU63型可编程序控制器, 它是实时监控系统中最基本、最核心的单元, 在整个系统中起着承上启下的作用。它能够脱离上位软件和网络连接而独立完成对受控系统的监测和控制, 对受控系统各种异常状态用不同的方式发出告警信号, 并能够存储开关机时间表等日常管理流程数据。
自动化控制系统的主要功能分为: (1) 基本控制功能 (远程控制及自动开关机等) ; (2) 开关量、模拟量的监测; (3) 开关机时间表的设定; (4) 与用户系统及服务系统的通信功能。其中前两项功能通过PLC通信协议宏来实现。
2 Thomcast公司M2W发射机提供的通信协议分析
M2W发射机的标准通信协议帧的格式分为:写控制帧 (控制量) 和读控制帧 (状态量) 。如下表, 我们把常用的一些常用的操作指令列出来。
2.1 写控制: (开关机控制量)
2.2 读控制: (机器状态量)
特别说明:在M2W发射机内部PLC是采用文件的格式存储机器信息的, 其中:N1——遥控连接的直接命令输入;N2——本地连接的直接命令输入 (发射机触摸屏) ;N3——发射机实际数据。N1文件在指令写入时发射机将做出反应, 从N3文件则可读取机器的实际数据进行监测, 通过对这两个文件的修改和读取来实现发射机的控制。
OMRON通信协议宏的简介与应用设计
3.1 通信协议宏概述
通信协议宏是PLC具有的一种通信控制功能, 用于为符合具有串行通信端口的通用外部设备的通信规范的通信协议创建宏。支持与几乎所有具有RS-232C或RS-422A/485端口外部通用设备的通信, 通过编制通信协议指令实现对外部通信设备的相应数据采集和控制。
CX-Protocol是创建协议宏应用软件。协议宏由通信指令系列组成, 支持硬件是PMSU (串行通信单元) 。CX-Protocol将协议宏传送至PMSU、通过CPU单元上的PMCR指令来指定协议宏的序号并执行通信序列。一个通信指令序列由若干步组成, 每个步由发送、接收或者发送与接收指令组成;可允许用户根据处理结果来重复、结束这些步或者对这些步生成分支。
3.2 通信协议宏的创建
根据上面的表格, 我们先将这些常用操作指令转换成发射机通信协议的指令帧 (即协议宏的通信报文) , 通信报文分为发送报文和接收报文, 包含有:报头、地址、长度、数据、错误检验码和终止符, 但每个字段不是必需的, 在发送报文中, 可以仅有数据字段 (实际上数据字段就已经包含有报头、地址、错误检验码和终止符) ;在接收报文中, 存在终止符时, 报头、地址、长度、错误检验码也可以不存在, 如果数据长度固定, 则终止符也可以不存在。
根据M2W发射机的协议说明, 无论在写或读操作, 发送完成后发射机均会返回一个响应帧, 如果出错则要求重发, 正确则发送“1006”确认该操作。
3.3 写控制帧格式
发送命令:
++
返回:响应++, 可这数据字体, 为写入N1中相应操作位的数据
以发送“开机”操作指令为例:100201090F008803AA020F89020001001003208d将N1中的“开机位”置“1”, 返回:1006100209014F00880310030dc4, 则再发送“1006”确定执行开机操作。如果返回“1005”或“1015”则重发操作指令。
3.4 读控制帧格式
发送命令:
+给出功能码和读取的范围和文件类型, 其它字段与写控制的相同。返回时, 字段为读取的机器状态数据, 可用W () 指令写入DM数据存储区。
由于读取范围要求不超过240字节, 机器的状态数据需要分三次才能全部读出, 如发送:100201090F000101A2EE118900001003e00f则返回1006100209014F0001++0010032864, 这样我们可以读取到0~240字节的数据, 其它数据读取修改范围即可。
3.5 协议宏的创建
协议宏的一个序列由最多16个步组成, 一个步包含一条命令操作, 该命令分为:“发送”、“接收”、“发送与接收”、“打开”、“关闭”、“刷出”或“等待”, 通过步中的“下一个过程/出错过程”来指定执行下一步。协议宏就是通过“步”发送和接收处理通信报文, 完成指令操作的执行, 所以创建协议宏可分两步完成。 (1) 首先, 将“开机”操作指令按写控制帧格式转换成协议宏的发送报文 (SendMessage) , SendMessage为:++
按图2设置相应字段并存储为Send Message1, 也可直接设置在数据字段里。
3.6 CX-Protocol软件操作
(1) 创建各报文:打开C X-Protocol软件, 从“File” (文件) 菜单中选择“NEW” (新增) 创建一个项目, 创建项目后从PLC菜单中选择“EditPC-PLCCommsSettings” (编辑PC-PLC通信设定) ;在项目文件下创建协议列表 (NewProtocollist) , 右键点击“Create/Protocol” (创建/协议) , 指定下列项:协议名称、序列起始号、序列结束号和目标;右键点击“Create/Sequence”编制协议序列, 指定下列项:链接字、传送控制参数、响应类型和监测时间 (Tr、Tfr、Tfs) , 一个协议序列对应一条M2W发射机操作命令;在通信序列中右键点击“Create/Step” (创建/步) , 指定下列项:重复计数器、命令、重试计数、发送等待时间、发送报文、接收报文、有/无响应写入、下一个过程和出错过程, 每一步就是一条协议指令。右键点击步列表中的“SendMessage” (发送报文) 或“ReceiveMessage” (接收报文) 字段, 然后从弹出菜单中选择“NewMessage” (新报文) , 将全部使用到的协议指令输入为通信报文, 必要时做好注释, 便于读懂程序。 (2) 创建矩阵:如果要根据不同的响应报文决定下一步执行的步 (Step) , 就需要创建矩阵来完成。右键点击“Create/Matrix” (创建/矩阵) 和“Create/MartrixCase” (创建/矩阵实例) , 预先设定可能返回的响应报文数据, 改变各响应报文的下一个控制步, 一个矩阵中允许最多设定15种报文。如图4, 写控制指令时, 可将“接收B“设为”1006, 下一步为发送“1006”确认;“接收C”为“1005”和“接收C”为“1015”, 下一步为重新发写指令。 (3) 传送项目:选中项目名称, 点击菜单ProtocolDownloadProtocol, 将以上创建的项目传送至PMSU (从个人计算机到PMSU) 。
3.7 创建梯形图程序
梯形图程序主要有按时间表自动试机、开关机程序和故障处理等程序。梯形图程序段较长, 这里主要介绍在梯形图中如何调用协议宏指令。在梯形图中通过使用PMCR命令来调用协议宏指令, 首先为PMCR指令分配一条功能代码, 然后执行PMCR指令。
如图5所示:控制字1为#02E1, 其中0为通信端口 (内部逻辑端口号0) ;2为端口2;E1为内插板 (串行通信板) ;控制字2为#2, 表示执行02号通信序列。第一个发送字为100, 发送数据首字 (DM100)
第一个接收字为200, 接收数据存储首字 (DM200) 。当“T机开机”位1213.14置ON并将协议宏执行标志 (1919.15:端口2) 置OFF时, 将调用PMSU上注册的02号通信序列, 从而在通信端口允许标志 (A202.00:使用0号通信端口的内部逻辑端口) 为ON的情况下经由PMSU的端口2发送和接收数据。
4 系统硬件连接与测试
4.1 PLC需要用到的两个通信连接
4.1.1 电脑CX-Protocol软件与PLC的编程连接
首先, 必须先用编程电缆将电脑CX-Protocol软件连接到PLC的CPU外设口或内置RS-232C口上, 然后, 设置PLC“设备类型”、和“网络类型”。
4.1.2 PLC通信板 (CS1W-SCB41-V1) 与受控通信设备的通信连接
(1) 将串行通信板 (C S 1 W-SCB41-V1) 插入CS1的CPU模块中, 设置终端电阻ON/OFF开关为“ON”及线制开关2线/4线拨到“4”的位置。将通信板 (CS1W-SCB41-V1) 上的端口2 (RS-422A/485) 与M2W发射机的RS-485端口连接。 (2) 制作通信板与发射机的数据连接线, 并连接好两端通信口。 (3) 根据M2W的通信协议参数设定为:协议:全双工;和检验:CRC;COM口:RS422;波特率:19200;每字位数:8;奇偶Parity:偶数;停止位Stopbits:1。
5 系统调试
CX-Protocol提供了数据跟踪和监测功能, 当执行数据跟踪操作时, 从该点开始, 串行通信板对发送/接收报文中按时间顺序排列的数据执行跟踪记录, 通过跟踪发送或接收数据和信号, 可根据步来检查发送或接收和各条报文的内容并将其与预设的序列进行对比, 查找程序的出错原因。笔者在调试中体会到在使用通信协议宏时, 必须注意下面几个问题, 否则可能会造成通信失败。 (1) 执行PMCR指令时, 最好使用上升沿微分触发PMCR指令, 否则可能引起各条指令间的冲突。 (2) 根据实际测试发射机的接收和反馈时间, 设置发送完成监测时间Tfs为0.2S、接收等待监测时间Tr为0.2S和接收完成监测时间Tfr为0.4S, 既能保证指令的完整发送, 又节省等待时间, 并可以防止协议宏进入死锁状态。 (可参考操作手册中监测时间的计算方法) 。
6 出错处理
PLC设置有特殊辅助区, 存储PLC运行状态, 协议宏在发生以下任一错误时, 根据设定的重试计数自动重复执行同一个步 (最多3次) : (1) 监测时间 (Tfs、Tr、Tfr) 已过。 (2) 发生了接收通信错误。 (3) 接收报文不正确。 (4) 校验码存在错误。
发生异常时, 可通过这些状态了解异常情况, 并可应用这些状态位进行程序保护。以CS1为例常用的有:
7 结束语
通信协议宏不单可以实现对中波发射机房M2W发射机的自动化控制, 而且还可以应用在各种具有串行通信端口的设备上;如果采用RS-422A/485串行通信端口, 还可以实现1:N控制 (最多32部) 外部通信设备。此应用系统在我台投入运行以来, 能安全、稳定、可靠地工作, 整个控制系统灵活、方便、一体化控制, 大大提高了广播播出系统自动化、网络化的管理水平, 具有很好的实用性和行业中的推广价值。
参考文献
[1]OMRON.SYSMACCXProtocol1.9版CXONE-AL@@C-V4/AL@@D-V4操作手册, 2010 (2) .
[2]OMRONCORPOTAION.SYS MACCSSeriesProgrammableControllers ProgrammingManmal, 2003.
[3]Thomcast.M2W中波发射机技术手册, 1998 (4) .
PLC通信协议 篇6
Modbus协议是由美国MODICON(莫迪康)公司于20世纪80年代末开发,有Modbus-RTU、ModbusASCII和Modbus-TCP 3种通信方式,其中ModbusRTU、Modbus-ASCII使用RS-232、RS-422和RS-485串行接口进行传输。Modbus协议具有良好兼容性和开放性,为各产商生产的工业控制器(如工控机、PLC、变频器和各种智能仪器仪表等)所采用,用于控制器相互之间、控制器(经网络)与其它设备之间的通信。常用的变频器品牌如ABB、三菱、海利普、东芝、LS、台达和安邦信等都兼容Modbus-RTU通信协议,这为变频器使用功能的扩展提供了空间,也为以电动机为重要执行元件的工业自动化控制系统的进一步发展提供了有力支持。
1 Modbus-RTU协议信息帧
1.1 Modbus-RTU协议信息帧格式
Modbus-RTU协议常用功能信息帧格式如下:
(1)读取保持寄存器数据(H3或者3),查询信息和响应信息分别见表1、表2。
(2)向保持寄存器写入数据(H6或者6),查询信息和响应信息分别见表3、表4。
(3)向连续多个保持寄存器写入数据(H10或者16),查询信息和响应信息分别见表5、表6。
Modbus协议通信采用主从通信技术,允许主机与一台或多台从机通信。每次通信均由主机通过信息帧发出请求信息,从机收到正确无误的请求信息后,通过响应信息帧返回相应的数据或状态信息以响应主机请求。信息帧是主机与从机之间进行Modbus-RTU协议通信的基础,由地址信息、功能信息、数据信息和错误校验信息4个部分按一定顺序组成,各信息数据分别存放在8位十六进制字节中。从机地址是从机唯一的通信地址,可设定值为1~247,0为主机对全部从机进行广播,从机不响应。功能代码是主机对从机的要求,从机根据要求执行相关动作。Modbus-RTU协议支持技术规范中规定从零开始寻址空间,所以在设定从机Modbus-RTU协议分配的保持寄存器开始地址时,实际的地址是设定开始地址的数值加上1。
1.2 出错校验CRC码
Modbus-RTU协议为保证主机和从机之间的通信信息完整正确,在信息帧中加入出错校验CRC码。出错校验CRC码使用16位循环冗余的方法,占用2个字节,包含了一个16位的二进制值。CRC值由主机计算出来附加到信息帧上,从机在接收信息时重新计算CRC值,然后与接收到的CRC值进行比较,如果这两个值不相等,说明信息帧有错误。在自动控制系统中,各种通信信息在传输中经常受到电噪声、电磁干扰以及其它干扰,数据和控制指令可能会发生一些改变,使控制系统产生异常。Modbus-RTU通信协议在信息帧中加入出错校验CRC码,能够保证从机不去响应或执行在传输过程中发生改变的数据和指令信息,大大提高了系统的安全性和效率。生成16位循环冗余出错校验CRC码的步骤如下:
(1)设置一个值为H0FFFF(即全部位均为1)的16位寄存器,称之为CRC寄存器。
(2)把第一个8位字节与CRC寄存器低位进行异或运算,将运算结果储存在CRC寄存器中。
(3)把CRC寄存器中的位向右(低位方向)移一位,最高位用0填补,检查最低位的值。
(4)如果最低位的值是0,则重复第(3)步;如果最低位的值是1,则将CRC寄存器与多项式HA001(1010000000000001)进行异或运算。
(5)重复上述第(3)步和第(4)步,直至CRC寄存器共向右移8位,这时一个8位字节的数据处理完成。
(6)重复上述第(2)步到第(5)步,进行下一个8位字节的处理。
(7)重复上述第(2)步到第(6)步,直到将信息帧所有字节均与这个CRC寄存器进行过异或运算。
(8)最后这个16位CRC寄存器中的值即为2个字节CRC校验码。
三菱FX1N系列PLC生成CRC码的程序如图1所示。
2 Modbus协议通信系统组成
Modbus-RTU协议通信系统组成如图2所示,由ABB ACS510系列变频器、三菱FX1N系列PLC和三菱FX1N-485-BD通信板组成。PLC通过RS-485通信板用屏蔽双绞线连接到变频器内置RS-485接口上,构成Modbus-RTU协议通信的传输通道。根据控制系统的作用和目的,在变频器上设定好Modbus-RTU协议通信参数和其它相关参数,并向PLC中输入已编写好的包含Modbus-RTU协议通信程序在内的控制程序后,PLC和变频器之间就可以进行Modbus-RTU协议通信。Modbus-RTU协议通信使用专用的信息帧,在主机PLC与从机变频器之间进行串行通信。PLC发出查询信息帧,变频器接收到正确的查询信息后向PLC返回发送响应信息帧,并执行查询信息帧所要求的功能。当变频器接收到异常的查询信息时,就返回错误响应信息帧或者不返回响应信息帧,同时不执行查询信息要求的功能。信息帧具有读取数据和写入数据的功能,使PLC不仅能够写入或读取变频器的参数,还可以对变频器发出控制指令并确认其运行状态,这样PLC就可以全方位监控变频器的运行。
3 ABB变频器通信参数设置
为确保ABB变频器与PLC之间的Modbus-RTU协议通信正常畅通,需要对变频器的相关参数进行设定,如表7所示。ABB ACS510系列变频器需要设置与Modbus-RTU协议通信相关参数组:Group98可选件,激活Modbus-RTU协议RS-485串行传输通信;Group53内置通信协议,定义内置现场总线(EFB)通信协议的配置;Group16系统控制,定义系列系统控制参数(如锁定、复位和使能控制等);Group14继电器输出,设定每个输出继电器动作条件;Group13模拟输入,设定模拟输入的限幅值和滤波时间;Group11给定选择,选择、设定外部给定1、2的来源和性质;Group10输入指令,定义控制起动、停止和方向的外部控制源,电机方向锁定或允许电机正反转。其它变频器参数根据电机的工作环境、使用用途等因素进行设定。
4 PLC程序设计
三菱FX系列PLC通过RS-485串行通信传输方式与变频器进行Modbus-RTU协议通信,RS串行数据传送功能指令是FX系列PLC进行发送和接收串行数据的功能指令。在RS功能指令驱动前,要对RS功能指令通信数据传送格式的特殊数据寄存器D8120进行设定。设定值是与ABB ACS510系列变频器的通信参数设定相对应的H0C99,即RS-485接口,无起始符和终止符,传送速度19200bps,2位停止位,无奇偶性,数据长度为8位。Modbus-RTU协议通信信息帧中的信息和数据是以8位字节形式传送的,要使PLC中的8位处理模式特殊辅助继电器M8161保持常通。每次用RS功能指令发送数据的同时,要用脉冲指令置位串行通信发送标志特殊辅助继电器M8122,发送结束后M8122将自动复位。在串行通信接收完成标志特殊辅助继电器M8123触点动作前,先要将RS功能指令接收的数据传送到其它的PLC数据寄存器中,再对接收完成标志M8122进行复位。PLC通过RS功能指令接收到从变频器返回来的数据,分别存放在高、低位数据寄存器中,因此要对接收到的数据进行合成处理,并将其传送到另外的数据寄存器中存放。ABB ACS系列变频器还支持H17(或者23)读/写多个保持寄存器功能码指令,即由H3(或者3)读保持寄存器功能码指令和H10(或者16)写多个保持寄存器功能码指令合成的一个复合功能码指令。在编写与ABB变频器的Modbus-RTU协议通信程序时,采用H17(或者23)读/写多个保持寄存器功能码指令,可以大大简化通信程序,提高编程效率。
5 结语
变频器与PLC之间的Modbus-RTU协议通信,改变了以往变频器单纯接受PLC发出的开关指令和模拟信号的模式,使变频器几乎所有输入控制信息和数据均可来自现场总线。同时,变频器根据PLC的要求,将当前运行数据和状态传回给PLC,并通过PLC上传到自动控制系统中的显示终端、上位机,或者由PLC通过网络上传到中央控制系统。这为工业控制从单机控制走向集中监控、集散控制,以及工业控制器联网进行网络化监控管理提供了进一步的支持。
参考文献
[1]ABB公司.ACS510用户手册.2007
[2]三菱公司.FX1N系列微型可编程控制器使用手册.1999
PLC通信协议 篇7
关键词:MODBUS,信捷PLC,VB
引言
目前石化公司引进的芳烃联合装置, 其中的化工吸附分离过程是一个比较复杂的过程, 一旦过程发生故障, 会引起产品质量问题。为保证生产过程的安全稳定、必须实现生产过程的实时监控。本控制系统底层系统下位机采用信捷XD3 PLC, 上位机采用工控机, 上下位机通过MODBUS协议实现通信[1], 在PC端能在用户界面上采集数据、数据处理及控制信号的产生与传输。
1 控制装置构成
化工吸附分离底层控制装置中的下位机采用XD3-60RT-E, 其任务是对化工吸附分离设备的进料出料进行控制, 对过程进行监督, 发生故障时上位机可以观察到, 并且及时的进行报警工作。上位机采用PC, 利用VB开发的界面与PLC实时通信, 对对化工吸附分离设备进行实时监控。XD3 通过编程电缆与工业PC进行通信。
2 通信协议
PC与XD3 PLC的MODBUS通信, 采用主从应答方式, PC为主机, PLC为从机[2]。PC根据化工过程中的需要向PLC发出读写命令, PLC在接收到PC的指令后, 回应PC的指令。在PC中, 必须根据MODBUS协议编写通信程序。
2.1 RTU模式
通信格式采用MODBUS-RTU通信数据格式, 当设备使用RTU模式在MODBUS串行链路通信, 报文中每个8 位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度, 在相同的波特率下比ASCII模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU模式帧检验域采用循环冗余校验 (CRC) [3]。
RTU模式帧如表1 所示。
2.2 通信地址
00H:所有信捷XC系列PLC广播 (broadcast) ———广播时候下位机不回复数据。
01H:对01地址PLC通讯。
0FH:对15地址PLC通讯。
10H:对16地址PLC通讯。以此类推, 最大可到254 (FEH) 。
2.3通信功能码
通信功能码如表3所示
2.4通信的信息格式
3 PC的软件设计
3.1 MSComm的配置
微软公司的MSComm控件可以容易地完成对串口的读写。在进行编写通信程序时候, 首先对MSComm控件属性进行设置, 对通信端口进行初始化, 将通信口的初始化程序放在窗口装入事件Form_Load () 中[5]。
3.2 通信口发出设置命令
在化工吸附分离系统中, 我们需要对温度进行控制, 可以通过上位机设定所需要控制的温度。以上位机对PLC的D2 写数据为例, 点击监控界面的复选框, 触发Check1_Click () 事件, 将所需要控制的温度写入1 号站PLC中。
4 结束语
通过PC与XD3 PLC的MODBUS通信程序的设计方法, 一台PC可以和很多台PLC进行通信, 采集到不同PLC的数据, 监控到不同PLC的运行情况。使用该方法可以降低控制设备的成本, 在实际的应用中, 该通信稳定可靠、经济实用, 可以很方便的对化工吸附分离进行监控和管理。
参考文献
[1]汪正果.MODBUS协议在S7-200PLC与PC机通信中的应用[J].煤矿机械, 2010.
[2]陈铭.基于MODBUS协议的设备和PLC实现通信的研究[J].湖南科技学院学报, 2009.
[3]潘洪跃.基于MODBUS协议通信的设计与实现[J].计量技术, 2002.
[4]信捷电气股份有限公司.XD系列可编程控制器用户手册[指令篇] (XD/XDM) [Z].信捷电气股份有限公司, 2013.