发表于:2004-06-22 09:27:00
50楼
S系列I/O前端与可编程控制器的连接
一、概述
PLC(可编程控制器)应用广泛,其CPU功能较强,可靠性高,但在输入输出I/O方面,PLC存在价格过高,扩展模块不隔离,输入信号还要进行编程运算来完成采集,品牌繁多,互不兼容,用户使用起来不方便等缺点。我公司研制生产的S系列I/O前端具有模入(AI)、模出(AO)、开入(DI)、开出(DO)等功能;规格多样;工程量值输出;RS485通讯接口;灵活的通讯协议;扩展简捷;价格低廉。但在复杂控制等应用场合较PLC就有所欠缺,而PLC的优势恰恰在此。S系列I/O前端可以方便地与各种PLC构成秒级的多点数据采集和控制系统,并可更快捷地融入已有的采集控制系统当中,大大降低系统工程费用。二者结合可以弥补各自的缺陷,使系统达到良好的性价比。
下面以西门子S7-200(CPU226)和S系列I/O前端连接所构成的采集控制系统为例,展示这种方案的优势所在:
1. S系列I/O前端与PLC的接口程序软件由我公司编写并无偿提供给用户,用户只要将该段程序嵌入自己的程序中即可。用户在PLC编程中或在上位机读写S系列I/O前端的输入输出数据时,只和PLC中的I/O数据映射区(位于V区内)打交道,大大减少了用户工作量和编程复杂程度。
2. 采用PLC的自由通讯口与S系列I/O前端连接(RS485总线),方便地扩展至少32个模块。
3. 扩展系统AI/AO点最多达512点,DI/DO点最多达1024点,极大的拓展了PLC的I/O点数。
4. 现场独立安装,扩展灵活,多样,调试方便。
5. 模拟量为直接工程量值,无需编程运算完成采集及输出。
6. 具有通道与通道之间隔离,现场与计算机隔离特性。
7. 利用PLC的CPU丰富资源,使整套系统具有可编程及PID等控制功能,并可脱离上位机独立运行。
8. 利用PLC的通讯扩展模块,使系统简捷地接入以太网络及PROFIBUS-DP总线网络。
9. 特别适合于各种场合的秒级采集控制应用。
10.特别适合于西门子体系(WINCC、S7系列PLC)的工控工程中,扩展大量I/O点及降低系统造价。
二、连接要点及注意事项
● S7-200(CPU226)具有两个RS485通讯口,通讯口1(PORT0)与上位机相连;通讯口2(PORT1)以自由口方式与S系列I/O前端的RS485通讯线相连。
● 通讯口2(PORT1)通讯速率为38400 bps,8位数据位,1位停止位,无奇偶校验。
● 通讯方式为主从式,PLC为主,S系列I/O前端为从。
● PLC与S系列I/O前端的通讯电缆连接对应表
PLC的9针插头------------S系列I/O前端的接线端子
3 ------------ 37 (RS485 A )
5 ------------ 35 (RS485 地)
8 ------------ 36 (RS485 B )
● 用户在使用之前应将S系列I/O前端的站址设置好,并将通讯速率设置为38400 bps,通信协议为S_PLC(S系列I/O前端的其它参数,用户根据现场实际工况自行设置)。
● 如果有多个(N个)S系列I/O前端,站址应从01开始,依次至N为止,连续不得跳跃。
● 通讯协议(参见后面说明)的具体细节用户可忽略。S系列I/O前端与PLC的接口程序名为S_PLC 。
● PLC将对各S系列I/O前端不停进行循环采集及控制输出,1秒之内即可将32个S系列I/O前端采集或输出控制完毕。
● 采集及输出控制单元皆存放于固定V变量区,由用户读取或写入(模拟信号读取或写入格式为INT)。占用V区空间从V3900起始,占用1124字节,即到V5024结束 ,其中V3900~3933为连接S系列I/O前端定义前端个数及型号定义区;V4000~V5024为S系列I/O前端输入输出数据映射区,每个I/O前端分配32个字节,连接32个前端时共计为1024 字节(参见I/O数据映射区说明)。
三、连接程序说明
S系列I/O前端与 S7-200(CPU226)的连接程序(程序名称为S_PLC)包含一个主程序,8个子程序和3个中断服务程序。3个中断服务程序分别是端口1(PORT1)接受信息完成中断(事件号为24)、端口1(PORT1)发送字符中断(事件号为26)、定时中断0(事件号为10,定时中断时间间隔寄存器为SMB34)。
主程序(MAIN)进行通讯口2(PORT1)的初始化,并触发发送字符中断,启动S7-200(CPU226)对S系列I/O前端的通讯。当与一个S系列I/O前端通讯完成后,由接收中断程序自动启动与下一个站址S系列I/O前端的通讯,如此循环往复。定时中断0程序是对发送字符和接收信息完成中断超时(>50ms)的处理,该程序将停止对这两个中断的响应并启动下一个站址的S系列I/O前端的通讯工作。
用户只要将该段主程序(MAIN)嵌入自己的主程序中,将余下的子程序和中断服务程序置入用户系统程序中,然后修改USER_SET子程序,根据所需连I/O前端的个数及型号定义V3900~3933变量区即可。
主程序及其说明如下:
Network1
LD SM0.1 //首次扫描
DTCH 24 //关接收中断
DTCH 26 //关发送中断
DTCH 10 //关超时中断
MOVD +0,VD3996 //清除32个站的超时标志
MOVB 16#01,SMB130 //初始化PORT1口为自由口,通讯速率=38400 bps,
CALL USER_SET //调用用户初始系统子程序
CALL FIRST_SET //系统第一次运行初始化
ENI //启动中断
CALL FILL_COMMAND //发送取数据命令
CALL GET_FCS1 //求命令校验码
Network2
LD SM0.0
CALL GO_PATH //启动循环
四、连接I/O定义区说明
1.连接S系列I/O前端个数定义单元: VB3900 1 字节 (用户设置)
2.站址连接S系列I/O前端型号定义单元: VB3902~VB3933 32 字节 (用户设置)
每个站址所连接的S系列I/O前端的型号均由一个字节定义,VB3902为01号站址对应连接S系列I/O前端型号定义单元 ,VB3933为32号站址对应连接S系列I/O前端型号定义单元,用户通过修改USER_SET子程序完成对VB3900及 VB3902~VB3933等定义单元的更改。
各型S系列I/O前端对应代码如下:
◆ S1104=0 S1204=0
◆ S1108=1 S1208=1
◆ S1116=2 S1216=2
◆ S1316=6
◆ S1332=7
◆ S1416=8
◆ S1504=9
五、I/O数据映射区说明
I/O数据映射区: VB4000 1024 字节(每站占32字节) (用户读写)
以第1号站址为例,起始I/O数据映射区地址为VB4000;(第N号站址I/O数据映射区起始地址为VB4000+(N-1)×32)
◆ S1104,S1204
4个模拟量输出占前8个字节 (VW4000) 读 字
◆ S1108,S1208
8个模拟量输出占前16个字节 (VW4000) 读 字
◆ S1116,S1216
16个模拟量输出占前32个字节 (VW4000) 读 字
◆ S1316
A: 16个开关量输入占前 2 字节 (VB4000) 读
B: 8 个开关量输出占第 3 字节 (VB4002) 写
C: 8 个线圈状态占第 4 字节 (VB4003) 读
◆ S1332
32个开关量输入占前 4 字节 (VB4000) 读
◆ S1416
A: 16个开关量输出占前 2 字节 (VB4000) 写
B: 16个线圈状态占后 2 字节 (VB4002) 读
◆ S1504
A: 8 个开关量输出占第 1 字节 (VB4000) 写
B: 8 个线圈状态占第 2 字节 (VB4001) 读
C: 4个模拟量输出从第 3 字节开始,占8 字节 (VW4002) 写 字
D: 4个保持寄存器从第 11字节开始,占8 字节 (VW4010) 读 字
六、占用PLC软件和硬件的资源
1.占用软件资源
主程序两个节点,三个中断服务程序,8个子程序。三个中断为:
●端口1(PORT1)接受信息完成中断(事件号为24)。
●端口1(PORT1)发送字符中断(事件号为26)。
●定时中断0(事件号为10,定时中断时间间隔寄存器为SMB34)。
2.占用硬件资源
●占用程序空间:大约2500字节。
●占用V区:V3900~V5024。
●时间间隔寄存器为SMB34。
●端口1(PORT1)
七、S_PLC协议说明
该协议除了校验码,其他同MODBUS协议。MODBUS协议的校验码为两个字节CRC校验码,S_PLC协议变成1个字节FCS校验码加一个字节FF。FCS校验码为所命令或返回数据按字节异或后的结果。
八、USER_SET子程序举例说明
该例子为PLC连接5个S系列I/O前端时,修改USER_SET子程序例子,其中第一个前端(站址为01)型号为S1116,第二个前端(站址为02)型号为S1216,第三个前端(站址为03)型号为S1316,第四个前端(站址为04)型号为S1416,第五个前端(站址为05)型号为S1504。具体设置如下程序:
Network1
LD SM0.0
MOVB +5,VB3900 // 系统站址个数(S系列I/O前端个数)
MOVB +2,VB3902 // 01号站址对应S系列I/O前端型号为S1116
MOVB +2,VB3903 // 02号站址对应S系列I/O前端型号为S1216
MOVB +6,VB3904 // 03号站址对应S系列I/O前端型号为S1316
MOVB +8,VB3905 // 04号站址对应S系列I/O前端型号为S1416
MOVB +9,VB3906 // 05号站址对应S系列I/O前端型号为S1504
九、用户应用举例说明
该例子示范了用户如何将S_PLC程序和自己的软件结合在一起。
首先用户将S_PLC程序中的主程序并入自己的主程序中(Network1和Network2是S_PLC 程序,Network3以下为用户应用程序,见以下程序);将余下的子程序拷入用户自己的项目程序中即可。用户要根据自己实际工况来修改USER_SET子程序(参见上述章节)。
Network1
LD SM0.1 //首次扫描
DTCH 24 //关接收中断
DTCH 26 //关发送中断
DTCH 10 //关超时中断
MOVD +0,VD3996 //清除32个站的超时标志
MOVB 16#01,SMB130 //初始化PORT1口为自由口,通讯速率=38400 bps,
CALL USER_SET //调用用户初始系统子程序
CALL FIRST_SET //系统第一次运行初始化
ENI //启动中断
CALL FILL_COMMAND //发送取数据命令
CALL GET_FCS1 //求命令校验码
Network2
LD SM0.0
CALL GO_PATH //启动循环
Network3 //用户应用程序
LD SM0.0
MOVW VW4000,AC0
MOVW AC0,VW1000 //将S1116(一号站)的第一通道测量值放入VW1000
MOVW 16#2500,VW4128 //置入S1504(五号站)的第一模拟量输出值
十、连接通讯正常/超时错误标志
从VB3996起的4个字节为PLC与S系列I/O前端连接通讯正常/超时错误标志,共32位(32个站)。VB3996的最低位为01号站的连接通讯正常/超时错误标志,VB3999的最高位为32号站的连接通讯正常/超时错误标志。在通讯正常的情况下,连接通讯正常/超时错误标志全部为0;当某一个站址的S系列I/O前端通讯掉线(通讯超时错误)时,此站址对应的连接通讯正常/超时错误标志位为1。
用户在PLC的编程中或在上位机程序里,检查连接通讯正常/超时错误标志,即可判断PLC与S系列I/O前端的通讯正常与否。S11xx,S12xx系列的I/O前端当通讯超时或掉线时,其输出显示值为10004。
十一、S系列I/O前端型号一览
S1104 4路混接(标准电压、标准电流、热阻、热偶)输入,工程量值,8路报警继电器输出。
S1108 8路混接(标准电压、标准电流、热阻、热偶)输入,工程量值,4路报警继电器输出。
S1116 16路混接(标准电压、标准电流、热阻、热偶)输入,工程量值。
S1204 4路两线制(4~20mA)变送器专用输入,直接挂接变送器,工程量值,8路报警继电器输出。
S1208 8路两线制(4~20mA)变送器专用输入,直接挂接变送器,工程量值,8路报警继电器输出。
S1216 16路两线制(4~20mA)变送器专用输入,直接挂接变送器,工程量值。
S1316 16路开关信号输入,8路开关量信号输出。
S1332 32路开关信号输入。
S1416 16路开关信号输出。
S1504 4路隔离模拟信号输出(4~20mA),8路开关信号量输出。
北京西姆宏仪器仪表有限公司
2004年