常常遇到客户咨询自由口编程中字符中断的相关问题,比如“字符中断是什么?”,“字符中断怎么用?”,“用SMB接收多个字符,如何编程?”,“字符中断和RCV指令之间有什么关系?”。为了帮助您深入了解以上问题,我们就一起就这几个问题进行讨论,以达到抛砖引玉的效果!
常问问题一:字符中断是什么?
通过阅读系统手册,我们知道使用字符中断方式接收数据,接收每个字符时都会产生中断。在执行与接收字符事件相连的中断程序前,接收的字符存入SMB2寄存器中,校验状态存入SM3.0。 SMB2、SM3.0都是只读的。Port0/Port1共用SMB2/SMB3。Port0对应于中断事件8。Port1对应于中断事件25。
常问问题二:字符中断怎么用?
以端口0接收字符为例:
当CPU通过端口0接收到一个字符后,会将该字符存入接收字符缓冲区SMB2,然后进入相连接的中断程序中。
注意,对于这段程序,如果在中断程序中不作任何编程,那么当CPU接收n个字符时,中断程序将被执行n次,SMB2寄存器存储接收到的最后一个字符。如上位机通过串口调试软件给CPU发送3个字符16#AA、16#BB和16#C
那么与接收字符事件相连的中断程序将被执行3次,SMB2中只能保存最后一个接收到的字符16#CC
常问问题三:用SMB接收多个字符,如何编程?
由于SMB2只能存储一个字符(一个字节),如果要想接受多个字符,则应当在CPU接收下一个字符之前,在中断程序中通过指针编程将SMB2中存储的字符移出来,以便下一次接收字符。以一个例程说明:
VD0作为地址指针指向VB100,当端口0接收到第一个字符,将第一个字符存入SMB2,进入接收中断,将SMB2中的字符复制到指针VD0指向的地址字节VB100中,指针地址加1,VD0指向下一个字节VB101。当接收第二个字符,将字符存入SMB2,进入接收中断,将SMB2中的第二个字符复制到指针VD0指向的地址字节VB101中,指针地址加1,VD0指向下一个字节VB102。当接收第三个字符时以此类推。
另外,如果需要接收n个字符就结束接收,或者需要接收n个字符后循环接收,可以在中断程序中设置一个标志位,下面我们试举例说明:
例程1,接收到5个字符就结束接收的程序:
例程2,接收到5个字符后循环接收的程序:
最后要提醒您注意的是,程序中的的指针不要选择累加器AC,因为累加器不能在主程序和中断程序中传递参数。
常问问题四:字符中断和RCV指令之间有什么关系?
简单地说,当RCV指令使能时,接收字符不进入SMB缓冲区。
我们可以设计个实验分析一下:
在主程序中我们既定义PLC执行RCV接收指令的起始结束条件(起始条件为起始字符16#AA,结束条件为结束字符16#BB),又建立字符中断事件8,上升沿条件触发RCV指令。
上位机通过串口调试软件给CPU发送字符。
程序如下图:
状态表监控结果:
结论:
当RCV指令不触发的话,接收字符只进入SMB2缓冲区,不进入RCV指令的接收缓冲区。
当RCV指令触发后,满足CPU接收的起始和结束条件的字符存入RCV指令对应的TBL缓冲区。起始条件之前的字符既不存入RCV缓冲区,也不存入SMB2缓冲区。结束条件之后接收到的字符,存入SMB2缓冲区。
通过以上几个问题的分析,我们对于字符中断和SMB2的基本用法和特点做了介绍,相信在实际项目中会有更多灵活的应用等待我们去发掘。
工业现场经常碰到需要用PLC采集多路模拟量尤其是热电偶、热电阻信号的情况,下面提供一个用西门子S7-200挂接4个S1116(北京西姆宏产品)前端模块采集64模拟量的案例,与各位工控界的同仁共享。
S1116是一款待16路万能输入的模入前端,经软件设置后可直接输入标准电压、电流、热阻、热偶各种信号,包括0~5V、0~10V、0~50mV、0~10mA、4~20mA、Pt100、Cu50、K分度、S分度等均可自由混接输入,通道之间隔离,精度0.2级,RS485通信接口。
西门子S7-200挂接4个S1116采集64模拟量的步骤如下:
(一) 用户根据现场需求使用《S系列与S3000系列设置测试软件》在计算机上对其进行通道参数设置和精度校验。并将计4个S1116的通信站址分别设置为1、2、3、4,通信速率设置为38400bps,通信协议为S¬_PLC。
(二) 将S7-200(以226为例)的RS485通信接口和4个S1116的RS485通信接口用双绞线串接起来,S7-200通信口(九芯)的3脚接4个S1116的37端子(485+);S7-200通信口(九芯)的8脚接4个S1116的36端子(485-);S7-200通信口(九芯)的5脚接4个S1116的35端子(485地)。
(三) 在S7-200上灌装北京西姆宏提供的S系列I/O前端与 S7-200的连接程序(程序名为S_PLC),并按该程序使用说明修改相应的挂接前端个数定义单元 (VB3900)和挂接前端型号定义单元(VB3902、VB3903、VB3904、VB3905)。
(四) 运行该程序,马上就可以在相应的数据映射区(位于VB4000至VB4128共128字节)看到所需采集的64模拟量的工程量值(温度就是多少度,压力就是多少兆帕,整型数)。
就是这么简单。此种方法最多可采集512路模拟量或多或1024路开关量(32个站时),还可以用于控制多路模拟量或开关量输出,各位同仁如有问题请留下地址邮编电话,北京西姆宏仪器仪表有限公司有工程师为您提供服务。
Fanuc A06B-6058-H101
OMRON F210-C15-ETN
OMRON F500-C10-ETN
FANUC DS3815PMMA1G1B
OMRON FZ-355 FZ355
GE IC697CPU782-HB
GE A06B-6064-H327
GE FANUC IC697MEM735D
OMRON FZ 350 FZ350 FZ-350
FANUC DS200SHVMG1AFE
GE A06B-0730-B304
OMRON F500-S1 F500S1
GE A20B-0006-0880/19G
Ge FANUC A05B-2301-C301
GE DS3815PCLA
GE FANUC DS3815PCLA1D1D
GE IC754VSI12CTD-FG CLV410-2010S04
GE 193X529BBG01
GE A06B-6058-H226
GE FANUC DS3800HRRB1B1A
GE FANUC DS200FCRRG1AKD
GE DS200FCRLG1AFC
GE IC646TRT000D
GE TGT-000A-4-0-AA
GE Fanuc A06B-6089-H209
GE A20B-0003-0745/10P
CTC PARKER HPX15T-XTAA-2
GE FANUC SERVO MOTOR A06B-0780-B100
Fanuc A06B-6098-H111
GE IC600CB526R
GE Fanuc IC600PB553B CLV410-2010S04
GE Fanuc IC600YB814B IC600YB814
GE FANUC DS3815PAED1A1A
GE DS3800NMEA1J1C
OMRON NSJ10-TV00B-G5D
GE IC752WBB202D
GE A16B-2300-0085
OMRON R88M-W2K030T-S2
GE A16B-3200-0412/04C
GE A06B-6076-H001
GE Fanuc IC697CPU781-JE
GE Fanuc IC697CPU781G
GE IC697CPU781E
GE Fanuc IC752WTCSS2-AC
CTC P71-3I5-H1-2A3 CLV410-2010S04
GE A06B-0041-B605
GE 531X132APGACG1
GE Fanuc A16B-2201-0791/03B
GE DS3800NMEA1G1E
GE DS3800NMEA1HEF
FANUC A16B-0190-0061/26K
GE FANUC DS3800NMEC1H1H
GE DS3800HRMB1N1Lv
CTC PARKER P51-3C2-A4-2A3
GE A20B-0003-0755/10E
GE DS3800NSMA1B1B
GE DS3815PABA1E1A
GE DS3800NMEA1P1K
GE IC752DPA060-BB
CTC PC15-5T5-DG9-BD3
GE A06B-6050-H304
GE DS3800HSQD1J1G
GE DS3800HSQD1G1D
GE A06B-6058-H101
GE DS200LDCCH1ALA CLV410-2010S04
GE DS3800HSCD1J1C
GE A06B-0123-B588
AB 1336S-BRF100-AA-EN3
GE DS3800HSCD1J1G
GE Fanuc WHEDCO TGT 3X6L
GE A860-0056-T020
GE IC600LX680K厦门门兴锐达,省钱的好地方,省钱电话15359273796
GE Fanuc IC600PM546K
GE DS3800NHVK1A1A
GE DS3800NHVE1C1C
GE DS3800NVCD1B1B
GE DS3800NPSF1C1B
GE A06B-6058-H102 CLV410-2010S04
GE IC3600EPSA1A
GE A16B-2201-0800/03B
Ge A06B-6057-H007
GE DS3800NMEA1H1E
FANUC DS3800XPER1A1B
GE IC646CIM002H
GE Fanuc IC800SSI104RD2-DE
GE IC3600APABB1 CLV410-2010S04
GE DS3800NHVE1B1A
GE DS3800DMEC1D1D
GE DS3800NHVF1B1A
GE DS3800NMEA1P1J