⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 PRODAVE 实例 PRODAVE是西门子的通讯协议
💻 C
字号:
////////////////////////////////////////////////////////////////////////////////////////
/////////*                                                        *///////////////////// 
/////////*   本示例完成读取PLC S7-300中的DB数据块整型数据的功能  *///////////////////// 
/////////*                    (仅用一个CPU315-2DP和PC编程器连接) *///////////////////// 
////////////////////////////////////////////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>
////////////////////////////////////
///*声明调用与PRODAVE相关的库函数*//
////////////////////////////////////
#include "Komfort.h"
#include "W95_s7.h"

#pragma pack(1)
adr_table_type plc_adr_table[2] = { {2,0,2,0},    /*PLC站地址为2,槽号为2*/
                                    {0,0,2,0} };  /*PC编程器站地址为0,槽号为2*/
#pragma pack()

int main(int argc, char* argv[])
{
int error,res,i;
int dbno, amount,dwno;
unsigned short buffer[10],temp,temp1,temp2;       /*buffer中的数据为16位,与PLC中的整型数据位一致*/

dbno=1;                                           /*操作的DB块号为1*/
dwno=0;                                           /*从第0个字(DW0)开始读取*/
amount=2;                                         /*读取长度为2个数据字*/
////////////建立连接/////////////////////////
res = load_tool(1,"S7ONLINE",plc_adr_table);      /*激活连接数为1;
                                                    使用的设备协议为S7ONLINE;
                                                    指向各连接部分的地址链表*/
res = new_ss(1);

error = db_read(dbno,dwno,&amount,buffer);        /*将从DB块读取的数据字存放到缓冲数组buffer*/
///////////释放连接//////////////////////////
error = unload_tool();

/////////////////////////////////////////////////////////////////////////////////////////////
/////*  注意:buffer中存放的数据字是按照S7中的规范,与intel定义不同*/////////////////////////
/////*        需要转换高低字节显示!                                */////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
for( i=0;i<amount;i++) 
{	
	printf("%0x\n",buffer[i]);
	temp=buffer[i];
	temp1=temp<<8;
	temp2=temp>>8;
	temp=temp1+temp2;
	buffer[i]=temp;

printf("%0x\n",temp2);             /*显示低字节的高八位*/
printf("%0x\n",temp1);             /*显示高字节的低八位*/
printf("%0x\n",buffer[i]);         /*显示转换后的数据字*/
}
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -