LANGUAGE
日本語 English

関数名

WriteArray

定 義

int WriteArray ( short ProcNo, char pArrayName[], short idx11, short idx12, short NumberOfData, variant pValue[], short idx21, short idx22 );

戻り値

0が返却されます。

引 数

ProcNo:アクセス先のプロセス番号を1~100の範囲で指定します。
pArrayName:指定プロセス上のグローバル配列変数名を指定します。NULL終端の文字列で指定しますので変数名をダブルクォーテーションで括るか、または文字配列変数を使用してください。構造体のメンバも指定可能です。なおMOS言語仕様により、扱うことができるのは1次元配列または2次元配列のみです。
idx11:pArrayNameで指定した1次元配列または2次元配列において、更新対象となる1次元目の配列の先頭要素番号を指定します。0を指定すれば[0]以降の要素が、1を指定すれば[1]以降の要素が更新対象になります。
idx12:pArrayNameで指定した1次元配列または2次元配列において、更新対象となる2次元目の配列の先頭要素番号を指定します。0を指定すれば[0]以降の要素が、1を指定すれば[1]以降の要素が更新対象になります。pArrayNameが1次元配列の場合は0を指定してください。
NumberOfData:pArrayNameで指定した1次元配列または2次元配列において、idx11とidx12で指定した要素番号を先頭として、更新したい配列の要素数を指定します。
pValue:更新値を格納してある配列変数名を指定します。pArrayNameで指定した配列変数のデータ型と一致させる必要があります。
idx21:pValueで指定した1次元配列または2次元配列において、更新値を格納してある1次元目の配列の先頭要素番号を指定します。
idx22:pValueで指定した1次元配列または2次元配列において、更新値を格納してある2次元目の配列の先頭要素番号を指定します。pValueが1次元配列の場合は0を指定してください。

概 要

指定のプロセスの、指定のグローバル配列変数の値を、指定の配列変数の値で更新します。

詳 細

更新できるのは指定のプロセス上のグローバル配列変数の値に限られます。ローカル配列変数は更新できません。
指定のプロセスがシステム上にアサインされていない場合や、指定のプロセス中に指定したグローバル変数が存在しない場合はランタイムエラーとなります。
本関数の引数pArrayNameとpValueのデータ型は必ず同一のデータ型としてください。異なるデータ型とした場合、正しい結果が得られません。(正しい結果が得られなくてもエラーにはならない。)

備考

前処理の候補

後処理の候補

他処理の候補

対応HW

〇PCベースコントローラ
〇InterMotion

使用例


int	g_Ary[10];
char	g_Str[10];		//文字配列
double	g_Pos[MaxRobAxes];	//ポジション配列
struct	tagPosAttrib {
	int speed;
	double pos0[MaxRobAxes];
};
tagPosAttrib g_PosAtr;
・・・・
//プロセス5上のg_AryP5変数のデータ型はint型
//プロセス5上のg_StrP5変数のデータ型はchar型
//プロセス2上のg_PosP2変数のデータ型はdouble型
//プロセス4上のg_PosAtrP4変数のデータ型はtagPosAttrib構造体と同一型
void main() {
	int i;
	char arrayName[10];
	・・・・
	//プロセス5のg_AryP5[0]~[9](10個の要素)にg_Ary[0]~[9]の値をライト
	strcpy(arrayName, "g_AryP5");
	WriteArray(5, arrayName, 0, 0, 10, g_Ary, 0, 0);
	//プロセス5のg_StrP5[0]~[9](10個の要素)にg_Str[0]~[9]の値をライト
	strcpy(g_str, "motion");
	WriteArray(5, "g_StrP5", 0, 0, 10, g_str, 0, 0);
	//プロセス2のg_PosP2[0]~[MaxRobAxes-1]にg_Pos[0]~の値をライト
	WriteArray(2, "g_PosP2", 0, 0, MaxRobAxes, g_Pos, 0, 0);
	//プロセス4のg_PosAtrP4変数のメンバpos0[0]~にg_PosAtrのメンバpos0[0]~の値をライト
	WriteArray(4, "g_PosAtrP4.pos0", 0, 0, MaxRobAxes, g_PosAtr.pos0, 0, 0);
	//データ型が異なるため正しい結果が得られない
	WriteArray(5, "g_AryP5"/*int型*/, 0, 0, 10, g_Str/*Char型*/, 0, 0)
	・・・・
}