wincc数据类型转换

wincc数据类型转换

wincc数据类型转换

在wincc里为什么float转换为simaticbcdtimer时要做线性标定,标定值是根据什么确定的?

最佳答案

根据时基来的,默认的是ms,所以需要进行标定,既如果输入1直接传给plc那么是1ms不是1s如果想输入1让plc认为是1s那么就需要把输入的数据乘以1000。或者看一下step7的timebase里面有详细的说。

WinCC中的画面模板

WinCC中的画面模板 介绍 画面模板是WinCC做画面组态的常用工具。现实工作中经常遇到多个设备需要显示相同参数(组)的情况。使用画面模板,可以避免反复组态相同画面布局的工作,减少项目后期某些细节部位的修改而带来的工作量;画面模板与结构变量的配合使用,可以在一个画面中根据条件显示具有相同类型参数的多个对象(如电机),极大地丰富了画面信息。 下面列出了四种不同的实现方式: ?用户自定义对象 ?画面原型 ?使用变量前缀的画面窗口 ?使用动态向导的画面窗口 1. 用户自定义对象 图1 所示为用户自定义对象的样例 用户自定义对象是由多个WinCC对象组合而成的,可以挑选其中的某些用户需要的属性作为用户自定义属性,因此生成的新对象可作为模板连接不同的变量,这种模板不适用于结构变量。观看制作演示请双击下面的压缩文件,运行其中的可执行文件。

2. 画面原型 图2 所示为画面原型的样例 在用户自定义对象的基础上,如果要支持结构变量的使用,可以用动态向导的方法来简化工作。如例子所示,首先做好自定义对象的模板,利用标准动态下的”Add dynamics to the prototype”在输入输出值属性里连接结构变量,将这个模板拷贝成多份,分别创建标准动态下的“Link a prototype to a structure or rename an existing link”,在创建的过程中,您可以选择和原型结构类型相同的其它前缀,用这个模板迅速生成连接不同结构变量的自定义对象。观看制作演示请双击下面的压缩文件,运行其中的可执行文件。 注:以上两种方式主要用于一些对象集合需要多次使用,连接多套参数的情况,但是不能使用脚本,动态对话框等,如果要实现复杂的功能,则需要画面窗口。画面窗口也分为两种实现方式,使用变量前缀型和动态向导型。 3. 使用变量前缀的画面窗口

step7编程知识

第一章符号表 在STEP7中,用户可以直接使用的变量包括PLC的输入/输出地址、M存储区地址、数据DB块名、功能块名和系统已经在组织块和逻辑块中定义的变量等。如果能在STEP7中将变量用具有实际意义的符号名字代替,那么用户程序的可读性就会更好。 1.全局符号和局部符号 STEP7中可以定义两类符合:全局符号和局部符号,与其它编程语言的定义一样,全局符号是在整个用户程序范围内有效;局部符号是仅仅在定义的块内部有效。

2.符号的定义 符号名的长度不能多于24个字符,而且定义时不区分大小写字符。数据块中的地址(DBD,DBW,DBB,DBX)不能在符号表中定义,而应在数据声明表中定义。组织块(OB)、某些系统功能块(SFB)以及系统功能(SFC)已被系统根据块的功能预先赋予了符号名。在符号表中可以定义全局符号,需要注意的是,并不需要下载符号表。编辑符号后并保持符号表,这时符号表就生效了。 3.符号表的导入导出功能 在符号表编辑器中,可以通过导入导出功能。用户可以导出当前的符号表到一个文本文件,这样就可以用文本编辑器对符号进行编辑,还可以将文本编辑器中的符号表导入到用户程序中。导出符号表时,用户可以选择文件格式为“*.DIF”,则可以在Excel中打开、编辑并存储DIF文件;也可以选择文件格式为“*.SDF”在Access中打开、编辑并存储SDF文件。

