minitii转换器通讯协议简介
在这个方案中,minitii与下位设备的硬件连接为双绞线,minitii及下位各设备都并入双绞线组成的westinghouseincom网络,在该网络中各通讯主体使用二进制通讯方式,数据帧均由33位二进制数构成,minitii充当主站(master)角色,对下位各设备发起通讯,进行轮询。
pcm311模块与minitii转换器进行的是ascii码通讯方式,而minitii转换器与下位dt3000、mp3000、iq200各系列设备的通讯方式为二进制码通讯,实际上minitii所起到的作用是将pcm模块发出的ascii码指令帧转译为二进制码指令帧,当然,在通讯过程中,我们只需关心ascii码通讯帧的格式,minitii会自动将其转为二进制格式后发到incom网络中去。
minitii模块的25针rs232串行口接收的ascii码帧由10个ascii码字符组成,分为控制指令帧、数据指令帧两类,大致形式如下:
控制指令:
(stx)(c/d)(inst)(comm)(scomm)(address)(sumcheck)
数据指令:
(stx)(c/d)(data)(sumcheck)
stx:第2号ascii码,占一位
c/d:控制指令时为1,数据指令时为0,占一位
inst、comm、scomm:由这三个数字需要返回的参数,各占一位
address:指令的发送对象,是一个三位数的十六制数,占三位
sumcheck:和校验码,占二位
data:返回的数据信息,占六位
minitii串行通讯参数在其面板上通过开关来选定。
2.2fx2nplc通讯协议简介
fx2n是三菱品牌plc在小系统控制应用中使用较多的一种经济型plc,外部设备通过232bd、485bd等插件或485adp等模块可与其建立ascii码串行通讯,读取plc内部寄存器的值。其协议格式如下:
(1)读寄存器
*外设:(enq)(站号)(pc号)(命令字符)(等待时间)(头元件)(元件数)(和校验)
*plc:(stx)(站号)(pc号)(返回数据)(etx)(和校验)
*外设:(ack)(站号)(pc号)
(2)写寄存器
*外设:(enq)(站号)(pc号)(命令字符)(等待时间)(头元件)(元件数)(写出数据)(和校验)
*plc:(stx)(站号)(pc号)
*enq、stx、ack、etx:为相应的ascii码
*站号:plc的站地址,为两位十六进制数(00-0fh),由plc的d8121寄存器
*pc号:用于a系列melsecnet网络中的plc,对fx2n均为ffh
*命令字符:分为位读(br)、位写(bw)、字读(wr)、字写(ww)
*等待时间:以10ms为单位,以十六进制数表示,占一个字符(0-f)
*头元件:为要读、写的开始元件号,如m0001、d0000等。
*元件数:为要读、写的元件个数。
*返回数据、写出数据:为从plc返回的寄存器值或要写到plc的数据值
由于fx2n与*控制柜距离较远,故本系统中采用fx2n与485bd插件,pcm311模块经232/485转换器与485bd相连,转换器与485bd之间采用两对双绞线相连,全双工方式通讯,plc串行通讯参数在d8120中设定。
2.3megabasic的语法简介
(1)串口操作:pcm模块共有二个串口,它们均可在megabasic程序中被打开,与外部进行通讯,以下为常用的串口操作函数。
*串口的打开:open,
如open#8,“com1”
*串口的关闭:close
如close#8
*串口通讯参数的设定:ioctl,
(2)ioctl_string格式为:
baud(波特率),parity(校验),databits(数据位),stopbits(停止位),flowctl(流控制方式),physical(物理协议如232/485/422),duplexmode(通讯模式,半双工/全双工)如ioctl#8,“19200,n,8,1,n,232”
(3)从串口读取数据:inchr$(,,,,)
如restr=inchr$(ch%,10,“”,0,timeout%)
(4)向串口发送数据:print,
如print#8,“helloworld”
(5)megabasic程序对plc寄存器的访问:
对于pcm模块所在的plc系统中的寄存器如%i,%q,%r,%m等,basic程序中并不可直接引用,而需通过使用特定的功能指令来访问它们。
a)访问plc寄存器之前,先要使用syslink指令。
syslink,,[type]
local_name:basic程序内部定义的变量
cpu_symbol:plc的寄存器名,外加双引号(如“%r500”)
type:关联数据的类型,如bool,byte,int16,uint,dint等
b)读、写plc寄存器
sysread
syswrite
在syslink指令执行后,即可使用上面两个指令分别读、写basic变量所关联的plc寄存器。
2.4系统编程过程简介
根据minitii通讯协议及megabasic语言的基本语法,在文本编辑器(如记事本)中写好大致的程序,特别是对返回数据的解析编写专门的函数来进行处理,以得到浮点数形式的电压、电流、功率等数据,其中重点要注意好对返回错误帧时的处理,还有采集不同数据时的协议上的差别,这一部分程序写好后,利用pcm模块的com1通过logicmaster软件导入pcm模块,用com1监视运行,用com2通讯,进行联机调试,根据调试情况加以修正完善,得到终版本。
类似上述步骤,根据fx2n的通讯协议,写好与fx2n通讯的程序,用com1监视运行,用com2通讯,经调试修正,得到终版本。
将两个版本的程序合并,并将与fx2n通讯的端口改为com1,去掉程序中用于监视运行的输出语句(print),再重新导入pcm模块中,一个满足系统要求的完整的通讯程序就这样就写成了。
3、结束语
用类似本系统中的pcm模块完成通讯任务,笔者认为其相对利用plc梯形图程序进行通讯优点很明显。首先由于其使用的是与微机系统中的basic语言语法相同的高级语言,易学易懂,处理复杂的数据运算时得心应手,在复杂的有大量通讯任务的系统中有很重大的推广价值;再者在系统调试时也有明显优势,一个端口正在通讯时,一个端口实时监视程序的运行情况,并可以自然语言的形式输出实时的调试信息,plc程序就不会有这么好的效果,那么结果是这种系统的开发周期必然大为缩短。
plc系统中采用basic语言的协处理器,笔者认为这是plc应用中一个新的发展,对简化编程,减轻工控系统*的开发压力可起到较大的作用,据了解,很多plc厂商都有类似功能的模块生产,如三菱公司就推出了ad51h高速智能通信组件,使用ad51hbasic语言,支持四个通信口,具备384k内存,大大提高了plc系统数据通信与收集方面的灵活性。
1.4 S7-200 CPU及模块参数
在样本或手册中都列有 CPU和各个模块的详细参数,这些参数对于我们使用和选型至关重要。
1.4.1 CPU参数
表 1.1列出了 CPU部分参数,其中一些关键参数详述如下:
? 程序存储器:是一个 ROM存储区,程序下载到 CPU内掉电不会丢失。当我们编写好程序编译通过后,程序的大小会在软件输出信息里显示,如图 1-16,实际程序的大小不能超过 CPU此参数。一般情况下,当我们下载程序时,CPU需要停机,但在某些场合是不允许 CPU停机
的,要实现这个功能需要占用一定的程序存储器空间,所以此参数有两个数值,当我们使能了“可在运行模式下编辑”功能,会牺牲一些程序存储器空间。
? 数据存储区:是一个 RAM存储区,掉电后易丢失。指的是 CPU内部的 V存储区的大小。
? 掉电保持时间:对于存放在 RAM存储区的数据,掉电后是靠 CPU内部一个超级电容保持数据。此参数指明了该电容能保持数据的时间长度。
? 本机 I/O:CPU本体上集成的输入/输出点数。特别地,只有 CPU224XP有集成的模拟量输入/输出点,其他只有数字量输入/输出点。
? 扩展模块数量:模块的扩展不是无限制扩展的,CPU221不能扩展模块,CPU222只能扩展 2个模块,其他型号 CPU多能扩展 7个模块。对于模块的扩展数量,除了这个参数的限制以外,特别注意还要计算CPU的供电能力。表 1.5列出了各型号 CPU的供电能力。CPU每带一
个扩展模块,扩展模块都要消耗一些 CPU的供电。CPU的电源有两种,一种是 5VDC,是 CPU与扩展模块通讯用的电源,不能外加;另一种是 24VDC,是普通的 24VDC电源,可以外加一个开关电源代替。所以,在计算时,主要考虑 CPU的 5VDC电流供应能力即可。各个模块的电流消耗可在模块参数表内查到。比如,32输入/32输出的 EM223模块,消耗 5VDC电流 240mA,如果 7个这样的模块就要消耗 240 * 7 = 1680mA电流,即使是 CPU226也不能扩展 7个这样的模块。表 1.6 – 表 1.9列出了各个扩展模块的电流需求。
西门子PLC 6ES7 153-2BA02-0XB0 西门子PLC 6ES7 153-2BA02-0XB0