第27章 通信Word文件下载.docx
《第27章 通信Word文件下载.docx》由会员分享,可在线阅读,更多相关《第27章 通信Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
备注:
DisplayvalueofPLC_VARfromthePLC
Citect首先请求服务器从PLC读取变量PLC_VAR。
Citect等待PLC返回数据时,它会做其它事情。
数据返回后,启动执行Cicode。
可以在这个键盘命令完成之前启动另外的键盘命令。
如果数据显示在AN50,等待数据时,改换了页,这种副作用会产生问题。
PLC_VAR的值显示到新页上!
一般情况下,只有复杂的Cicode操作时才会有这样的问题。
如果某些原因Citect不能从设备读数据,会启动报表,Cicode等,然后产生硬件错误。
例如,
如果通信错误,在文本对象上显示#COM。
调用ErrCom()函数检查与设备相关的数据是否正常。
{CICODE}
IFErrCom()<
>
0Then
PrintLn("
ThisReportcontainsbaddata"
);
END
{END}
一些特殊情况下,启动一条Cicode之前,Citect不会读I/O设备。
包括callback事件,报警开/关动作和TaskNew()不使用模式4创建的任务。
在这些关键状态下,Citect不先读设备,直接启动Cicode。
Citect从变量的本地复制找回数据。
记住这个数据可能是陈旧的。
如果在这些情况下需要I/O设备数据,使用TaskNew(mode4)创建新任务。
Citect如何写数据到I/O设备
Citec使用异步方式向设备中写数据。
数据要用一点时间到达I/O设备。
在这期间,Citect继续运行做其它操作。
如果一些Cicode假定写入立即完成,可能会碰到一些副影响。
PLC_VAR=1234;
Variableis"
+PLC_VAR:
第一行写到PLC。
执行这行命令时,Citect向I/O服务器请求将值1234写入PLC变量PLC_VAR中。
在写入完成之前,Citect执行下条指令。
当写入PLC还没完成时,你可能认为下行代码将会显示PLC_VAR的最新值而不是1234。
代码显示正确值(1234),原因是Citect写到PLC时,首先更新变量的本地拷贝。
这种方法在一些情况下不能实现,原因是Citect会维护I/O设备变量的多个拷贝,只更新和当前代码相关的那个。
其它变量将包含设备变量的旧值直到更新它们为止。
每个显示页,Cicode文件,报警,趋势和报表有各自的数据区域。
如果从键盘命令页写到设备变量,和这页相关的数据变量拷贝被更新。
而其它页相关的拷贝和所有函数的拷贝直到下次读才会更新。
在函数中写到I/O设备变量。
所有函数共享相同的设备变量。
FUNCTION
TestFunc(INTnValue)
PLC_VAR=nValue;
这种操作的另一种副影响是你可能认为Citect已经成功的写入设备,但是,实际上由于硬件故障和组态错误,写入失败。
在一些关键情况下,要检查写入是否已经完成。
当写失败时,产生硬件错误。
写之后调用函数ReRead()验证关键写,然后验证变量值。
ReRead()函数读所有与当前代码相关的设备变量。
由此可检验新值。
ReRead
(1);
IFPLC_VAR<
1234THEN
Prompt("
Writefailed"
在这些情况下,数据从物理PLC中读出,不是从I/O服务器缓冲区中读出。
原因是I/O服务器会使所有和PLC写相关的缓冲区数据无效。
使用函数CodeSetMode(0,0)能停止Citect写到变量的本地拷贝。
缓冲区数据
在多显示客户的大型网络系统中,使用内存缓冲器能改善通信的回转时间。
所有来自I/O设备的数据临时存放在I/O服务器的内存中。
在缓冲时间内请求相同数据,I/O服务器返回内存中的值,而不是再次从设备中读数据。
许多客户需要相同数据时,数据缓冲产生更快的响应。
推荐使用300毫秒的缓冲时间。
应避免使用过长的缓冲时间,数据可能会变成过时的。
内存或磁盘I/O设备不要使用数据缓冲
数据缓冲是如何工作的
客户请求I/O服务器从PLC中读数据时,会产生不必要的读。
I/O服务器从PLC中读数据并把数据返回到第一个客户。
服务器把数据发送到第一个客户以后,第二个客户请求相同的数据。
I/O服务器必须从PLC中再次读数据。
如果服务器在PLC数据返回之前接收到第二个客户请求,服务器会把相同的数据发送到两个客户。
如果缓冲时间设置为300毫秒,I/O服务器发送数据到第一个客户之后直到300毫秒,第二个客户发出请求,这时第二个客户得到相同的数据。
注意这两个客户没有必要是网络中的两个不同客户,它们可能是同一个计算机上的报警客户和趋势客户。
因此,缓冲时间也影响单节点系统。
在缓冲区中的数据变成过时的,I/O服务器从设备中再请求数据。
只有和I/O设备的通信通道是闲置时,才会再请求数据。
I/O设备通信组态
建立Citect和I/O设备之间的通信系统。
一般需要下列组态步骤:
1.在I/O服务器表单中定义I/O服务器。
2.完成通信接口板表单。
它定义通信使用的板,如主板,网卡,串行通信板或者PLC通信卡。
3.完成通信口表单。
通常通信板有多个通信口,必须定义要使用的通信口。
4.完成I/O设备表单。
5.执行计算机设置向导完成组态。
如果没有数据读写,Citect不会与I/O设备通信。
必须定义一个变量标签并使用它。
协议和I/O设备
每个I/O设备/协议组合都需要设置通信板,通信口和I/O设备表单。
Citect在线帮助提供建立每个设备的信息。
自动组态
使用通信快速向导自动建立通信。
这说明没必要手工写入I/O服务器,通信板,通信口和I/O设备表单。
但是,向导不适合组态复杂的通信。
I/O服务器表单
I/O服务器属性
在表单中输入服务器名。
例如IOServer。
如果多个服务器用于冗余,必须为每个服务器添加一条数据库记录。
每个服务器有不同的服务器名。
使用“添加”按钮添加数据库记录,或者使用“替代”按钮修改记录。
添加I/O服务器
定义计算机为I/O服务器,在计算机上运行计算机设置向导。
向导允许选择工程中组态的所有服务器。
主板表单
主板名
Server1_Bord1.
如果有多个通信板,它们的名字应是不同的。
如果有多个服务器,只要求每个服务器内的通信板名是不同的。
主板类型
如果使用串行通信板或者计算机COM口,应输入COMx。
地址
通信板的起始地址,例如oxCC00。
如果使用计算机的COM口或串行通信板,在地址中必须输入0。
如果计算机上安装了多个通信板,每个通信板使用不同的内存地址。
I/O端口
通信板的I/O通信口地址。
如果使用计算机的COM口,在这里不要输入通信口地址。
应在通信口表单中定义通信口号。
中断号
通信板使用的中断号。
使用计算机串行口不需要中断。
选项
通信板支持的特殊选项。
查看硬件帮助主题。
备注
任意有用的说明
端口表单
端口属性
通信端口的属性取决于安装在服务器上的通信板的类型以及连接到通信口的I/O设备。
端口名
每个口有一个唯一的名字。
Board1_Port1
如果计算机上有多个通信板,使用通信口名标志通信板,例如:
Board2_Port1
端口号
每个口必须有一个唯一的号,不同通信板上的通信口可以赋予相同的号。
如果使用计算机COM口,应在这里输入串行口号。
把通信口和通信板连接。
例如,Server1_Board1
波特率
通信信道的波特率。
I/O设备硬件和串行通信板能支持其它的波特率。
如果选择其它的波特率,确保设备和串行口支持新的波特率。
数据位
数据传输中使用的数据位数目。
必须设置I/O设备有相同的位数。
停止位
停止位用于表示通信完成。
校验
用于数据传输
通信口支持的特殊选项。
请检查硬件设置帮助主题。
备注:
任意有意义的说明。
I/O设备表单
I/O设备属性
I/O设备属性取决于协议和I/O设备。
I/O设备名
PLC_1,OVENS_PLC
I/O设备号
I/O设备的唯一号码(0-1023)。
I/O设备地址
I/O设备的地址由I/O设备类型和协议决定。
协议
根据选择的通信方法,许多I/O设备支持多种协议。
I/O设备连接在通信板上的通信口。
任意有意义的说明
启动方式
I/O设备的冗余类型。
主设备
立即使用这个通信信道
辅助设备
只有主设备发生故障时,才使用这个通信信道
辅助设备写
主设备故障时使用辅助设备。
发送到主设备的写请求同样发送到这个通信信道。
使用辅助设备和辅助设备写方式,必须用相同的I/O设备名,数字号和地址组态主设备。
日志写
日志写到I/O设备有效/无效。
如果有效,所有写都记录在SYSLOG.DAT文件。
所有写记录到设备会使通信速度降低,原因是Citect系统会把大量数据写到磁盘。
日志读
从I/O设备读日志有效/无效,所有读都记录在SYSLOG.DAT文件中。
缓冲区
使数据缓冲有效或无效。
有效时,保留I/O设备内存作为缓冲区。
缓冲时间
缓冲时间的单位是毫秒。
推荐使用300毫秒。
性能考虑
许多因素影响监控系统的性能。
有很多明显因素如计算机,I/O设备,通信路径。
传送数据的速度越快,系统运行的越快。
(Citect总是维持I/O设备硬件支持的数据传输速度)。
但是,数据传输速度是硬件控制的。
可以直接影响系统性能的是如何安排I/O设备中的数据寄存器。
Citect如何和I/O设备通信的
系统组态时,必须定义变量。
实时系统运行时,Citect计算读寄存器的最有效方法。
基于I/O设备类型和寄存器地址,Citect使通信最优化。
Citect从I/O设备请求数据,不直接返回寄存器的值,产生开销。
I/O设备的速度决定了开销,一般是读单个寄存器所需时间的几倍。
因此,读单个寄存器是低效的,通常读连续的寄存器块。
因为开销只有一次。
所有寄存器共享这个开销,增加了数据传输的性能。
如果安排好Citect要读的寄存器,可以增加效率。
寄存器组
Citect连续读出和报警相关的所有寄存器。
所以应把所有指示报警条件的所有寄存器归为一组。
和状态显示相关的寄存器只有请求它们时才读出。
最好根据它们显示的页把它们归为组。
用于数据记录的寄存器以一定频率读出。
最好根据频率划分组。
下图显示Citect系统的理想寄存器组。
内存限制和PLC程序也会增强一些限制,把寄存器组合到块中会提高性能,
连接I/O设备
和I/O设备通信的最普通方法是通过简单的串行连接。
串行通信一般遵守三个普通的串行通信之一RS-232,
RS-422和RS-485。
使用Citect,可以有几个建立通信的选择,通过计算机的COM口,或者高速数据串行通信板,或者设备制造商提供的特殊通信板。
任何情况下,Citect和I/O设备通信的建立都比较简单。
可以按照I/O设备通信组态中说明的基本步骤。
实际上,多数设备通信标准是串行的。
为了阐述方便,这部分只考虑串行通信。
更复杂的串行通信,如Ethernet,在适当的地方有更详细的阐述。
使用COM口
最简单的Citect系统使用一台计算机连接到I/O设备。
把I/O设备直接通过标准RS-232通信电缆连接到计算机后面的串行口。
设置Citect来使用计算机COM口
使用计算机COM口,不需要安装其它软件。
1.通信板的组态类型是COMx,地址是0。
I/O通信口,中断,和选项可以是空的。
2.在通信口组态中,输入通信口的号。
通信口号一般是是1或2。
使用选项字段修改COMx驱动器的行为。
COMx驱动器的特殊选项
特殊选项以-字符开始,后面是选项字符。
只有很少用户会用到下面的选项。
DCD
-cATS0=1启动时,发送字符串'
ATS0=1<
CR>
'
使调制解调器检测运行口的波特率。
DSR
-d只有DSR是高时,Windows才传输数据。
-diDSR是低时,Windows会忽略收到的数据。
-dMS传输消息时,驱动程序等待2000ms的DSR上升时间,然后传输之前等待MS毫秒。
CTS
-h只有CTS是高时,Windows才会传输数据。
-hMS传输消息时,驱动程序等待2000ms的DSR上升时间,然后传输之前等待MS毫秒
RTS
-t只有传输时,驱动程序才增加RTS。
-ti输入缓冲区中有足够空间接收字符串时,增加RTS。
没有足够空间时,降低RTS。
-to只有传输字符串时,Windows才增加RTS。
-tPRE,POST传输消息时,驱动程序在PRE毫秒时间增加RTS,传输消息,等待POST毫秒之后降低RTS。
DTR
-r只有传输时,驱动程序才增加RTS。
使用串行通信板
计算机上的通信口不是为高速数据通信设计的,因此降低了系统性能。
为了获得的性能,应在计算机上安装高速串行通信板。
高速串行通信板有几个口(通常是4,6,8,16个)这样可以连接几个I/O设备。
可以使用相同的I/O设备或者不同制造商提供的I/O设备。
能连接任意多个设备,唯一的限制是计算机的大小。
高速串行通信板适用于RS-232,RS-422或者RS-485通信。
如果有几个来自同一厂商的设备,这些设备支持多点通信,可以把它们连接在RS-422或者RS-485高速串行通信板(RS-232不支持多点通信)
不是所有的高速串行口都支持RS-422。
可以使用RS-232/Rs-422或者RS-232/RS-485转换器来获得相同的安排。
警告:
使用转换器会带来握手/定时问题
如何设置Citect来使用串行通信板:
1.在计算机上安装通信板,然后按照指导在Windows下设置它。
必须使用通信板制造商提供的最新驱动程序。
2.通信板的组态类型是COMx,地址是0。
3.在通信口组态中,输入通信口的号。
通信口号一般是1或2。
使用选项字段修改COMx驱动器的行为
使用专利通信板
一些情况下,在计算机上可以安装专利接口通信板。
PLC制造商提供PLC接口通信板,把它连接到单个PLC或者PLC网络。
PLC制造商通常提供互联电缆。
当连接到系统上的PLC有多个时,高速串行通信板比PLC接口板提供更好的性能。
在一台计算机上,可以同时使用PLC接口通信板和高速串行口通信板。
如何设置Citect来使用专利通信板:
2.如果可以,在组态Citect之前在通信板上运行诊断程序。
检查通信板运行是否正常。
3.检查通信板上的通信口和中断是否正常。
4.组态通信板和通信口。
使用调制解调器
Citect启动时,初始化实时modem通信,关闭Citect时,终止modem通信。
使用这种方法通信,必须输入拨号字符串。
该字符串通知modem启动时拨号等。
使用如下格式定义初始化字符串:
-i<
STRING>
或者
-i@<
filename>
这里:
-I指示Citect向串行口发送字符串;
<
通信口初始化时发送到通信口的文本。
通信口初始化时发送到通信口的文件。
在初始化文本或文件中可以使用如下字符:
~1/2秒延迟
~{n}1/2秒延迟xn(不要忘记{})
\后接控制字符。
参考modem文档获得有关控制字符的更多信息。
-i+++~{6}\MATDT123456\M~{60}
1)初始化字符串引起拨号modem的注意,等待3秒,拨号123456,等待30秒,试图建立通信。
2)然后发送信号,等待响应。
如果收到响应,通信继续正常进行。
3)如果没有响应,拨号modem会等待协议的超时周期。
(使用Timeout参数设置)这个延迟之后,会再次试图建立通信。
4)协议的Retry参数决定试图通信的次数。
例如,如果它的值是3,modem在通信时会进行3次尝试。
如果3次都失败了,在第3次超时周期结束时,协议的监视时间开始(WatchTime参数)这个周期结束时,认为接收modem是离线的,整个过程重新进行。
下面描述了一系列步骤:
如果使用多个选项,选项之间要用逗号分开。
如果使用串行通信,必须使硬件握手有效。
使用冗余数据通道
对于多数PLC,能安装从I/O服务器到I/O设备的并行数据通道。
并行通道确保在一个通道故障时,系统不会出现中断。
启动实时运行系统时,Citect使用主数据通道和I/O设备通信。
如果通信失败时,Citect切换到辅助数据通道。
当主通道可以继续使用时,再次连接主数据通道。
同样可以使用网络数据通道冗余,
此例中,两个I/O服务器或它的通信电缆出现故障时,通信继续进行。
如果I/O设备支持对等通信,通过重用设备可以提供完全的冗余
I/O服务器能支持任意多个辅助数据通道。
要使用这种安排,I/O设备必须支持热备用冗余。
Citect发送写请求到主设备和辅助设备。
(选择启动方式的StandbyWrite选项),Citect不能同步I/O设备或者现场设备。
在I/O设备中再映射变量
一些PLC允许将I/O设备变量再影射到其它的寄存器地址。
使用再映射可实现:
使寄存器有效成组,因而增加性能。
允许Citect把一种变量类型解释成不同的变量类型。
例如,如果I/O设备运行超出数字地址,可以创建其它数字地址。
不支持磁盘和内存I/O设备再影射。
要在PLC中再映射变量,必须在PLC中设计逻辑和两个地址关联。
Citect从再映射地址而不是物理地址读写变量。
也可以把一种类型的变量(如整型)赋给另一种类型的变量(数字变量)
首先要在工程中创建变量。
变量创建完成后,可以设置再映射。
不是所有的PLC都支持再映射,参考I/O设备数据类型来确定PLC是否支持再映射。
再映射举例:
使用GE9030PLCCCM协议,当读一些数字位时,使用下面的再映射最优化通信。
这个例子假定PLC已经正确设置。
变量标签数据库
变量标签名
Motor_1_Running_Feedback
数据类型
Digital
I/O设备名
Area1
M1
Motor_1_Fault
M3
Motor_4_Running_Feedback
M4
.
M16
没有使用地址M2,这不会导致任何问题。
再映射数据库
定义如下:
Citect变量
Area1|M1|
长度
16
物理变量
Area1|R10|
再映射读
True
再映射写
False
再映射属性
再映射有如下属性:
在变量标签数据库中(使用标签表单)定义再映射变量,
Motor_1_Run
可以使用直接格式<
UnitName>
|<
Address>
|
IODev|X1|
再映射输入这里的地址,实时运行时,I/O服务器通过物理地址读写数据。
再映射变量的数量。
这个长度必须少于协议的最大请求长度。
协议概述显示了协议的最大请求长度。
在PLC中第一个物理变量,例如:
RemapIntV7
这个变量不需要在变量标签数据库中定义,可以使用<
|格式
IODev|V7|。
再映射读
确定是否实现再映射读:
1读正常变量(不是再映射变量)。
直接从I/O设备读Citect变量实际地址。
2如果I/O设备不支持再映射读,必须使用这种模式
3读再映射变量
确定是否实现再映射写:
0写正常变量(不是再映射变量)。
Citect变量的实际物理地址直接写入到I/O设备。
1写再映射变量
注意:
看I/O设备数据类型帮助,确定设备是否支持再映射读或写。
使用透明I/O设备
如果有几个相同的I/O设备(如可控的相同过程),使用透明设备可以简化组态。
透明I/O设备运行起来象实际I/O设备的指针,可以向实际I/O设备再指定读写。
透明设备只有在特殊条件下,而且只有正确理解透明设备如何工作的情况下,才能使用