第二章组织块OB 组织块(Organization Block),STEP7提供了大量的组织块用于执行用户程序,OB是CPU操作系统与用户程序间的接口。OB被嵌在用户程序中,根据某个事件的发生,执行相应的中断,自动调用相应的OB。 1.OB1工作原理: CPU启动完毕后,操作系统就调用OB1,并且循环执行OB1的程序,读取当前输入模块的信号状态,刷新输入映像区并接收全局数据。每一次OB1程序执行完后,操作系统发送全局数据,传送输出映像区数据到输出模块。循环处理的主程序OB1的优先级最低,除OB90(背景组织块)外,其他所有的OB块均可以中断OB1的执行。 2.OB10~OB17: 时间日期中断组织块,这8个OB的默认优先级相同,都没有指定默认时间。但是,只有S7-400系统的高级CPU才可以使用全部8个OB,S7-300系列只能使用OB10。 3.OB20~0B23: 延时中断组织块,S7-300系列只能使用OB20。 4.OB30~OB38: 循环中断组织块,它们经过一段固定的时间间隔中断用户的程序。循环中断组织块每一次运行的时间一定要短于中断的间隔。如果一个循环中断组织块没有执行完,循环中断时间到,又要求循环中断组织块运行,则时间故障组织块OB80启动。反复的循环中断导致了故障程序的运行。 5.OB40~OB47 硬件中断组织块,用于快速响应信号模块SM、通信处理模块CP和功能模块FM的信号变化。 6.OB80: 时间错误处理组织块,OB执行出现故障,操作系统调用OB80。这样的故障包括:循环时间超出、执行OB时应答故障、向前移动时间以至于跃过了OB的启动时间。例如,当循环中断组织块仍在执行前一次调用时,该组织块的启动事件发生,操作系统调用OB80。如果OB80未编程,则CPU变为STOP方式。

使用WinCCFlexible2008SP4创建的项目(精)

