6ES7222-1HF22-0XA8诚信经营
西门子S7-200的自由口通信需要通过编程设置串口的工作模式,安排发送和接受指令的触发顺序,还要设定接收的起始和结束条件。对于刚刚开始使用s7-200的工程师来说,的确有很多细微处易犯错误。一般碰到客户抱怨通信不上的问题,就要逐一帮客户确认编程配置是否正确。麻烦,逐条查下去,总能查到错误所在并解决问题。有一次客户遇到的问题颇出人意料,还真耗费了一些时间。
客户反应在编写了自由口通信程序之后,PLC可以发送数据给通信伙伴,却收不到任何伙伴方发出的数据。能发送数据给对方,说明通信端口设置没有问题。极有可能是端口被其他通信指令占用导致无法进入接收状态。比如说用常开点调用XMT,或者没有对接收的故障状态进行判断并终止接收,从而导致后续的XMT和RCV都无法被正确执行。客户表示他的程序并不存在这种情况。为了测试问题所在,客户下载了一个仅包含条件触发RCV的程序下去,还是接收不到数据。监控程序RCV指令已被正常执行。
那么是不是接收的起始条件设置不当?客户使用的是起始字符,这并无不妥。并且改成空闲线检测之后,问题依然存在。难道是对方发送的信号有问题?用串口调试软件来测试,是可以接收到的。眼见这几个常见错误都没能cover住这个问题,我只好从头一步步地跟客户确认。还是没能发现任何破绽。郁闷之下,只好让客户把程序发过来看看。
次检查程序的时候还真没注意到问题出在哪里。等到看出来了才觉得啼笑皆非:
不知道大家看出来没有?客户在设定完空闲线时间SMW90和消息定时器溢出值SMW92后,惯性地将接受地大字符数SMB94也写成了传送字SMW94。而西门子PLC的高低字节是逆序的,也就是说SMB94为高有效字节,SMB95为低有效字节。见手册中的如下说明:
结果就是大字符数100被传给了SMB95,SMB95是神马呢?神马也不是,总之与接收条件无关。而真正大字符数存储字节SMB94被赋值为0。大字符数都为0了,那当然是接收不到任何数据了。小马虎一下就耽误了这许多时间,各位看官引以为戒吧!
在使用西门子S7-200时,在不增加其它通讯接口模块时,紫金桥软件可以通讯PPI协议与S7-200直接通讯。但这种通讯方式由于受通讯协议本身限制,在通讯数据较多时,通讯速度相对较慢,使用Modbus协议则通讯速度可以提高约一倍。下面就介绍一下怎么使用Modbus协议建立S7-200与紫金桥软件之间的通讯:
硬件连接在使用Modbus协议时,计算机与S7-200之间通讯直接使用PPI通讯电缆即可。但如果通讯距离较远,或者需要将多个S7-200连接到一个通讯总线上时,我们可以通过如下方法配制通讯链路。
选配一个计算机通讯端口
由于S7-200通讯端口物理层使用的是RS-485通讯规范,我们需要在计算机端增加一个RS-485通讯端口,才能与计算机通讯建立通讯。如果计算机闲置的串口,我们可以选配一个RS-232转RS-484转换器即可;如果没有闲置的串口,我们通过在计算机中增加一个RS-485通讯卡也可以;现在很多计算机都有USB口,我们也可以在计算机上外接一个USB转RS-485转换器。
连接通讯电缆
S7-200的通讯端口是一个9孔(famel)D型插头,针脚分布如下所示:
针脚
信号
1
地线 (RS-485 逻辑地)
2
24 V 地线 (RS-485 逻辑地)
3
信号B (RxD/TxD+)
4
RTS (TTL level)
5
地线 (RS-485 逻辑地)
6
(空)
7
24 V 电源
8
信号A (RxD/TxD-)
9
通讯选择
S7-200通讯端口(端口0)与RS-485板卡或RS-485/RS-232转换器之间接线,如下图所示:
S7-200编程及设置
在缺省情况下S7-200的通讯端口是不支持Modbus协议的,要想实现Modbus通讯必需在PLC的主程序模块中调用Modbus通讯子程序。Modbus通讯子程序可以从“STEP7-Micro/WIN Add-On: Instruction Library (STEP7-Micro/WIN附件:指令库)”中获得。在安装了“STEP7-Micro/WIN附件:指令库”后,在导航树“指令/库”下面我们可以找到“ModbusProtocol”。在其下面包含了MBUS_INIT和MBUS_SLAVE两个子程序,MBUS_INIT用于对Modbus通讯进行初始化,MBUS_SLAVE用于在指定端口上提供Modbus从站通讯服务。下在介绍如何在主程序中调相关子程序及环境参数设置:
调用Modbus通讯初始化命令为MBUS_INIT命令建立一个触发条件(只触发一次),如:SM0.1;从导航树“指令/库/ ModbusProtocol”下面,将MBUS_INIT指令拖拽到主程序块中。再就是正确设置MBUS_INIT各项调用参数和执行结果输出地址,我们可以建立一下如下图所示初始化调用过程:
Mode:协议类型,1-Modbus协议;0-PPI协议。
Addr: PLC地址,1~247,。
Baud: 通讯波特率,1200、2400、4800、9600、19200、38400、57600或11520。
Parity: 校验方式,0-无校验;1-奇数校验;2-偶数校验。
Delay:信息结束超时时间,0~32767,有线连接设置为0即可。
MaxIQ:0~128,映射在离散输入寄存器或离散输出寄存器中的I或Q数。建议为:128。
MaxAI:0~32;映射在模拟输入寄存器中AIW数;CPU 221为0,CPU 222为16,CPU224、226和226XM为32。
MaxHold:V内存映射在保持寄存器中的寄存器数。
HoldStart:V内存的映射时的起始地址。
Done:初始化指完成时,输出为开状态;开关量(Bit)。
Error:初始化错误代码,请参阅Modbus从机协议执行错误代码;输出为字节。
调用Modbus从机通讯命令初始化完成后,就可以调用Modbus从机通讯命令(MBUS_SLAVE)了。通常Modbus从机通讯命令在主程序块的每个执行周期都要初执行(始终保持通讯状态),因为可以用一个常开量作为命令的触发条件,如:SM0.0。从导航树“指令/库/Modbus Protocol”下面,将MBUS_SLAVE指令拖拽到主程序块中。调用过程如下图所示:
Done: 当MBUS_SLAVE指令响应对Modbus请求时,"Done"为开状态。没通讯请求时"Done"为关状态。
Error:指令执行结果。只有"Done"为开状态时,此状态有效。请参阅Modbus从机协议执行错误代码;输出为字节。
库存储区分配在完成前面两个指令调用后,还要为库指令使用的符号分配内存。当库指令被插入到主程序块中,在导航树“程序块”下会出现一个“库”节点。在“库”节点上点击鼠标右键,在弹出菜单中选择“库存储区”,进入“库存储区分配”对话框。
在地址框中输入分配内存的开始地址,或者通过点击“建议地址”按钮自动分配内存。注意,分配的内存不要与已使用的内存重叠。
紫金桥软件组态完成PLC编程和配制后,还要对紫金桥软件进行配制,这样才能获取、处理、查测、存储和显示相应的数据。组态过程分为两个步骤:(1)设备组态,即建立一个与PLC相对应的逻辑设备;(2)点组态,即建立过程数据库点的过程参量与PLC中变量的对应关系,从而利用点的自身功能进行处理、检测和存储。当然要将过程数据在计算机上展现给用户,还要进行交互界面(窗口)组态。但这一过程对所有应用是相同这,这里就不介绍了。
设备组态设备组态就根据PLC使用的通讯协议及在网上的节点地址、端口属性等对通讯参数进行定义的过程。
进入紫金桥开发环境,将导航树切换到“数据库”,在导航树上选择“设备驱动/MODBUS/
MODBUS(ASCII&RTU串口通讯)”,单击鼠标右键,在单出菜单中选择“增加设备驱动”会弹出发下所示对话框:
在对话框中输入设备名称、设备地址(与PLC中MBUS_INIT初始化的Addr参数一致),选择串口号,并且设置(点击“设置”按钮)端口属性,使用它与PLC中MBUS_INIT命令设置的属性一致。点击“下一步”:
在Modbus设备定义对话框中将协议类型选择为“RTU”,存贮器类型选择“32位”(即长整和浮点型4字节的数据的传送格式为高位在前,低位在后)。单击“完成”按钮,则设备组态完成。
点组态及I/O连接完成了点组态还要进行点组态I/O连接,这样才能将PLC中的变量映射到紫金桥软件中。
进入紫金桥开发环境,将导航树切换到“数据库”,在导航树上双击“点组态”,进入点组窗口:
选择点类型,建点,设置常规参数是点组态的基本操作,对所有应用是相同的,这里就不详细说明了。下面重点介绍一下I/O连接及与变量对应关系。
这里以模拟I/O点的I/O连接为例。新建一个模拟I/O点后,输入点名,切换到“数据连接”属性页:
从该属性的设备列表框中选择在上一步骤中建立的设备(如:MOD),点击“增加连接项”按钮,进入“Modbus组点对话框”:
这里的“内存区”、“偏置”和“数据格式”是与PLC中部分内存类型和地址相对应的。对于在Modbus协议中不能对应的PLC内存类型,如果需要上传到过程数据库中,可以先它们先移动到V内存区,再通过V内存区读取。S7-200内存区与紫金桥I/O连接对应关系如下所示:
S7-200地址
紫金桥软件I/O连接
内存区
偏置
Q0.0
DO离散输出量
0
Q0.1
1
Q0.2
2
……(Qm.n)
……(m*8+n)
Q15.6
126
Q15.7
127
I0.0
DI离散输入量
0
I0.1
1
I0.2
2
……(Im.n)
……(m*8+n)
I15.6
126
I15.7
127
AIW0
AR输入寄存器
0
AIW2
1
AIW4
2
……(AIW2n)
……(n)
AIW62
31
Hold Start(如:VB0)
0
Hold Start+2(如:VB2)
1
Hold Start+4(如:VB4)
2
……
……
Hold Start+(HoldMax-1)*2
HoldMax-1
在完成存贮区和地址组态,还要注意一点就是数据类型一致性,只有类型一致才能从PLC上获得正确数据。我们可以从“数据格式”中选择格式。对于字寄存器我们也可以将它拆分为位,从而获得某个位的状态。
注:对新组态的数据库点只有重新启动后才会生效。
以上是对通过Modbus协议在紫金桥软件中获取S7-200PLC数据的使用方法的简单介绍,希望对大家使用紫金桥有所帮助。
电力线通信(PLC)半导体器件可以将普通电网转换为通信网络,进而实现智能电网。这种网络将电力公司与他们的客户连接在一起,使家庭具有能量意识(“智能家庭”),并能够对电网上的状态作出反应。这包括了连接智能电表、智能电网监视器和街灯。
由于存在强烈的噪声、不断变化的状态以及设备与标准的差异,在电网上实现通信非常困难。在这种极具挑战的环境中实现可靠的操作,以及与前期安装设备成功实现互操作都需要采用新的PLC技术。
定义PLC
电力线通信(PLC)也被称为电力线载波,涵盖所有使用电力线运载信息的系统。所有PLC系统工作时都会在配线系统上传送经过调制的载波信号。不同类型的PLC使用不同的频段,具体取决于电力配线的信号传输特性。由于电力配线系统的原始作用是传输交流(或直流)电力,电力线电路在配线系统上传播更高频率方面的性能非常有限。
PLC系统中的数据速率变化范围很大。较高的数据速率通常意味着较短的距离。工作速率为每秒几兆位的局域网(LAN)也许只能覆盖几米范围。
窄带电力线通信(NBPLC)是专门用于频率在500kHz以下的电力线通信传输的一个术语。特别是欧洲的CENELEC已将148.5kHz及以下的频率授权给了广为部署的PLC系统。
在这个频率范围内,高压传输线可以将数据传输数百米至几公里的距离。这时的数据速率比较适中,在1kbit/s至200kbit/s范围之内。这些速率非常适合遥感遥测、数据采集和控制应用。
窄带PLC应用
窄带PLC可以应用于需要与连接着电力线的设备双向通信的任何地方。由于不懈的节能努力在电力分配和管理方面形成了新的投资领域,现在的窄带PLC比以往任何时候都要流行。这种现象就是所谓的智能电网。
窄带PLC不是新生事物。但恰恰是近技术的发展、对机器到机器(M2M)连接不断增长的需求以及对更好的资源管理的认识才使得窄带PLC终获得了巨大的发展动力。
,窄带PLC常见的用途是将消费者连接到电力公司实现自动抄表(AMR)和负荷控制。这些系统一直是许多电力公司的,因为电力公司允许在他们控制的基础设施上传送数据。其它快速兴起的应用包括街灯控制(SLC)和智能电器等。
窄带PLC还开始在使用需要监视和控制的电气连接设备的许多其它应用中寻找用武之地。许多潜在性的应用案例包括自动贩卖机、太阳能电池、电动汽车充电等。
电力线通信(PLC)半导体器件可以将普通电网转换为通信网络,进而实现智能电网。这种网络将电力公司与他们的客户连接在一起,使家庭具有能量意识(“智能家庭”),并能够对电网上的状态作出反应。这包括了连接智能电表、智能电网监视器和街灯。
定义PLC
窄带PLC应用
智能电网:智能电网将采用电力线先进计量基础设施/自动抄表(AMI/AMR)技术。电力数据经过电力线传回到变电站,中继到电力公司主要办公室的中央计算机。这将被认为是一种固定的网络系统——由电力公司建立和维护并用于提供电能的配电网络。这样的系统主要用于电力抄表。一些提供商还连接煤气表和水表并馈进PLC类系统。电力线AMI/AMR系统远程实时读取客户电表,将数据传输到计费系统。AMI/ARM减少了抄表员每个月人工采集各种水电气表数据的需求。
智能灯光控制:街灯是城市重要的资产,可以提供安全道路、富有吸引力的公共区域,并增强家庭、商务和城市中心的安全。但街灯的运维成本一般都非常高,消耗大量的电能(几乎占整个城市电能消耗的40%)。将街灯和PLC连接在一起可以减少现场操作的次数,降低电能消耗,提高总的发光效率,并延长灯泡寿命。
智能家庭和电器:家庭自动化包括集中控制灯光、HVAC(加热、通风和空调)、电器和其它系统,从而提高便利性、舒适性、能效和安全性。由于家庭自动化系统的目标是将所有家庭电气设备相互连接在一起,PLC是一种理想的方法。
太阳能:光伏电池板(太阳能电池板)必须加以仔细管理才能提供佳性能,这涉及到利用通信实现遥控和实时监视。遥控用于控制电池板倾斜度以便大限度地提高光照量,还用于控制单个电池板或整个电池场。实时监视方便维护监视、检测硅劣化/电池替换需求、气候条件、盗窃以及输出功率和效率。
汽车至电网:随着智能电网部署的展开,上升的燃油成本以及更高性价比的电动汽车对电动汽车充电站提出了更多的要求。这种汽车至电网(V2G)基础设施的部署要求在充电站和计费与管理系统之间实现双向通信。PLC是理想的解决方案,因为它使用已经安装好的电力线,能够提供强大的安全性,并具有很大的扩容能力。
智能电网的网络特性
有许多变量影响智能电网网络的通信特性,其中网络拓扑和连接网络的负荷也许是两个重要的变量。这种可变性意味着没有哪两个电力线网络具有完全相同的传输特性。
通过电网通信信道实现增强的数据传送可靠性要求采用先进的通信机制来解决噪声问题。这样的机制还需要应付通信过程中被暂时或闭塞的许多频率。
为了适应噪声可变性,PLC设备必须能够估计带内噪声电平以及每个载频点的接收信号强度,通过修改通信频率和调制机制来确保可能佳的数据传输效果。通过测量带内噪声和每个频率点的接收信号强度可以为通信系统选出佳频率。
PLC技术
低压(LV)和中压(MV)网络主要采用以下三种窄带通信技术中的一种:单载波调制,如二元相移键控(BPSK)和频移键控(FSK);正交频分复用(OFDM);直接序列扩频(DSSS),再加上码分多址(CDMA)。
应用为广泛的窄带PLC解决方案使用相对简单但具有特别高性价比的FSK和BPSK调制技术。这些技术组成了多种具有互操作性的标准的基础,其中的是Lon和DLMS标准。
Lon在ANSI/EIA框架下实现了标准化,针对介质访问控制(MAC)层和物理层的标准号分别是EIA-709.1和EIA-702.2。DLMS在国际电子技术委员会(IEC)框架下实现了标准化,标准号是IEC62056和IEC61334。
为了确保在有噪声的环境中可靠工作,FSK和BPSK器件必须测量带内噪声电平以及每个频率点的接收信号强度,由软件为可靠通信选择佳频率。例如,Semitech公司的SM6401PLC收发器就可以估计带内噪声电平和每个载频点的接收信号强度,由软件为数据传输选择优频率。
通信技术的跨越式发展促进了更先进调制技术的开发和部署。例如,OFDM被证明特别高效,因为它能适应有噪声的环境,可以在CENELEC工作频段上实现更高鲁棒性、更强功能的通信网络。OFDM为PRIME联盟和G3-PLC等新标准的制订奠定了坚实基础。
Semitech公司开发的SM2200是专门为支持低压(<100V)和中压(1kV至33kV)配电网络上的应用开发的先进OFDM解决方案之一(图1)。SM2200可以处理速率高达175kbit/s的数据,它将54个载波组成了18个独立的信道。
配电网络上的应用开发的先进OFDM解决方案之一
OFDM及OFDMA提升智能电网通信质量
OFDM在有噪声的信道(如电网)上发送大量数字化数据。OFDM将信号分成多个更小的子信号,用不同(正交)的频率发送出去。每个更小的数据流再映射到各个数据子载波,并使用某种形式的相移键控(PSK)或正交幅度调制(QAM)(如BPSK或正交相移键控(QPSK))进行调制。
除了具有很高的频谱效率外,OFDM系统还能减少信号传输中的串扰。OFDM还能高效地克服由多径效应造成的干扰和选频衰落。
OFDM可以解决有噪声的智能电网环境中的通信问题,但与在这些非常恶劣的条件下实现可靠通信还有点距离。为了提升可靠性,OFDM方法可以与多址机制结合起来实现正交频分多址(OFDMA)。
在SM2200中,OFDMA的多址技术是通过将子载波的子集分配给各个数据流实现的(图2)。这样可以传送多个单独的数据流。
通过将子载波的子集分配给各个数据流实现
OFDMA改善了OFDM在抗衰落与干扰方面的鲁棒性。但更重要的是,单独的数据流可以用来与多个节点(电表)通信,或者通过冗余特性显著提高系统可靠性。
本文小结
恶劣的噪声、设备的变化以及不同标准使得电网通信十分困难。可靠的通信机制可以通过增加带宽和减少数据包重试次数提高吞吐量。这对智能电网实现来说特别重要,因为集中装置可以与更大数量的电表进行通信。这种吞吐量可以支持多种日常抄表,能对电网实现更好的控制。
像BPSK和FSK等传统PLC技术在这些充满噪声的环境中是不够用的,这促使人们对OFDM调制解调器产生了浓厚的兴趣,因为它们能极大地改善通信带宽和可靠性。多址信道(或众所周知的OFDMA)可以将子载波的子集分配给单独的数据流,进而提供更大的频率灵活性