| 作者 | 主题 |
|---|---|
|
电气人生 侠客 经验值:682 发帖数:285 精华帖:4 |
楼主
主题:教你使用s7-200PLC通讯控制
想来大家对PLC的编程应用应该比较顺手了,不管是开关量处理与控制、模拟量的采集与输出、PID过程控制、步进与伺服的高速处理等方面应该都可以应付,但是一到通讯处理可能都无从下手,甚至是没什么思路。从今天开始本人就200进行的一些通讯上的应用以案例的形式引导大家如何去做,准备分4个篇幅进行分析,希望各位高手进行指导。因为本人的时间关系,可能不太连续:具体打算是这样的:非编准协议通讯2篇,USS通讯1篇,modbus通讯1篇。今天先就非编准协议通讯方法进行介绍。
|
|
电气人生 侠客 经验值:682 发帖数:285 精华帖:4 |
6楼
主题:回复:教你使用s7-200PLC通讯控制
S7-200之自由协议通讯“读取”方法:本次非标准协议通讯采用与CH402WK02仪表的通讯,既然是通讯必须要知道仪表的通讯协议,经查有关资料该仪表协议如下:A 从仪表读数据:EOT 表号参数名 ENQ 。仪表返回 :STX 参数名 数据 ETX BCC。例如读M1参数(显示值)PLC应该发送指令如下:上位机发送:[EOT,0,1,M,1,ENQ](04H,30H,31H,4DH,31H,05H)。仪表返回:[STX,M,1,O,O,1,0,0,0,ETX,BCC](02H,4DH,31H, 30H, 30H,31H,30H,30H,30H,03H,60H)。参照ASCI码表。PLC的程序进行如下处理:1初始化串口及相应的参数‘定义中断(由于不能贴图只能以STL方法了):
Network 1 LD SM0.0 MOVB 16#09, SMB30 MOVB 16#9C, SMB87 MOVW +30, SMW92 MOVB 20, SMB94 ENI Network 2 LD SM0.0 ATCH INT0, 9 ATCH INT1, 23 2创建读的发送表格:发送表格从VB100开始即6-VB100发送字符数量;16#04-VB101; 16#30-VB102;16#31-VB103;16#4D -VB104;16#31 -VB105;16#05 -VB106; 3表格完成后开始发送并且在发送最后字符后开完成中断准备接受:Network 1 LD SM0.0 XMT VB100, 0 ATCH INT0, 9 4此时如果发送完成则执行下面中断程序: Network 1 LD SM0.0 DTCH 9 RCV VB156, 0 ATCH INT1, 23 中断号23只说明此时接受已经完成,然后在其中断程序中务必将其分离。首先分离这个中断为后续数据处理做准备,接收的字符放在以VB156开头的数据区内其中VB156是接受字符的数量;对照上面协议可以知道vb162-vb164四个字节放的是读取的数据字符。 5对数据字符进行处理:Network 1 LD SM0.0 ATH VB164, VB411, 2 ATH VB162, VB410, 2 MOVW VW410, VW510 则VW510就是读到 的数据。务必注意由于仪表是以10进制数转为ASCI字符后发送的,s7-200对此数据的还原时还原为了16进制数据(因为没有10进制的指令),所以该数据不是最终数据。需要以下处理 6对数据进行还原: Network 1 LD SM0.0 MOVW VW510, VW202 AENO DIV +16, VD200 AENO MOVW VW202, VW212 AENO DIV +16, VD210 AENO MOVW VW212, VW222 DIV +16, VD220 Network 2 LD SM0.0 MOVW VW222, VW300 AENO *I +1000, VW300 AENO MOVW VW220, VW302 AENO *I +100, VW302 AENO MOVW VW210, VW310 AENO *I +10, VW310 AENO MOVW VW300, VW340 AENO +I VW302, VW340 AENO MOVW VW340, VW342 AENO +I VW310, VW342 AENO MOVW VW342, VW390 +I VW200, VW390 则VW390内放的就是你读到的M1的实际数据。至此数据读完成由于时间关系对以后文章的推出是不定期的,本人会尽快完成,请你给予关注!。关于数据写操作请看下文S7-200之自由协议通讯“写”方法 |