常问问题 02/2015 使用WinCC Flexible 2008 SP4创建的项目如何移植到博途软件中? 移植, WinCC Flexible 2008 SP4, WinCC V13 C o p y r i g h t S i e m e n s A G C o p y r i g h t y e a r A l l r i g h t s r e s e r v e d 目录 1 基本介绍 (3 1.1 软件环境及安装要求 .......................................................................... 3 1.1.1 软件环境 ............................................................................................ 3 1.1.2 安装要求 ............................................................................................ 3 2 操作过程.. (4 2.1 设备类型在博途软件中包含 ................................................................ 4 2.1.1 移植过程 ............................................................................................ 4 2.2 设备类型在博途软件中不包含 ............................................................ 6 2.2.1 移植过程 .. (6 3 常见错误及解决方法 (8 3.1 项目版本不符 ..................................................................................... 8 3.2

常用数据类型转换使用详解

VC常用数据类型使用转换详解 CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘/0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。 而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。 1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以这里的LP和P是等价的. 2.C表示const 3.T是什么东西呢,我们知道TCHAR在采用Unicode方式编译时是wchar_t,在普通时编译成char. 为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。 LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。 然后为了实现两种编码的通用,提出了TCHAR的定义: 如果定义_UNICODE,声明如下: typedef wchar_t TCHAR; 如果没有定义_UNICODE,则声明如下: typedef char TCHAR; LPTSTR和LPCTSTR中的含义就是每个字符是这样的TCHAR。 CString类中的字符就是被声明为TCHAR类型的,它提供了一个封装好的类供用户方便地使用。

wincc硬拷贝使用

如何打印一个图像的部分区域(如一个曲线窗口)? 显示订货号 说明: 例如,在图像中有一个曲线窗口,用户想要得到这个窗口的硬拷贝。要得到硬拷贝,用户需要知道该窗口的坐标和尺寸。然后可以通过一个按钮激活该硬拷贝,如下: #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { WinExec("PrtScr.exe /C=\"20;10;800;400\"",SW_SHOWNORMAL); } 在指令“PositionX;PositionY;Width;Height”中的图片对应于窗口(图T1_01)左上角的坐标和尺寸。 图01 注意事项:

如果添加了参数“-nomcp”,正在打印的区域会被忽略。 关键字: 打印屏幕 在WinCC中打印趋势和报表的技巧 显示订货号 如何更改打印输出信息的列宽或用户布局中的变量日志表? o对于打印输出信息或变量日志表,可以在相关的布局中分别改变各列的宽度。

图T1_02 ?如何通过鼠标点击触发打印作业? o要实现此功能,用户可以使用WinCC标准功能中的C函数“RPTJobPrint”,该标准函数在“报表”下。 根据用户按钮选择生成C脚本,并从标准函数中调用“RPTJobPrint”函数。指 定用户想要打印作业的名称参数。 ?如果使用报表设计器Report Designer创建pdf文件? o使用报表设计器Report Designer创建的WinCC报表可以输出到打印机上,也可以将其输出为一个emf文件。为了输出一个pdf报表文件,用户必须先安 装一个PDF打印机,如Acrobat Writer。 ?为什么打印控制保留为空? o如果客户机上的打印控制为空,对于布局中连接的变量,则必须在这些变量前添加服务器前缀。 ?在SIMATIC WinCC Report Designer中,为什么不能正确显示打印作业预览? o在WinCC Report Designer中,必须安装打印机以便正确显示打印作业预览。 如果没有连接到计算机的打印机,请按以下步骤进行安装:

matlab数据类型及转换

Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。 1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127; 2、浮点:(single;double) 浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。 3、逻辑:(logical) Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0: A = rand(5); A(A>0.5)=0; 4、字符:(char) Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。 例如,命令name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数. 例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。 此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组: data= char(‘abc’,’abcd’) length(data(1,:)) ->? 4 cdata=cellstr(data) length(cdata{1}) ->?3 常用的字符操作函数 blanks(n) 返回n个空字符 deblank(s) 移除字符串尾部包含的空字符 (string) 将字符串作为命令执行 findstr(s1,s2) 搜索字符串 ischar(s) 判断是否字符串 isletter(s) 判断是否字母 lower(s) 转换小写 upper(s) 转换大写 strcmp(s1,s2) 比较字符串是否相同 strncmp(s1,s2,n) 比较字符串中的前n个字符是否相同 strrep(s1,s2,s3) 将s1中的字符s2替换为s3 5、日期和时间 Matlab提供三种日期格式:日期字符串如’1996-10-02’,日期序列数如729300(0000年1月1日为1)以及日期向量如1996 10 2 0 0 0,依次为年月日时分秒。 常用的日期操作函数

wincc 常用脚本

DeactivateRTProject ();//退出系统 #pragma code("useadmin.dll") #include"PWRT_api.h" #pragma code() char* CUser=NULL; CUser=GetTagChar("@CurrentUser"); if (strlen(CUser)==0) { PWRTSilentLogin("operator","123456");//用户“operator",密码"123456”登录 } OpenPicture("@MAIN.pdl"); } 在画面中结合不同按钮来组态下面 C 操作 Login Action for login (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogin('c'); Logout Action for logout (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogout(); PWRTLogin参数必须是CHAR 字符。它指定了显示对话框的监视器。如果只使用一个监视器,那么保留默认 参数“c”或者指定“1”。 注意 可以使用PASSLoginDialog函数来代替PWRTLogin 或者PWRTLogout函数。这个函数需要和函数PWRTLogin 相同的参数。PWRTLogin 和PASSLoginDialog函数可以调用登录界面,在上面可以登录或者注销。函数PWRTLogout被正确执行并且不调用登录界面。 正确执行后这两个函数都返回“1”。然而,登录不会等到显示对话框之后。 注意 如果使用多个显示器,为了能使登录对话框显示在合适的显示器上,需要WinCC Basic Process Control (OS项 目编辑器)。 不使用WinCC Basic Process Control 时,可以指定显示器编号,但登录对话框始终显示在第一个显示器上。

STEP7-功能块全中文说明

https://www.360docs.net/doc/a14478880.html,parator == IN1等于IN2 <> IN1不等于IN2 > IN1大于IN2 < IN1小于IN2 >= IN1大于或等于IN2 <= IN1小于或等于IN2 2.整数就是没有小数位都是零的数,即能被1整除的数(如-1,-2,0,1,……)CMP ?I(INT)整数比较 CMP ?D (DINT)比较双精度整数 CMP ?R (REAL)比较实数 3.转换指令概述 BCD_I BCD码转换为整数 I_BCD 整型转换为BCD码 BCD_DI BCD码转换为双精度整数 I_DINT 整型转换为长整型 DI_BCD 长整型转换为BCD码 DI_REAL 长整型转换为浮点型 4 计数器指令 S_CUD 双向计数器 S_CD 降值计数器 S_CU 升值计数器 ---( SC ) 设置计数器线圈 ?---( CU ) 升值计数器线圈 ?---( CD ) 降值计数器线圈 5.S_CUD 双向计数器

` 6. S_CU 升值计数器

7. S_CD 降值计数器 8. ---( SC ) 设置计数器值

9. ---( CU ) 升值计数器线圈 10. ---( CD ) 降值计数器线圈 11. ---(OPN)打开数据块:DB或DI

如果想将数据块中的数据读出(如DB和DI),需要通过(OPN)打开数据块后才可读出。 12. ---(JMP)--- 无条件跳转 13. ---(JMPN) 若“否”则跳转 14. LABEL标号

【整型数学运算指令】整型数学运算指令概述说明 使用整数运算,您可以对两个整数(16和32位)执行以下运算: ? ADD_I 加整数 ? SUB_I 减整型 ? MUL_I 乘整型 ? DIV_I 除整型 ? ADD_DI 加双精度整数 ? SUB_DI 减长整型 ? MUL_DI 乘长整型 ? DIV_DI 除长整型 ? MOD_DI 返回分数长整型 15. ADD_I 整数加

WINCC问答_1

1、WINCC在进入某一画面时出现 Unhandled exception was raised.Lookfile"c:\program Files\semens\wincc \Diagnose\PDLRTSEH.LOG"for details. 出现这种情况前只是删除了该画面的一个矩形图。 --------------------------------------------------------------简单的矩形图删除不会有这个问题的,打开记事本看看进一步的错误信息,有什么错误代码.才能进一步找到错误原因. 2、在停电之后5611网卡通讯不上,硬件图标上有黄色的叹号,点测试显示“错误0x0382:未找到内部驱动程序信息 (L2)”--------------------------------------------------------黄色的叹号或者感叹号说明没有给CP5611驱动,请手动查阅目录C:\WINDOWS\INF或者C:\WINNT\INF,驱动的信息(OEM**.INF)会在这些目录中,卸载CP5611重新安装即可. CP5611完全卸载方法步骤:1.设备管理器卸载. 2.打开注册表WINDOWS START MENU->RUN->"REGEDIT",删除下面路径中的所有的条 目:HKEY_LOCAL_MACHINE\SOFTWARE\SIEMENS\SINEC\LOGDEVIES. 3.重新启动计算机,再次安装5611驱动. WINCC组态服务器不可用,是否打开项目,将本地计算机作为服务器 2011-11-21 15:07:56| 分类:iphone | 标签:|字号大中小订阅 https://www.360docs.net/doc/a14478880.html,/leishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html 我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点 问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件. 正确的复制方法: 1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输 入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件. 2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件, 这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机. 只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外). 你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。就好了。

西门子STEP7编程中sfb4的用法

西门子STEP7编程—IEC定时器的使用 2010年03月03日星期三 08:59 西门子STEP7提供了10种定时器指令,用户可以根据不同的情况,很方便的选择一种适合自己的要求。可是STEP7的定时器的时间值用了一种西门子独有的S5TIME的数据类型来表示。某些时候使得定时器用起来不那么顺手,例如,在上位机监控软件画面上显示计时器的当前值或者需要在运行时在监控画面上修改预设值。对此STEP7提供了FC33(S5TI_TIM)和FC40(TIM_S5TI)来实现S5TIME数据类型与TIME数据类型之间的相互转换,但是换来换去的还是很麻烦。笔者认为在这种情况下不如直接使用STEP7的IEC 定时器。 STEP7的IEC定时器是个什么东西呢?其实就是STEP7提供的一系列系统功能块,能实现定时器同样的功能,和STEP7定时器指令不同的是它们是符合IEC1131-3标准的定时器。具体地说就是SFB3(TP)脉冲定时器、SFB4(TON)接通延迟定时器和SFB5(TOF)关闭延迟定时器。 功能块参数说明 STEP7的TIME数据类型在上位机上读写就很方便了,根据它的定义,实际上它就是一个有符号双整数,每一步长表示为1毫秒。 定时器的类型就三种。1、接通延时定时器TON 2、记忆接通延时定时器TONR 3、断开延时定时器 TOF 计时器总共有256个,其中1ms定时器4个(T0,T32,T64,T96),其中10ms 定时器16个(T1~T4,T33~T36,T65~T68,T97~T100),其余的都是100ms定时

器。 1ms定时器的刷新周期为1ms,与扫描周期和程序处理无关;10ms定时器在每个扫描周期开始时进行刷新;100ms定时器在定时器指令被执行时刷新。

PROTOOL的程序为什么无法移植到FLEXIBLE 2008 SP3 中

PROTOOL的程序为什么无法移植到WINCCFLEXIBLE 2008 ADVANCE SP3 中 winccflexible 打开页面中,无打开以前protool项目的选项 因为WINCCFLEXIBLE 2008 ADVANCE SP3为了支持WIN7(64位),已经不支持移植PROTOOL的程序。要移植PROTOOL项目,只能选择WINCCFLEXIBLE 2008 ADVANCE SP2及以下的版本,然后再用WINCCFLEXIBLE 2008 ADVANCE SP3打开已经移植完成的程序。 一般情况下,电脑上安装PROTOOL和wincc flexible软件,这样可以移植protool项目,因为protool软件和wincc flexible软件兼容同一操作系统,解决办法: 1、更换与protool兼容的wincc flexible软件,比如SP1,移植protool项目。 winccflexible2008 SP1是可以打开protool项目的,sp1以上就不再支持了。 最新版本的flexible 2008 SP4 是不是不能打开或移植protool项目了? 不可以,只能用2008 SP2 及以下的版本才能移植ProTool的项目. 应该可以打开,估计失真较多。 回答者:a4 - 初级工程师第9级 2013-08-20 13:29:05 可以打开并转换为flexible 的项目,转换完需要手动修改一部分内容 回答者:暗夜精灵 - 初级工程师第9级 2013-08-20 15:22:06 因为我装的也是SP2版本的,以前移植过一次protool项目。个人感觉就算可以移植了有些数据也无法打开,对需要这些地方做修改会造成麻烦,如果不修改那意义又不大,直接用prosave备份恢复好了。这个移植功能还真是既可爱也可恨呐,到后来索性重新做触摸屏程序的。 个人观点:像触摸屏程序重新做一下也要不了多少时间,因为毕竟它编程比较简单,也不像plc控制那么有逻辑控制。 回答者:WWCWWC - 资深顾问第13级 2013-08-21 08:50:48 只能是winccflexible sp1才能打开protool项目把~ 回答者:Borna - 学长第2级 2013-08-23 15:29:44 版本太高了,WINCC FLEXIBLE 2008 SP4是中国版,有些触摸屏不支持,所以移植PROTOOL项目不行。 回答者:开拓者001 - 高级工程师第11级

Step7-数据类型详细说明总结汇总

STEP7中的基本数据类型 ⑴位(BOOL) 位数据的数据类型为BOOL(布尔)型,在软件编程中BOOL变量的值1和0常用英语词TURE(真)和FALSE(假)来表示,对应二进制数中的“1”和“0”,常用于开关量的逻辑运算,存储空间为1位。 ⑵字节(BYTE) 字节数据长度为8位,数据格式为B#16#,B代表BYTE,表示数据长度为一个字节(8位),#16#表示十六进制,取值范围为B#16#0~B#16#FF。 ⑶字(WORD) 字数据长度为16位,这种数据可采用4种方法进行描述。 二进制:二进制的格式为2#,如2#101,取值范围为2#0~2#1111_1111_1111_1111,书写时每4位可用下划线隔开,也可直接表示为2#111111111111。 十六进制:十六进制的格式为W#16#,W代表WORD,表示数据长度为16位,#16#表示十六进制,数据取值范围为W#16#0~W#16#FFFF。 BCD码:BCD码的格式为C#,取值范围为C#0~C#999。BCD码是用4位二进制表示1位十进制数,4位二进制中的0000~1001组合分别表示十进制中的0~9,4位二进制中的1010~1111组合放弃不用。BCD码的最高4位用来表示符号,十六位BCD码的取值范围为-999~+999。在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。 无符号十进制数:无符号十进制数的格式为B#(×,×),取值范围为B#(0,0)~B#(255,255),无符号十进制数是用十进制的0~255对应二进制数中的0000_0000~ 1111_1111(8位),16位二进制数就需要两个0~255的数来表示,例如: B#(12,254)=2#0000_1100_1111_1110 12 254 上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。例如,如果想得到二进制数0000100110000111,可以使用2#0000_1001_1000_0111,也可以使用W#16#987,还可以使用C#987或者B#(9,135)。在STEP7中,比较常用的是十六进制,即W#16#这种格式。 ⑷双字(DOUBLE WORD) 数据长度为32位,双字的数据格式与字的数据格式相同,也有4种方式,分别为: 二进制:取值范围为2#0~2#1111_1111_1111_1111_1111_1111_1111_1111。 十六进制:取值范围为DW#16#0~DW#16#FFFF_FFFF。 BCD码:取值范围为C#0~C#9999999。 无符号十进制数:取值范围为B#(0,0,0,0)~B#(255,255,255,255)。 ⑸整数(INT) 整数数据类型长度为16位,数据格式为带符号十进制数,16位中最高为符号位。正整数是以原码格式进行存储的,如+786,对应的二进制码为2#0000_0011_0001_0010,而负整数则表示为正整数的二进制补码,即对应正整数的二进制码取反后加1,例如负整数-786,对应的二进制码为2#1111_1100_1110_1110。将负零(1000_0000_0000_0000)定义为-32768因此取值范围为-32768~32767。0表示正,1表示负。 ⑹双整数(DOUBLE INT) 双整数的数据类型长度为32位,数据格式为带符号十进制数,用L#表示双整数。双整数的二进制码与整数的换算方式一致,其取值范围为L#-2147483648~L#2147483647。 ⑺实数(REAL也叫浮点数Float) 实数的数据类型长度为32位,是以IEEE浮点数格式转换为二进制数存储的,其取值范围为±3.402823e+38~±1.1755494e-38。 实数用1.m×2E例如123.4可表示为1.234×102。 式中:指数E=e-127(1≤e≤254)为8位整数 符号位(S):S=0为正值S=1为负值 规定尾数的整数部分总是为1,只保留尾数的小数部分m(0~22位)

2.3 基本数据类型的转换

2.3基本数据类型的转换 本章目标 掌握基本数据类型间的自动转换 掌握任何基本数据类型的数据都会自动向String转换 掌握基本数据类型间的强制转换 Java的数据类型在定义时就已经确定了,因此不能随意转换成其他的数据类型,但Java允许用户有限度地做类型转换处理。数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种。 1 数据类型的自动转换 在计算机中完成一个计算时,要求参与计算的两个数值必须类型一致,如果不一致,计算机会自动将其中一个数值类型转换成另外一个数值的类型,然后完成计算。自动转换的原则如下: (1)转换前的数据类型与转换后的类型兼容。 (2)转换后的数据类型的表示范围比转换前的类型大。 例如,将short类型的变量a转换为int类型,由于short与int皆为整数类型,符合上述条件(1);而int的表示范围比short大,符合条件(2)。因此Java 会自动将原为short类型的变量a转换为int类型。 要注意的是,类型的转换只限该行语句,并不会影响原先所定义的变量的类型,而且通过自动类型的转换可以保证数据的精确度,它不会因为转换而损失数据内容。这种类型的转换方式也称为扩大转换。 范例:数据类型的转换 程序运行结果: x / y = 1.3519603 10 / 3.5 = 2.857142857142857 10 / 3 = 3 从程序的输出结果可以发现,int类型与float类型进行计算之后,输出的结

果会变成float类型,一个整型常量和一个浮点型常量进行计算之后,结果也会变为一个浮点数据,而如果两个int类型的常量进行计算,最终结果还是int类型,而其小数部分将会被忽略。 也就是说,假设有一个整数和双精度浮点数据做运算时,Java会所整数转换成双精度浮点数后再做运算,运算结果也会变成双精度浮点数。 提示:任何类型的数据都向String转型。 有一种表示字符串的数据类型String,从其定义上可以发现单词首字母大写了,所以此为一个类,属于引用数据类型,但是此类属于系统类,而且使用上有些注意事项,对于此种类型后面会有介绍,在此处所需要知道的只有以下两点: (1)String可以像普通变量那样直接通过赋值的方式进行声明。字符串是使用“””括起来的。两个字符串之间可以使用“+”进行连接。 (2)任何数据类型碰到String类型的变量或常量之后都向String类型转换。 范例:定义字符串变量 程序运行结果: str = lixinghua30 从运行结果来看,可以发现整型数据30自动转换成了字符的“30”,与字符串“lixinghua”进行了连接操作,变成了一个新的字符串“lixinghua30”。 范例:字符串常量操作的问题

STEP7中的基本数据类型-重要

STEP7中的基本数据类型 ⑴位(BOOL ) 位数据的数据类型为BOOL (布尔)型,在软件编程中BOOL变量的值1和0常用英语词TURE (真)和FALSE (假)来表示,对应二进制数中的“ 1和“0,常用于开关量的逻辑运算,存储空间为1位。 ⑵字节(BYTE) 字节数据长度为8位,数据格式为B#16#,B代表BYTE,表示数据长度为一个字节(8位),# 16#表示十六进制,取值范围为B#16#0?B#16#FF。 ⑶字(WORD ) 字数据长度为16位,这种数据可采用4种方法进行描述。 二进制:二进制的格式为 2 #,如2 # 101,取值范围为2# 0?2# 1111_1111_1111_1111, 书写时每4位可用下划线隔开,也可直接表示为2# 111111111111 十六进制:十六进制的格式为W # 16#, W代表WORD,表示数据长度为16位,# 16#表示十六进制,数据取值范围为W # 16# 0?W # 16 # FFFF。 BCD码:BCD码的格式为C#,取值范围为C# 0?C# 999。BCD码是用4位二进制表示1位十进制数,4位二进制中的0000?1001组合分别表示十进制中的0?9, 4位二进制中的1010?1111组合放弃不用。BCD码的最高4位用来表示符号,十六位BCD码的取值范围为—999? +999。在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。 无符号十进制数:无符号十进制数的格式为 B #( X, X),取值范围为B #( 0, 0)? B #( 255, 255),无符号十进制数是用十进制的0?255对应二进制数中的0000_0000? 1111_1111 ( 8位),16位二进制数就需要两个0?255的数来表示,例如: B# (12, 254)= 2# 0000_1100_1111_1110 _12 ― 254 上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。例 如,如果想得到二进制数0000100110000111,可以使用2# 0000_1001_1000_0111 ,也可以 使用W # 16# 987,还可以使用C# 987或者B #( 9, 135)。在STEP7中,比较常用的是十六进制,即W # 16#这种格式。 ⑷双字(DOUBLE WORD ) 数据长度为32位,双字的数据格式与字的数据格式相同,也有4种方式,分别为: 二进制:取值范围为 2 # 0?2# 1111_1111_1111_1111_1111_1111_1111_1111 十六进制:取值范围为DW # 16# 0?DW # 16 # FFFF_FFFF。 BCD码:取值范围为C# 0?C# 9999999。 无符号十进制数:取值范围为 B #( 0,0,0,0)?B #( 255,255,255,255 )。 ⑸整数(INT ) 整数数据类型长度为16位,数据格式为带符号十进制数,16位中最高为符号位。正整 数是以原码格式进行存储的,如+ 786,对应的二进制码为2# 0000_0011_0001_0010 ,而负 整数则表示为正整数的二进制补码,即对应正整数的二进制码取反后加1,例如负整数-786, 对应的二进制码为2# 1111_1100_1110_1110。将负零(1000_0000_0000_0000 )定义为-32768 因此取值范围为-32768?32767。0表示正,1表示负。 ⑹双整数(DOUBLE INT ) 双整数的数据类型长度为32位,数据格式为带符号十进制数,用L #表示双整数。双 整数的二进制码与整数的换算方式一致,其取值范围为L#-2147483648?L # 2147483647。 ⑺实数(REAL也叫浮点数Float)

java的基本数据类型有八种

java的基本数据类型有八种 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! java的基本数据类型有八种四类八种基本数据类型1. 整型byte(1字节)short (2个字节)int(4个字节)long (8个字节)2.浮点型float(4个字节)double(8个字节)3.逻辑性boolean(八分之一个字节)4.字符型char(2个字节,一个字符能存储下一个中文汉字)基本数据类型与包装类对应关系和默认值short Short (short)0int Integer 0long Long 0Lchar Char '\u0000'(什么都没有)float Floa t0.0fdouble Double 0.0dboolean Boolean false 若某个类的某个成员是基本数据类型,即使没有初始化,java也会确保它获得一个默认值,如上所示。(这种初始化方法只是用于成员变量,不适用于局部变量)。jdk1.5支持自动拆装箱。可以将基本数据类型转换成它的包装类装箱Integer a = new Integer ();a = 100;拆箱int b = new Intger(100);一个字节等于8位,一个字节等于256个数,-128到127一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节一个汉字两个字符,占用两个字节基本数据类型自动转换byte->short , char->int->longfloat->doubleint ->floatlong->double小可转大,大转小会失去精度。字符串与基本类型或其他类型间的转换⑴其它

在WINCC中使用WinSock控件进行TCP_IP通讯的例程

在WINCC中使用WinSock控件进行TCP/IP通讯的例程 目录 一、WinSock控件介绍(以VB语言表述) (1) 1、WinSock控件的主要属性 (1) 2、WinSock控件的主要方法 (2) 3、WinSock控件的主要事件 (3) 二、WinSock控件在WINCC中的使用 (3) 1、WinSock控件注册 (3) 2、在WinCC中添加WinSock控件 (4) 三、服务器端程序介绍 (4) 四、WinCC画面模板与结构变量的配合使用 (6) 1、结构变量定义 (6) 2、画面模板组态 (7) 3、调用画面模板及修改变量前缀 (7) 4、将画面模板中的对象连接到变量 (8) 五、建立TCP/IP连接 (8) 六、接收数据包的处理 (10) 附:在VBS中进行数据处理的局限性及变通解决方法 (12)

摘要: 关键词:VB、VBS、WINCC、WINSOCK、DLL、UNICODE、ANSI、ASCII、画面模板、结构变量、数据转换。 该文档的软件环境: Microsoft Windows XP Professional 版本2002SP3 SIMA TIC WinCC V6.2 SP2 ASIA …SIMA TIC STEP7 V5.4+SP5+HF3 Chinese TCP&UDP测试工具V1.02 目的: 使用WINCC用户程序作为客户端程序,与服务器通讯,通讯协议为标准TCP/IP协议,取得服务器发送过来的数据包,按数据包格式文本规定,解析数据包数据,并将相关数据显示在用户程序画面中。 一、WinSock控件介绍(以VB语言表述) 1、WinSock控件的主要属性 1) Protocol属性 通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。可选的协议是TCP和UDP对应的VB的常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是TCP。 注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。 2) SocketHandle属性 SocketHandle返回当前socket连接的句柄,这是只读属性。 3) RemoteHostIP属性 RemoteHostIP属性返回远程计算机的IP地址。在客户端,当使用了控件的Connect 方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest 事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。 4) ByteReceived属性

数据类型转换

数据类型转换 一、隐式类型转换 1)简单数据类型 (1)算术运算 转换为最宽的数据类型 eg: [cpp] view plain copy #include using std::cout; using std::endl; int main(int argc, char* argv[]) { int ival = 3; double dval = 3.14159; cout << ival + dval << endl;//ival被提升为double类型 return 0; } 其运行结果: 6.14159 int main(int argc, char* argv[]) { 010D17D0 push ebp 010D17D1 mov ebp,esp 010D17D3 sub esp,0DCh 010D17D9 push ebx 010D17DA push esi 010D17DB push edi 010D17DC lea edi,[ebp-0DCh] 010D17E2 mov ecx,37h 010D17E7 mov eax,0CCCCCCCCh 010D17EC rep stos dword ptr es:[edi] int ival = 3; 010D17EE mov dword ptr [ival],3 double dval = 3.14159; 010D17F5 movsd xmm0,mmword ptr [__real@400921f9f01b866e (010D6B30h)]

010D17FD movsd mmword ptr [dval],xmm0 cout << ival + dval << endl;//ival被提升为double类型 010D1802 mov esi,esp 010D1804 push offset std::endl > (010D1064h) 010D1809 cvtsi2sd xmm0,dword ptr [ival] 010D180E addsd xmm0,mmword ptr [dval] 010D1813 mov edi,esp 010D1815 sub esp,8 010D1818 movsd mmword ptr [esp],xmm0 010D181D mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (010D90A8h)] 010D1823 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A0h)] 010D1829 cmp edi,esp 010D182B call __RTC_CheckEsp (010D111Dh) 010D1830 mov ecx,eax 010D1832 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A4h)] 010D1838 cmp esi,esp 010D183A call __RTC_CheckEsp (010D111Dh) return 0; 010D183F xor eax,eax } 010D1841 pop edi } 010D1842 pop esi 010D1843 pop ebx 010D1844 add esp,0DCh 010D184A cmp ebp,esp 010D184C call __RTC_CheckEsp (010D111Dh) 010D1851 mov esp,ebp 010D1853 pop ebp 010D1854 ret (2)赋值 转换为被赋值对象的类型,但不会改变赋值对象的数据类型。 eg: [cpp] view plain copy #include

相关文档
最新文档